Pour procéder à l'enregistrement, le client commence par ouvrir une connexion TCP sur l'adresse IP et le numéro de port du serveur. Une fois la connexion TCP établie et prête pour l'écriture, le client doit envoyer son message d'enregistrement. Il doit s'agir d'un message SC_CALLBACK_REG correctement formaté, qui ne doit pas être suivi ni précédé d'octets supplémentaires.
Une fois tous les octets émis, le client doit rester connecté pour recevoir une réponse du serveur. S'il ne formate pas le message correctement, le serveur n'enregistre pas le client et lui transmet un message d'erreur. Toutefois, si le client ferme la connexion (au niveau du socket) avant que le serveur n'ait envoyé sa réponse, ce dernier enregistre le client en suivant la procédure habituelle.
Les clients peuvent contacter le serveur à tout moment. Chaque fois qu'un client contacte le serveur, il doit envoyer un message SC_CALLBACK_REG. Si le serveur reçoit un message malformé, non fonctionnel ou non valide, il renvoie un message d'erreur au client.
Pour transmettre un message ADD_EVENTS, REMOVE_EVENTS ou REMOVE_CLIENT, un client doit d'abord envoyer un message ADD_CLIENT. De même, avant de transmettre un message REMOVE_CLIENT, il doit envoyer un message ADD_CLIENT.
Si un client envoie un message ADD_CLIENT alors qu'il est déjà enregistré, le serveur peut tolérer ce message. Il remplace l'enregistrement client antérieur par le nouvel enregistrement spécifié dans le second message ADD_CLIENT.
Mais en règle générale, un client s'enregistre une seule fois auprès du serveur par l'envoi d'un message ADD_CLIENT. Un client annule une seule fois son enregistrement en envoyant un message REMOVE_CLIENT au serveur. Le protocole CRNP offre une plus grande souplesse aux clients qui doivent modifier de façon dynamique leur liste de types d'événements.
Chaque message ADD_CLIENT, REMOVE_CLIENT, ADD_EVENTS et REMOVE_EVENTS contient une liste d'événements. Le tableau ci-après présente les types d'événements que le protocole CRNP accepte, avec les paires nom/valeurs requises.
Si un client effectue l'une des actions suivantes, le serveur ignore ces messages sans vous en avertir :
Il envoie un message REMOVE_EVENTS qui spécifie un ou plusieurs types d'événements pour lesquels il ne s'est pas enregistré précédemment.
Il s'enregistre deux fois pour le même type d'événement.
Classe et sous-classe |
Paire nom/valeurs |
Description |
---|---|---|
EC_Cluster ESC_cluster_membership |
Requise : aucune En option : aucune |
Enregistrement pour toutes les notifications d'événement de modification de l'appartenance au cluster (suppression ou ajout d'un noeud) |
EC_Cluster ESC_cluster_rg_state |
Une seule requise comme suit : rg_name Type de valeurs : chaîne de caractères En option : aucune |
Enregistrement pour toutes les notifications d'événements de modification d'état du groupe de ressources name |
EC_Cluster ESC_cluster_r_state |
Une seule requise comme suit : r_name Type de valeurs : chaîne de caractères En option : aucune |
Enregistrement pour toutes les notifications d'événement de modification d'état de la ressource nom |
EC_Cluster Aucun |
Requise : aucune En option : aucune |
Enregistrement pour toutes les notifications d'événement de Sun Cluster |