Différences

Cette page vous donne les différences entre la révision choisie et la version actuelle de la page.

Lien vers cette vue

documentation:protocole:noeudcentral [15/05/2009 19:27]
Emmanuel
documentation:protocole:noeudcentral [19/10/2011 16:48] (Version actuelle)
Emmanuel Modifications des messages du noeud central
Ligne 3: Ligne 3:
 Le noeud central est le module qui organise et centralise les différentes communications entre module. Le noeud central est le module qui organise et centralise les différentes communications entre module.
 Toute connexion commence par une poignée de main. Toute connexion commence par une poignée de main.
 +
 +Les requêtes prennent toutes un id, qui n'est pas précisé pour éviter la redondance. De même, le type de requête est précisé dans son contenu même si celui-ci fera l'objet d'un traitement séparé.
  
 ===== Poignée de main ===== ===== Poignée de main =====
  
-La poignée de main se déroule en trois étapes.+La poignée de main se déroule en deux étapes.
  
-  - envoi de la bannière par le noeud central +  - envoi d'une requête de connexion au noeud central
-  - réponse du module se connectant+
   - approbation du noeud central   - approbation du noeud central
  
-==== Bannière ==== +==== Contenu de la requête ==== 
-À la connexion, une bannière, sous la forme du message suivant, est envoyée. Elle comprend trois clés : +  * **type** : "''connection attempt''
-  * type : "connection initialization" +  * **module type** : type du module (par exemple, gestion de signaux, de conduite, etc). Il est possible qu'à terme, tous les types forment une arborescence pointée (A.B.C)
-  * name : le nom de l'application +
-  * version : la version du noeud central +
- +
-==== Réponse à la banière ==== +
-  * **type** : "connection attempt"+
   * **name** : le nom du module se connectant (qui pourra servir à d'autres modules pour établir des relations de dépendance)   * **name** : le nom du module se connectant (qui pourra servir à d'autres modules pour établir des relations de dépendance)
 +  * **fqname**, optionnel : le nom du module se connectant (réservé à l'affichage utilisateur)
   * **version** : la version actuelle du module   * **version** : la version actuelle du module
-  * accept une liste de nom de messages acceptés par le module. Ces messages seront transmis par le noeud central au module concerné lors de leur réception. "*signifie tous les messages. Par défaut : "*+  * **cohabitation**, //optionnel// : "''none''""''leader''", "''complete''
-  dontAccept une liste de nom de messages à ne pas transmettre +    ''none'' pas de cohabitation possible entre modules de même type : c'est la valeur par défaut 
-  acceptAllErrors vrai ou fauxindique si les messages d'erreurs doivent être transmis à ce module.+    ''leader'' un référant est désigné par le noeud centralil recevra les messages adressés à ce type de modules 
 +    * ''complete'' : cohabitation possibles entre modules de ce même type. Il n'y a pas de référant désigné. Les messages adressés à ce type de module sont envoyés à tous les modules
  
 ==== Confirmation de connexion ==== ==== Confirmation de connexion ====
-  * type : "connection succeed" +Si tous s'est bien passé : 
-  * modules la liste des modules déjà connecté, sous forme de paire (nom, version)+ 
 +  * **type** : "connection succeed" 
 + 
 +En cas de problème : 
 + 
 +  * **type** "''connection failed''" 
 +  * **content** : "Raisons qui ne permettent pas cette connexion" (par exemple incompatibilité du mode de cohabitation) 
  
 ===== Une fois connecté ===== ===== Une fois connecté =====
  
-==== Nouveau leader ====+==== Message de nouveau module ==== 
 +  * **type** : "''new module''" 
 +  * **module id**: identifiant unique du module, fourni par le noeud central 
 +  * **module type** : type du module (par exemple, gestion de signaux, de conduite, etc) 
 +  * **name** : le nom du module se connectant (qui pourra servir à d'autres modules pour établir des relations de dépendance) 
 +  * **fqname**, optionnel : le nom du module se connectant (réservé à l'affichage utilisateur) 
 +  * **version** : la version actuelle du module 
 + 
 +Envoyé par le noeud central 
 + 
 +==== Message de suppression de module ==== 
 +  * **type** : "''module lost''" 
 +  * **module id**: identifiant unique du module, fourni par le noeud central 
 + 
 +Envoyé par le noeud central 
 + 
 +==== Message d'inscription à des messages ==== 
 +  * **type** : "''message subscription''" 
 +  * **accept** : une liste de type de messages acceptés par le module. Ces messages seront transmis par le noeud central au module concerné lors de leur réception. "''*''" signifie tous les messages. Par défaut : [], aucun message. Il est possible que les types de messages évoluent vers une notation en arborescence 
 +  * **avoid** : une liste de type de messages à ne pas transmettre. Par défaut [] 
 + 
 +Les messages doivent passer par l'un des filtres "accept", puis ne pas correspondre n'importe lesquels des filtres "avoid". 
 + 
 +Ce message n'est pas transmis aux autres modules. 
 + 
 + 
 +===== Les leaders ===== 
 + 
 +Par défaut, le noeud central n'accepte qu'une connexion par type de module. Il est néanmoins possible d'en connecter plusieurs si le premier à se connecter active un des modes possibles lors de sa connexion. Le premier module choisie le mode, et les autres devront choisir le même. (À défaut, la connexion leur sera refusée) 
 + 
 +En mode exclusif, seul un module d'un type donné peut se connecter. 
 + 
 +En mode complet, il n'y a aucune restriction sur le nombre de connexion d'un même type de module. 
 + 
 +En mode "leader", le nombre de connexion n'est pas non plus limité, mais un leader est désigné parmis les modules se connectant. Le leader est, au début, le premier module à se connecter. Dans ce mode, chaque module peut demander à être le leader. Chaque module peut également tenter d'abandonner le rôle de leader. 
 + 
 +Dans tous les cas, c'est le noeud central qui défini qui devient leader. 
 + 
 +==== Messages de gestion du leadership ==== 
 + 
 +  * type : "leadership attribution" 
 + 
 +Vous êtes le nouveau leader du groupe de module auquel vous appartenez. Envoyé par le noeud central. 
 + 
 +  * type : "leadership destitution" 
 + 
 +Vous venez de perdre le leadership du groupe. Envoyé par le noeud central. 
 + 
 +  * type : "request leadership attribution" 
 + 
 +Vous demandez à être le nouveau leader du groupe de module auquel vous appartenez. Envoyé par le module demandant.
  
-  * type : "module management" +  * type : "request leadership destitution"
-  * event : "leader" +
-Vous êtes le nouveau leader du groupe de module auquel vous appartenez. +
  
-==== Erreur ====+Vous demandez à perdre le leadership du groupe. Envoyé par le module demandant.
  
-  * type : "error" 
-  * description : description de l'erreur 
  
-Ce message est suivi d'une rupture de connexion de la part du noeux central en cas d'erreur protocolaire 
documentation/protocole/noeudcentral.txt · Dernière modification: 19/10/2011 16:48 par Emmanuel
 
Sauf mention contraire, le contenu de ce wiki est placé sous la licence suivante : CC Attribution-Share Alike 3.0 Unported
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki