Serveur. More...
#include "cogitant/cs/server.h"
Public Types | |
typedef std::vector< cogitant::Environment * >::size_type | iEnv |
Identificateur d'environnement géré par le serveur. More... | |
Public Member Functions | |
Server (OperationCSIO *opeio) | |
Constructeur par défaut. More... | |
virtual | ~Server () |
Destructeur. More... | |
virtual void | writeSetContent (cogitant::XmlDocument *doc, cogitant::XmlDocument::Element *nodeparent, unsigned int set, cogitant::iSet i, cogitant::iSet idest) |
Écrit les caractéristiques d'un élément d'un ensemble dans le document XML. More... | |
bool | isValidEnvironment (iEnv idenv, cogitant::XmlDocument *doc, cogitant::XmlDocument::Element *nodeparent) |
Vérification de la validité d'un identificateur d'environnement. More... | |
bool | isValidEnvironmentObject (iEnv idenv, cogitant::iSet idobject, cogitant::XmlDocument *doc, cogitant::XmlDocument::Element *nodeparent) |
Vérification de la validité d'un identificateur d'EnvironmentObject associé à un identificateur d'environnement. More... | |
bool | isValidEnvironmentObjectType (iEnv idenv, cogitant::iSet idobject, cogitant::EnvironmentObject::Type typeobject, cogitant::XmlDocument *doc, cogitant::XmlDocument::Element *nodeparent) |
Vérification de la présence d'un EnvironmentObject du type passé dans l'environnement choisi. More... | |
iSession | sessionNew () |
Crée une nouvelle session et retourne son numéro. More... | |
cogitant::PropertySet * | sessionAttributes (iSession i) |
Retourne les attributs d'une session. More... | |
cogitant::PropertySet const * | sessionAttributes (iSession i) const |
Retourne les attributs d'une session. More... | |
unsigned int | sessionState (iSession i) const |
État d'une session. More... | |
void | sessionClose (iSession i) |
Supprime une session. More... | |
bool | sessionIsValid (iSession i) const |
L'identificateur de session est-il valide. More... | |
virtual bool | runQuery (cogitant::XmlDocument const &query, cogitant::XmlDocument &answer, iSession id, std::list< std::string > &ls) |
Interprétation d'une requête XML. More... | |
virtual void | mainLoop () |
Boucle principale du serveur. More... | |
void | stopOnError (bool stop) |
Arrêt du serveur lors d'une lecture erronée. More... | |
Modifications | |
std::vector< cogitant::Environment * > & | environments () |
Accès direct aux environnements gérés. More... | |
void | detachEnvironment (iEnv i) |
Suppression de la gestion d'un environnement. More... | |
iEnv | addEnvironment (cogitant::Environment *e, std::string const &name="") |
Ajout d'un environnement au serveur. More... | |
void | clear () |
Suppression de la gestion de tous les environnements, et destruction de tous les environnements. More... | |
cogitant::Environment * | environments (iEnv i) |
Accès direct à un environnement par son identificateur. More... | |
void | addOperation (OpeServer *op) |
Ajout d'une opération au serveur. More... | |
void | addStdOperations () |
Ajout des opérations standard (fournies avec la bibliothèque) au serveur. More... | |
void | addMinOperations () |
Ajout des opérations minipales au serveur. More... | |
Accesseurs | |
std::vector< cogitant::Environment * > const & | environments () const |
Accès direct aux environnements gérés. More... | |
cogitant::Environment const * | environments (iEnv i) const |
Accès direct à un environnement par son identificateur. More... | |
iEnv | findEnvironment (std::string const &n) const |
Recherche d'un environnement par son nom. More... | |
Public Member Functions inherited from cogitantcs::Base | |
Base (OperationCSIO *opeio=NULL) | |
Constructeur par défaut. More... | |
virtual | ~Base () |
Destructeur. More... | |
virtual cogitant::XmlDocument::Element * | writeObject (cogitant::XmlDocument *doc, cogitant::XmlDocument::Element *nodeparent, std::string const &name, cogitant::CogitantObject const *obj) |
Écrit un objet dans le document XML. More... | |
virtual cogitant::XmlDocument::Element * | writeGraphObject (cogitant::XmlDocument *doc, cogitant::XmlDocument::Element *nodeparent, cogitant::Graph const *obj, cogitant::iSet idobj, bool writeedges, cogitant::Environment const *env) |
Écrit un objet composant un graphe dans le document XML. More... | |
virtual cogitant::XmlDocument::Element * | writeGraph (cogitant::XmlDocument *doc, cogitant::XmlDocument::Element *nodeparent, cogitant::Graph const *obj, cogitant::Environment const *env) |
Écrit un graphe dans le document XML. More... | |
virtual cogitant::XmlDocument::Element * | writeRule (cogitant::XmlDocument *doc, cogitant::XmlDocument::Element *nodeparent, cogitant::Rule const *obj, cogitant::Environment const *env) |
Écrit une règle dans le document XML. More... | |
virtual cogitant::XmlDocument::Element * | writeProjection (cogitant::XmlDocument *doc, cogitant::XmlDocument::Element *nodeparent, cogitant::Projection const *obj) |
Écrit une projection dans le document XML. More... | |
virtual void | writeProperties (cogitant::XmlDocument *doc, cogitant::XmlDocument::Element *nodeparent, cogitant::PropertySet const *pset, cogitant::iSet subid) |
Écrit les propriétés (d'un sous ensemble de propriétés) de l'objet dans le document XML. More... | |
virtual void | writeProperties (cogitant::XmlDocument *doc, cogitant::XmlDocument::Element *nodeparent, cogitant::CogitantObject const *obj) |
Écrit les propriétés de l'objet dans le document XML. More... | |
virtual void | writeAttributes (cogitant::XmlDocument *doc, cogitant::XmlDocument::Element *nodeparent, cogitant::CogitantObject const *obj) |
Ecrit les attributs spécifiques à l'objet dans le document XML. More... | |
virtual void | readAttributes (cogitant::XmlDocument const &doc, cogitant::XmlDocument::Element const *nodeparent, cogitant::CogitantObject *obj) |
Lecture des attributs dans le document XML et affectation à un objet. More... | |
virtual void | readProperties (cogitant::XmlDocument const &doc, cogitant::XmlDocument::Element const *nodeparent, cogitant::PropertySet &ps) |
Lecture des propriétés dans le document XML et affectation à un objet. More... | |
virtual cogitant::Graph * | readGraph (cogitant::XmlDocument const &doc, cogitant::XmlDocument::Element const *node, cogitant::Environment *env) |
Création du graphe reçu. More... | |
virtual cogitant::Rule * | readRule (cogitant::XmlDocument const &doc, cogitant::XmlDocument::Element const *node, cogitant::Environment *env) |
Création de la règle reçue. More... | |
virtual cogitant::Projection * | readProjection (cogitant::XmlDocument const &doc, cogitant::XmlDocument::Element const *node, cogitant::Environment *env, cogitant::Graph const *g, cogitant::Graph const *h) |
Création d'une projetion reçue. More... | |
Public Member Functions inherited from cogitant::CogitantObject | |
CogitantObject () | |
Constructeur. More... | |
CogitantObject (CogitantObject const &o) | |
Constructeur par recopie. More... | |
virtual | ~CogitantObject () |
Destructeur. More... | |
PropertySet * | properties () |
Accès à l'ensemble des propriétés. More... | |
virtual std::string | toString () const |
Transformation en chaîne de caractères. More... | |
std::string | className () const |
Nom de la classe. More... | |
PropertySet const * | properties () const |
Accès en lecture seule à l'ensemble des propriétés. More... | |
bool | hasProperties () const |
Existence de propriétés. More... | |
CogitantObject & | operator= (CogitantObject const &ob) |
Affectation. More... | |
Static Public Attributes | |
static const iEnv | IENV_NULL |
Identificateur incorrect d'environnement. More... | |
Protected Member Functions | |
virtual void | runQuery (cogitant::XmlDocument const *query, cogitant::XmlDocument::Element const *qn, cogitant::XmlDocument *answer, cogitant::XmlDocument::Element *anp, std::list< std::string > &ls) |
Interprètation d'une requête (simple) XML. More... | |
bool | requiresHeader () const |
Un header spécifique au serveur http doit-il être envoyé. More... | |
cogitant::XmlDocument::Element * | writeObjectExt (cogitant::XmlDocument *doc, cogitant::XmlDocument::Element *nodeparent, std::string const &name, cogitant::CogitantObject const *obj, cogitant::iSet setvalue, cogitant::iSet idvalue) |
Écriture d'un objet dans le document XML, avec ajout de propriétés "set" et "id". More... | |
Protected Member Functions inherited from cogitantcs::Base | |
void | useXmlHeader (bool uh) |
Utilisation de l'entête dans les documents XML échangés. More... | |
void | addXmlHeader (cogitant::XmlDocument *doc, std::string const &root) const |
Ajout de l'entête au document, si nécessaire. More... | |
void | addAttributeNode (cogitant::XmlDocument *doc, cogitant::XmlDocument::Element *nodeparent, std::string const &attname, std::string const &attvalue) |
Ajoute un noeud attribute. More... | |
Protected Member Functions inherited from cogitant::CogitantObject | |
virtual PropertySet * | allocProperties () const |
Fonction créant l'instance d'une sous classe de PropertySet pour la représentation des propriétés de l'objet. More... | |
Additional Inherited Members | |
Protected Attributes inherited from cogitantcs::Base | |
bool | m_headerxml |
Utilisation de documents XML comportant une entête. More... | |
OperationCSIO * | m_opeio |
Opération d'entrées sorties. More... | |
Serveur.
Un serveur contient des références vers des cogitant::Environment et offre à des clients reliés au serveur la possibilité d'accéder aux objets contenus dans ces environnements.
Les environnements gérés par un serveur sont identifiés de façon unique par un iSet (leur identificateur dans l'ensemble des environnements). Cet identificateur permet aussi d'identifier de façon unique les différents ensembles d'objets mis à disposition par le serveur. Ainsi, l'ensemble des types de concepts du support de l'environnement i est identifié par i * 10 + 1, l'ensemble des types de relations par i * 10 + 2, celui des types d'emboîtements par i * 10 + 4 et l'ensemble des marqueurs individuels par i * 10 + 4. Enfin, l'ensemble des objets gérés dans un environnement (graphes et règles) et repéré par i * 10 + 5. Ainsi une requête portant sur un élément d'un ensemble peut être transmise au serveur et interprétée par ce dernier à partir du seul identificateur d'ensemble. Les cogitant::PartialOrder du support sont accessibles par le même identificateur que l'ensemble de types auquels ils se rapportent.
Les environnement et opérations pris en compte dans un serveur ne doivent pas être détruits explicitement, car ils seront détruits à la fermeture du serveur.
typedef std::vector<cogitant::Environment *>::size_type cogitantcs::Server::iEnv |
Identificateur d'environnement géré par le serveur.
cogitantcs::Server::Server | ( | OperationCSIO * | opeio | ) |
Constructeur par défaut.
opeio | opérations d'entrées/sorties utilisées pour le serveur. |
|
virtual |
Destructeur.
iEnv cogitantcs::Server::addEnvironment | ( | cogitant::Environment * | e, |
std::string const & | name = "" |
||
) |
Ajout d'un environnement au serveur.
e | l'environnement. Une fois qu'un environnement est ajouté à un serveur, il est complètement géré par le serveur, et ne doit pas être détruit explicitement. Le destructeur de Server se chargera de détruire les environnements gérés. |
name | le nom de l'environnement (la propriété cogitant::Property::ENVIRONMENT_NAME de l'environnement est modifiée si une chaîne non nulle est passée). |
void cogitantcs::Server::addMinOperations | ( | ) |
Ajout des opérations minipales au serveur.
Ces opérations sont celles qui permettent seulement l'accès en consultation au contenu de l'environnement du serveur.
void cogitantcs::Server::addOperation | ( | OpeServer * | op | ) |
Ajout d'une opération au serveur.
op | opération ajoutée. |
void cogitantcs::Server::addStdOperations | ( | ) |
Ajout des opérations standard (fournies avec la bibliothèque) au serveur.
void cogitantcs::Server::clear | ( | ) |
Suppression de la gestion de tous les environnements, et destruction de tous les environnements.
void cogitantcs::Server::detachEnvironment | ( | iEnv | i | ) |
Suppression de la gestion d'un environnement.
i | identificateur de l'environnement. L'objet correspondant (cogitant::Environment) n'est pas détruit, il est simplement retiré de la liste des environnements gérés par le serveur. |
std::vector<cogitant::Environment*>& cogitantcs::Server::environments | ( | ) |
Accès direct aux environnements gérés.
NULL
). cogitant::Environment* cogitantcs::Server::environments | ( | iEnv | i | ) |
Accès direct à un environnement par son identificateur.
std::vector<cogitant::Environment*> const& cogitantcs::Server::environments | ( | ) | const |
Accès direct aux environnements gérés.
NULL
). cogitant::Environment const* cogitantcs::Server::environments | ( | iEnv | i | ) | const |
Accès direct à un environnement par son identificateur.
iEnv cogitantcs::Server::findEnvironment | ( | std::string const & | n | ) | const |
Recherche d'un environnement par son nom.
n | nom de l'environnement cherché. |
bool cogitantcs::Server::isValidEnvironment | ( | iEnv | idenv, |
cogitant::XmlDocument * | doc, | ||
cogitant::XmlDocument::Element * | nodeparent | ||
) |
Vérification de la validité d'un identificateur d'environnement.
idenv | identificateur d'environnement à vérifier. |
doc | document XML à modifier dans le cas où l'identificateur d'environnement n'est pas valide (ou NULL si aucun document XML ne doit être modifié). |
nodeparent | noeud parent dans doc destiné à recevoir comme fils le noeud d'erreur dans le cas où idenv n'est pas valide. |
true
si idenv est valide et false
sinon. bool cogitantcs::Server::isValidEnvironmentObject | ( | iEnv | idenv, |
cogitant::iSet | idobject, | ||
cogitant::XmlDocument * | doc, | ||
cogitant::XmlDocument::Element * | nodeparent | ||
) |
Vérification de la validité d'un identificateur d'EnvironmentObject associé à un identificateur d'environnement.
idenv | identificateur d'environnement à vérifier. |
idobject | identificateur d'objet (dans idenv ) à vérifier. |
doc | document XML à modifier dans le cas où l'identificateur d'environnement n'est pas valide (ou NULL si aucun document XML ne doit être modifié). |
nodeparent | identificateur dans doc du noeud parent destiné à recevoir comme fils le noeud d'erreur dans le cas où idenv n'est pas valide. |
true
si idenv est valide et false
sinon. bool cogitantcs::Server::isValidEnvironmentObjectType | ( | iEnv | idenv, |
cogitant::iSet | idobject, | ||
cogitant::EnvironmentObject::Type | typeobject, | ||
cogitant::XmlDocument * | doc, | ||
cogitant::XmlDocument::Element * | nodeparent | ||
) |
Vérification de la présence d'un EnvironmentObject du type passé dans l'environnement choisi.
idenv | identificateur d'environnement à vérifier. |
idobject | identificateur d'objet (dans idenv ) à vérifier. |
typeobject | identificateur d'objet (dans idenv ) à vérifier. |
doc | document XML à modifier dans le cas où l'identificateur d'environnement n'est pas valide (ou NULL si aucun document XML ne doit être modifié). |
nodeparent | noeud parent de doc destiné à recevoir comme fils le noeud d'erreur dans le cas où idenv n'est pas valide. |
true
si idenv est valide et false
sinon.
|
virtual |
Boucle principale du serveur.
Cette méthode doit être appelée pour lancer le serveur.
|
protected |
Un header spécifique au serveur http doit-il être envoyé.
|
protectedvirtual |
Interprètation d'une requête (simple) XML.
query | document XML représentant la requête. |
qn | noeud (dans query) contenant la requête. |
answer | document XML dans lequel le résultat de la requête sera stockée suite à l'exécution de cette méthode. |
anp | noeud de answer utilisé pour stocker le résultat de la requête (qui est ajouté comme fille de anp). |
ls | liste de chaines contenant le résultat des requêtes spéciales. |
|
virtual |
Interprétation d'une requête XML.
La requête est vérifiée et (éventuellement) décomposée en plusieurs sous-requêtes. La réponse n'est pas envoyée, elle est seulement générée dans answer.
query | requête à interpréter. |
answer | (R) document XML stockant le résultat de la requête. Si ce document contenait déjà des noeuds, ceux-ci sont supprimés. |
id | un identificateur représentant l'origine de la requête (non utilisé par défaut, mais pouvant être utilisé pour déterminer la connexion (donc le client) à l'origine de la requête, et donc gérer des droits d'accès). |
ls | liste de chaines contenant le résultat d'exécution des requêtes spéciales. |
true
si le serveur doit se terminer (fin du serveur demandée dans la requête) après envoi de la réponse et false
si le serveur doit continuer. cogitant::PropertySet* cogitantcs::Server::sessionAttributes | ( | iSession | i | ) |
Retourne les attributs d'une session.
cogitant::PropertySet const* cogitantcs::Server::sessionAttributes | ( | iSession | i | ) | const |
Retourne les attributs d'une session.
void cogitantcs::Server::sessionClose | ( | iSession | i | ) |
Supprime une session.
bool cogitantcs::Server::sessionIsValid | ( | iSession | i | ) | const |
L'identificateur de session est-il valide.
iSession cogitantcs::Server::sessionNew | ( | ) |
Crée une nouvelle session et retourne son numéro.
unsigned int cogitantcs::Server::sessionState | ( | iSession | i | ) | const |
État d'une session.
void cogitantcs::Server::stopOnError | ( | bool | stop | ) |
Arrêt du serveur lors d'une lecture erronée.
Par défaut, le serveur se termine lors d'une erreur de reception. En appelant cette méthode avec false
comme paramètre, le serveur continue (la méthode mainLoop() continue a attendre la connexion suivante) quand une erreur de lecture est rencontrée.
stop | true pour arrêter le server lors d'une lecture erronée, false pour continuer. |
|
protected |
Écriture d'un objet dans le document XML, avec ajout de propriétés "set" et "id".
|
virtual |
Écrit les caractéristiques d'un élément d'un ensemble dans le document XML.
doc | document à modifier pour contenir la réponse. |
nodeparent | noeud du document devant contenir la réponse. |
set | identificateur de l'ensemble à interroger. |
i | identificateur de l'objet dans l'ensemble. Si égal à ISET_NULL, écrit tous les éléments de l'ensemble. |
idest | identificateur de l'objet pour le client (rajoute un attribut iddest si différent de ISET_NULL). Ce paramètre doit être égal à ISET_NULL (défaut) dans le cas où la requête concerne tous les éléments de l'ensemble (i.e. i == ISET_NULL). |
|
static |
Identificateur incorrect d'environnement.