Quick links: Tutorial - Examples - Files - Symbols.
Classes: Hierarchy - Index - List - Members.
Namespaces: Index - base - cs - display.

Public Types | Public Member Functions | Static Public Attributes | Protected Member Functions | List of all members
cogitantcs::Server Class Reference

Serveur. More...

#include "cogitant/cs/server.h"

Inheritance diagram for cogitantcs::Server:
cogitantcs::Base cogitant::CogitantObject cogitantcs::Server_Simple cogitantcs::Server_TCP

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::PropertySetsessionAttributes (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::Environmentenvironments (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::ElementwriteObject (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::ElementwriteGraphObject (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::ElementwriteGraph (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::ElementwriteRule (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::ElementwriteProjection (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::GraphreadGraph (cogitant::XmlDocument const &doc, cogitant::XmlDocument::Element const *node, cogitant::Environment *env)
 Création du graphe reçu. More...
 
virtual cogitant::RulereadRule (cogitant::XmlDocument const &doc, cogitant::XmlDocument::Element const *node, cogitant::Environment *env)
 Création de la règle reçue. More...
 
virtual cogitant::ProjectionreadProjection (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...
 
PropertySetproperties ()
 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...
 
CogitantObjectoperator= (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::ElementwriteObjectExt (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 PropertySetallocProperties () 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...
 
OperationCSIOm_opeio
 Opération d'entrées sorties. More...
 

Detailed Description

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.

See also
Client-server architecture.

Member Typedef Documentation

◆ iEnv

typedef std::vector<cogitant::Environment *>::size_type cogitantcs::Server::iEnv

Identificateur d'environnement géré par le serveur.

Constructor & Destructor Documentation

◆ Server()

cogitantcs::Server::Server ( OperationCSIO opeio)

Constructeur par défaut.

Parameters
opeioopérations d'entrées/sorties utilisées pour le serveur.

◆ ~Server()

virtual cogitantcs::Server::~Server ( )
virtual

Destructeur.

Member Function Documentation

◆ addEnvironment()

iEnv cogitantcs::Server::addEnvironment ( cogitant::Environment e,
std::string const &  name = "" 
)

Ajout d'un environnement au serveur.

Parameters
el'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.
namele 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).
Precondition
l'environnement passé en paramètre ne doit pas déjà être géré par le serveur.
Returns
l'identifiant attribué à l'environnement.

◆ addMinOperations()

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.

◆ addOperation()

void cogitantcs::Server::addOperation ( OpeServer op)

Ajout d'une opération au serveur.

Parameters
opopération ajoutée.

◆ addStdOperations()

void cogitantcs::Server::addStdOperations ( )

Ajout des opérations standard (fournies avec la bibliothèque) au serveur.

◆ clear()

void cogitantcs::Server::clear ( )

Suppression de la gestion de tous les environnements, et destruction de tous les environnements.

◆ detachEnvironment()

void cogitantcs::Server::detachEnvironment ( iEnv  i)

Suppression de la gestion d'un environnement.

Parameters
iidentificateur 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.

◆ environments() [1/4]

std::vector<cogitant::Environment*>& cogitantcs::Server::environments ( )

Accès direct aux environnements gérés.

Warning
Certains indices ne correspondent pas à des objets (repérés par une valeur NULL).

◆ environments() [2/4]

cogitant::Environment* cogitantcs::Server::environments ( iEnv  i)

Accès direct à un environnement par son identificateur.

◆ environments() [3/4]

std::vector<cogitant::Environment*> const& cogitantcs::Server::environments ( ) const

Accès direct aux environnements gérés.

Warning
Certains indices ne correspondent pas à des objets (repérés par une valeur NULL).

◆ environments() [4/4]

cogitant::Environment const* cogitantcs::Server::environments ( iEnv  i) const

Accès direct à un environnement par son identificateur.

◆ findEnvironment()

iEnv cogitantcs::Server::findEnvironment ( std::string const &  n) const

Recherche d'un environnement par son nom.

Parameters
nnom de l'environnement cherché.
Returns
l'identificateur du premier environnement trouvé dont la propriété cogitant::Property::ENVIRONMENT_NAME est égale à n ou IENV_NULL si aucun graphe de l'environnement n'a ce nom.

◆ isValidEnvironment()

bool cogitantcs::Server::isValidEnvironment ( iEnv  idenv,
cogitant::XmlDocument doc,
cogitant::XmlDocument::Element nodeparent 
)

Vérification de la validité d'un identificateur d'environnement.

Parameters
idenvidentificateur d'environnement à vérifier.
docdocument XML à modifier dans le cas où l'identificateur d'environnement n'est pas valide (ou NULL si aucun document XML ne doit être modifié).
nodeparentnoeud parent dans doc destiné à recevoir comme fils le noeud d'erreur dans le cas où idenv n'est pas valide.
Returns
true si idenv est valide et false sinon.

◆ isValidEnvironmentObject()

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.

Parameters
idenvidentificateur d'environnement à vérifier.
idobjectidentificateur d'objet (dans idenv ) à vérifier.
docdocument XML à modifier dans le cas où l'identificateur d'environnement n'est pas valide (ou NULL si aucun document XML ne doit être modifié).
nodeparentidentificateur dans doc du noeud parent destiné à recevoir comme fils le noeud d'erreur dans le cas où idenv n'est pas valide.
Returns
true si idenv est valide et false sinon.

◆ isValidEnvironmentObjectType()

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.

Parameters
idenvidentificateur d'environnement à vérifier.
idobjectidentificateur d'objet (dans idenv ) à vérifier.
typeobjectidentificateur d'objet (dans idenv ) à vérifier.
docdocument XML à modifier dans le cas où l'identificateur d'environnement n'est pas valide (ou NULL si aucun document XML ne doit être modifié).
nodeparentnoeud parent de doc destiné à recevoir comme fils le noeud d'erreur dans le cas où idenv n'est pas valide.
Returns
true si idenv est valide et false sinon.

◆ mainLoop()

virtual void cogitantcs::Server::mainLoop ( )
virtual

Boucle principale du serveur.

Cette méthode doit être appelée pour lancer le serveur.

◆ requiresHeader()

bool cogitantcs::Server::requiresHeader ( ) const
protected

Un header spécifique au serveur http doit-il être envoyé.

◆ runQuery() [1/2]

virtual void cogitantcs::Server::runQuery ( cogitant::XmlDocument const *  query,
cogitant::XmlDocument::Element const *  qn,
cogitant::XmlDocument answer,
cogitant::XmlDocument::Element anp,
std::list< std::string > &  ls 
)
protectedvirtual

Interprètation d'une requête (simple) XML.

Parameters
querydocument XML représentant la requête.
qnnoeud (dans query) contenant la requête.
answerdocument XML dans lequel le résultat de la requête sera stockée suite à l'exécution de cette méthode.
anpnoeud de answer utilisé pour stocker le résultat de la requête (qui est ajouté comme fille de anp).
lsliste de chaines contenant le résultat des requêtes spéciales.

◆ runQuery() [2/2]

virtual bool cogitantcs::Server::runQuery ( cogitant::XmlDocument const &  query,
cogitant::XmlDocument answer,
iSession  id,
std::list< std::string > &  ls 
)
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.

Parameters
queryrequê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.
idun 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).
lsliste de chaines contenant le résultat d'exécution des requêtes spéciales.
Returns
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.

◆ sessionAttributes() [1/2]

cogitant::PropertySet* cogitantcs::Server::sessionAttributes ( iSession  i)

Retourne les attributs d'une session.

◆ sessionAttributes() [2/2]

cogitant::PropertySet const* cogitantcs::Server::sessionAttributes ( iSession  i) const

Retourne les attributs d'une session.

◆ sessionClose()

void cogitantcs::Server::sessionClose ( iSession  i)

Supprime une session.

◆ sessionIsValid()

bool cogitantcs::Server::sessionIsValid ( iSession  i) const

L'identificateur de session est-il valide.

◆ sessionNew()

iSession cogitantcs::Server::sessionNew ( )

Crée une nouvelle session et retourne son numéro.

◆ sessionState()

unsigned int cogitantcs::Server::sessionState ( iSession  i) const

État d'une session.

Returns
0 : non utilisée, 1 : ouverte (attente d'identification), 2 : ouverte (identification incorrecte), 10: identifié.

◆ stopOnError()

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.

Parameters
stoptrue pour arrêter le server lors d'une lecture erronée, false pour continuer.

◆ writeObjectExt()

cogitant::XmlDocument::Element* cogitantcs::Server::writeObjectExt ( cogitant::XmlDocument doc,
cogitant::XmlDocument::Element nodeparent,
std::string const &  name,
cogitant::CogitantObject const *  obj,
cogitant::iSet  setvalue,
cogitant::iSet  idvalue 
)
protected

Écriture d'un objet dans le document XML, avec ajout de propriétés "set" et "id".

Warning
Méthode réservée à usage interne.

◆ writeSetContent()

virtual void cogitantcs::Server::writeSetContent ( cogitant::XmlDocument doc,
cogitant::XmlDocument::Element nodeparent,
unsigned int  set,
cogitant::iSet  i,
cogitant::iSet  idest 
)
virtual

Écrit les caractéristiques d'un élément d'un ensemble dans le document XML.

Parameters
docdocument à modifier pour contenir la réponse.
nodeparentnoeud du document devant contenir la réponse.
setidentificateur de l'ensemble à interroger.
iidentificateur de l'objet dans l'ensemble. Si égal à ISET_NULL, écrit tous les éléments de l'ensemble.
idestidentificateur 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).

Member Data Documentation

◆ IENV_NULL

const iEnv cogitantcs::Server::IENV_NULL
static

Identificateur incorrect d'environnement.