UniComCtrl::Protocole de communication v2.1
Un article de OpenIHS.org.
La trame de communication peut se représenter de la manière suivante :
- Le champ H (entête) est obligatoire et donc toujours présent.
- Le champ P (nom pair à pair) contient le "peer name" ou nom du destinataire ou originaire de la trame. Ce champs peut être vide (absent) si l'origine/destination du message est le serveur.
- Les champs L et V sont indissociables et forment le champ B (corp du message). Si le champ V est absent, le champ L l'est aussi.
- Le champ V contient les données à envoyer.
- Le champ L contient la longueur du champs V.
[modifier] Champ H : entête de la trame
Le champ H est un mot (octet) de 8 bits et se décompose de la manière suivante :
- Les bits de 0 à 3 contiennent les drapeaux (flags).
- Les bits de 4 à 7 servent à coder le type de la trame.
Liste des drapeaux :
- bit 0 : mode de communication
- à 0 : asynchrone.
- à 1 : synchrone.
- bit 1 :
- à 0 : normal.
- à 1 : "administration" si le type est requête, ou "2 dimensions" si le type est list.
- bit 2 : champ P
- à 0 : absent.
- à 1 : présent.
- bit 3 : champ B (L + V)
- à 0 : absent.
- à 1 : présent.
Liste des types :
- 0x0 : Service temporairement indisponible.
- 0x1 : Destination inaccessible.
- 0x2 : Opération non permise.
- 0x3 : Opération nom supportée.
- 0x4 : Données binaire.
- 0x5 : Requête.
- 0x6 : Erreur
- 0x7 : Message
- 0x8 : Liste.
- 0x9 : Évènement de connexion envoyé au plugin quand un client effectue la requête use <plugin> ou envoyé au client si d'une part le client a envoyé la commande use all et qu'un plugin effectue la requête insert <plugin> (on suppose que le client à les droit nécessaire pour utiliser ce plugin).
- 0xA : Évènement de déconnexion envoyé au plugin quand un client effectue la requête reset ou si il se déconnecte et vice-versa.
- 0xB : Non utilisé.
- 0xC : Non utilisé.
- 0xD : Non utilisé.
- 0xE : Non utilisé.
- 0xF : Non utilisé.
[modifier] Champ P : nom du destinataire ou originaire
Le champ P est une suite de caractères suivit du caractère '\0'.
[modifier] Champ B (L+V) : corp du message
Le champ B est composé de l'octet Lh suivit, selon les cas, des octets L1..4, suivit des octets du champs V
- Si la longueur du champ V est inférieure à 128 octets :
- Le bit 0 de Lh sera à 0.
- La longueur du champs V sera codée sur les bits 1 à 7 de Lh.
- Les octets L1..4 seront absents.
- Si la longueur du champ V est suppérieure ou égale à 128 octets :
- Le bit 0 de Lh sera à 1.
- La longueur du champs V sera codée sur les octets L1..4 avec l'octet de poids fort en premier et celui de poids faible en dernier.





