nl:: Weave:: Profiles:: Echo_Next:: WeaveEchoClient
#include <src/lib/profiles/echo/Next/WeaveEchoClient.h>
Provides the ability to send Weave EchoRequest messages to a peer node and receive the corresponding EchoResponse messages.
Résumé
La classe WeaveEchoClient implémente le côté initie du protocole Weave Echo. Tout comme le protocole ping ICMP, le protocole Weave Echo peut être utilisé pour tester l'activité et la joignabilité d'un nœud Weave.
Les applications peuvent utiliser la classe WeaveEchoClient pour envoyer des messages EchoRequest ponctuels ou répétés à un nœud pair identifié par un objet Binding. Il existe une classe correspondante permettant de répondre aux requêtes d'écho (voir WeaveEchoServer).
Liaison client
Le WeaveEchoClient utilise un objet de liaison Weave qui permet d'identifier et d'établir la communication avec le destinataire des requêtes d'écho. La liaison peut être configurée et préparée par l'application avant l'initialisation de l'objet WeaveEchoClient, ou peut être laissée non préparée, auquel cas le WeaveEchoClient demandera la préparation de la liaison à la demande (voir Binding::RequestPrepare() pour plus d'informations).
La préparation à la demande de la liaison est également demandée en cas d'échec de l'opération après être passé à l'état Prêt.
Mode de répétition d'envoi
La méthode SendRepeating() peut être utilisée pour mettre le WeaveEchoClient en mode SendRepeating. Dans ce mode, l'objet client envoie une séquence répétée de messages EchoRequest au pair à un intervalle configuré. Vous pouvez annuler le mode SendRepeating en appelant la méthode Stop().
Multidiffusion et diffusion
Un objet WeaveEchoClient peut être utilisé pour envoyer des EchoRequests à plusieurs destinataires simultanément en configurant l'objet Binding avec une adresse de multidiffusion IPv6 ou une adresse de diffusion sur le réseau local IPv4 (255.255.255.255). Lorsque l'objet WeaveEchoClient détecte une adresse de pair de diffusion ou de multidiffusion, il passe automatiquement en mode multiréponse lors de l'envoi de l'EchoRequest.
Dans ce mode, l'objet continue d'écouter et de distribuer tous les messages EchoResponse entrants qui arrivent sur le même échange. L'objet reste en mode multiréponse jusqu'à ce que: 1) l'application appelle Stop() ou Send(), 2) en mode SendRepeating, 3) aucune réponse ne soit reçue et le délai d'expiration à la réception expire.
Événements de l'API
Au cours de son fonctionnement, l'objet WeaveEchoClient appelle l'application pour demander des actions spécifiques ou envoyer des notifications d'événements importants. Ces appels d'événements d'API sont envoyés à la fonction de rappel actuellement configurée sur l'objet client. Sauf indication contraire, les applications sont libres de modifier l'état du client lors d'un rappel d'événement. Une exception globale est la méthode Shutdown() de l'objet, qui peut ne jamais être appelée lors d'un rappel.
Les événements d'API suivants sont définis:
PreparePayload
Le WeaveEchoClient est sur le point de former un message EchoRequest et demande à l'application de fournir une charge utile. Si une application le souhaite, elle peut renvoyer un nouveau PaquetBuffer contenant les données de la charge utile. Si l'application ne gère pas cet événement, une requête EchoRequest avec une charge utile de longueur nulle est envoyée automatiquement. L'application NE PEUT PAS modifier l'état du WeaveEchoClient lors de ce rappel.
RequestSent
Un message EchoRequest a été envoyé au pair.
ResponseReceived
Un message EchoResponse a été reçu du pair. Les arguments de l'événement contiennent la charge utile de la réponse et des méta-informations sur le message de réponse.
CommunicationError
Une erreur s'est produite lors de la formation ou de l'envoi d'une requête EchoRequest, ou pendant l'attente d'une réponse. Les erreurs clés ou la fermeture inattendue d'une connexion sont des exemples d'erreurs qui peuvent se produire en attendant une réponse. Les arguments de l'événement contiennent le motif de l'erreur.
ResponseTimeout
Aucune réponse EchoResponse n'a été reçue dans le temps imparti. Le délai avant expiration de la réponse est contrôlé par la propriété DefaultResponseTimeout de l'objet Binding.
RequestAborted
Un échange Echo en cours a été annulé, car une demande a été effectuée pour envoyer une autre demande EchoRequest avant la réception d’une réponse au message précédent. Cela peut se produire en mode SendRepeating lorsque l'heure arrive pour envoyer la prochaine EchoRequest. Cela peut également se produire si l'application appelle Send() après l'envoi d'une requête EchoRequest, mais avant la réception de toute réponse.
Lorsque l'objet est en mode MultiResponse, l'événement est supprimé si au moins un message EchoResponse a été reçu.
Constructeurs et destructeurs |
|
---|---|
WeaveEchoClient(void)
|
Types publics |
|
---|---|
EventCallback)(void *appState, EventType eventType, const InEventParam &inParam, OutEventParam &outParam)
|
typedefvoid(*
|
EventType{
|
enum |
State{
|
enum |
Attributs publics |
|
---|---|
AppState
|
void *
Pointeur vers des données spécifiques à l'application.
|
Fonctions publiques |
|
---|---|
GetBinding(void) const
|
Binding *
Renvoie un pointeur vers l'objet Binding associé au WeaveEchoClient.
|
GetEventCallback(void) const
|
EventCallback
Renvoie un pointeur vers la fonction de rappel d'événement d'API actuellement configurée sur l'objet WeaveEchoClient.
|
GetState(void) const
|
Récupère l'état actuel de l'objet WeaveEchoClient.
|
Init(Binding *binding, EventCallback eventCallback, void *appState)
|
Initialisez un objet WeaveEchoClient.
|
IsSendRrepeating() const
|
bool
Renvoie la valeur "true" si l'objet WeaveEchoClient est en mode de répétition d'envoi.
|
RequestInProgress() const
|
bool
Renvoie la valeur "true" si une requête EchoRequest a été envoyée et que l'objet WeaveEchoClient attend une réponse.
|
Send(void)
|
Envoyer un message EchoRequest au pair.
|
Send(PacketBuffer *payloadBuf)
|
Envoyer un message EchoRequest au pair avec une charge utile spécifique.
|
SendRepeating(uint32_t sendIntervalMS)
|
Initiez l'envoi d'une séquence répétée de messages EchoRequest au pair.
|
SetEventCallback(EventCallback eventCallback)
|
void
Définit la fonction de rappel d'événement d'API sur l'objet WeaveEchoClient.
|
Shutdown(void)
|
void
Arrêter un objet WeaveEchoClient précédemment initialisé.
|
Stop(void)
|
void
Arrête tout échange d'écho en cours et annule le mode de répétition d'envoi.
|
Fonctions statiques publiques |
|
---|---|
DefaultEventHandler(void *appState, EventType eventType, const InEventParam & inParam, OutEventParam & outParam)
|
void
Gestionnaire par défaut pour les événements de l'API WeaveEchoClient.
|
Structs |
|
---|---|
nl:: |
Paramètres d'entrée pour l'événement d'API WeaveEchoClient. |
nl:: |
Paramètres de sortie de l'événement d'API WeaveEchoClient. |
Types publics
EventCallback
void(* EventCallback)(void *appState, EventType eventType, const InEventParam &inParam, OutEventParam &outParam)
EventType
EventType
Propriétés | |
---|---|
kEvent_CommunicationError
|
Une erreur de communication s'est produite lors de l'envoi d'un EchoRequest ou de l'attente d'une réponse. |
kEvent_DefaultCheck
|
Permet de vérifier que les événements par défaut sont correctement gérés dans l'application. |
kEvent_PreparePayload
|
L'application est invitée à préparer la charge utile pour la requête Echo. |
kEvent_RequestAborted
|
Un échange Echo en cours a été annulé, car une demande a été envoyée pour démarrer un autre échange. |
kEvent_RequestSent
|
Un message EchoRequest a été envoyé au pair. |
kEvent_ResponseReceived
|
Un message EchoResponse a été reçu du pair. |
kEvent_ResponseTimeout
|
Aucune réponse EchoResponse n'a été reçue dans le temps imparti. |
État
State
Propriétés | |
---|---|
kState_Idle
|
L'objet client est inactif. |
kState_NotInitialized
|
L'objet client n'est pas initialisé. |
kState_PreparingBinding
|
L'objet client attend que la liaison soit prête. |
kState_RequestInProgress
|
Un message EchoRequest a été envoyé et l’objet client attend une réponse. |
kState_WaitingToSend
|
SendRepeating() a été appelé et l'objet client attend la prochaine fois qu'il enverra un EchoRequest. |
Attributs publics
AppState
void * AppState
Pointeur vers des données spécifiques à l'application.
Fonctions publiques
GetBinding
Binding * GetBinding( void ) const
Renvoie un pointeur vers l'objet Binding associé au WeaveEchoClient.
GetEventCallback
EventCallback GetEventCallback( void ) const
Renvoie un pointeur vers la fonction de rappel d'événement d'API actuellement configurée sur l'objet WeaveEchoClient.
Init
WEAVE_ERROR Init( Binding *binding, EventCallback eventCallback, void *appState )
Initialisez un objet WeaveEchoClient.
Initialisez un objet WeaveEchoClient en vue de l'envoi de messages d'écho à un pair.
Détails | |||||||
---|---|---|---|---|---|---|---|
Paramètres |
|
IsSendRrepeating
bool IsSendRrepeating() const
Renvoie la valeur "true" si l'objet WeaveEchoClient est en mode de répétition d'envoi.
RequestInProgress
bool RequestInProgress() const
Renvoie la valeur "true" si une requête EchoRequest a été envoyée et que l'objet WeaveEchoClient attend une réponse.
Envoyer
WEAVE_ERROR Send( void )
Envoyer un message EchoRequest au pair.
Cette méthode lance le processus d'envoi d'un message EchoRequest au nœud pair. Si un message EchoResponse correspondant est reçu, il est transmis à l'application via l'événement d'API ResponseReceived.
Lors de la formation du message EchoRequest, le WeaveEchoClient envoie une requête à l'application, via l'événement d'API PreparePayload, pour préparer la charge utile du message.
Si l'objet Binding n'est pas à l'état "Prêt" lorsque cette méthode est appelée, une requête est envoyée à la méthode Binding::RequestPrepare() pour lancer la préparation à la demande. L'opération d'envoi est alors mise en file d'attente jusqu'à la fin du processus. La profondeur maximale de cette file d'attente est de un. Ainsi, tout appel à Send() alors qu'il existe un envoi précédent dans la file d'attente n'entraînera qu'un seul envoi d'EchoRequest.
Appeler Send() alors que le WeaveEchoClient est en mode de répétition d'envoi (par exemple, en raison d'un appel précédent à SendRepeating()) a pour effet d'accélérer et de réinitialiser le cycle d'envoi, mais ne fait pas sortir le WeaveEchoClient du mode de répétition d'envoi.
Envoyer
WEAVE_ERROR Send( PacketBuffer *payloadBuf )
Envoyer un message EchoRequest au pair avec une charge utile spécifique.
Cette méthode lance le processus d'envoi d'un message EchoRequest au nœud pair. Le contenu du tampon de charge utile fourni sera envoyé au pair en tant que charge utile du message EchoRequest. Si un message EchoResponse correspondant est reçu, il est transmis à l'application via l'événement d'API ResponseReceived.
Lorsque cette méthode est appelée, la propriété du tampon de charge utile fournie est transférée à l'objet WeaveEchoClient, qui a la responsabilité de le libérer. Cela est vrai, que la méthode aboutisse ou qu'une erreur se soit produite.
Si l'objet Binding n'est pas à l'état "Prêt" lorsque cette méthode est appelée, une requête est envoyée à la méthode Binding::RequestPrepare() pour lancer la préparation à la demande. L'opération d'envoi est alors mise en file d'attente jusqu'à la fin de ce processus. La profondeur maximale de cette file d'attente est de un. Ainsi, tout appel à Send() alors qu'il existe un envoi précédent dans la file d'attente n'entraînera qu'un seul envoi d'EchoRequest.
Appeler Send() alors que le WeaveEchoClient est en mode de répétition d'envoi (par exemple, en raison d'un appel précédent à SendRepeating()) a pour effet d'accélérer et de réinitialiser le cycle d'envoi, mais ne fait pas sortir le WeaveEchoClient du mode de répétition d'envoi.
Détails | |||
---|---|---|---|
Paramètres |
|
SendRepeating
WEAVE_ERROR SendRepeating( uint32_t sendIntervalMS )
Initiez l'envoi d'une séquence répétée de messages EchoRequest au pair.
Cette méthode lance un processus répété d'envoi de messages EchoRequest au pair. Au fur et à mesure que les messages EchoResponse sont reçus du pair, ils sont transmis à l'application via l'événement d'API ResponseReceived.
Lorsque SendRepeating() est appelé, le WeaveEchoClient passe en mode de répétition d'envoi, dans lequel il reste jusqu'à ce que Stop() soit appelé ou qu'une erreur de liaison se produise. Le fait d'appeler SendRepeating() plusieurs fois a pour effet de réinitialiser le cycle d'envoi et de mettre à jour l'intervalle.
L'envoi initial d'une séquence se produit au moment de l'appel de SendRepeating() ou de Binding après l'appel de SendRepeating() (voir ci-dessous). Les envois suivants se produisent ensuite à l'intervalle spécifié.
À chaque envoi, le WeaveEchoClient envoie une requête à l'application, via l'événement d'API PreparePayload, pour préparer la charge utile du message.
Si l'objet Binding n'est pas à l'état "Ready" (Prêt) au moment d'envoyer un message, une requête est envoyée à la méthode Binding::RequestPrepare() pour lancer la préparation à la demande. Les envois de messages répétés seront interrompus jusqu'à la fin de ce processus. En cas d'échec de la préparation de la liaison Binding à la demande, le WeaveEchoClient quittera le mode de répétition d'envoi.
SetEventCallback
void SetEventCallback( EventCallback eventCallback )
Définit la fonction de rappel d'événement d'API sur l'objet WeaveEchoClient.
Arrêt
void Shutdown( void )
Arrêter un objet WeaveEchoClient précédemment initialisé.
Notez que cette méthode ne peut être appelée que si la méthode Init() a déjà été appelée.
Arrêter
void Stop( void )
Arrête tout échange d'écho en cours et annule le mode de répétition d'envoi.
WeaveEchoClient
WeaveEchoClient( void )
Fonctions statiques publiques
DefaultEventHandler
void DefaultEventHandler( void *appState, EventType eventType, const InEventParam & inParam, OutEventParam & outParam )
Gestionnaire par défaut pour les événements de l'API WeaveEchoClient.
Les applications doivent appeler cette méthode pour tous les événements d'API qu'elles ne reconnaissent ou ne gèrent pas. Les paramètres fournis doivent être identiques à ceux transmis par l'objet client à la fonction de gestionnaire d'événements de l'application.
Détails | |||||||||
---|---|---|---|---|---|---|---|---|---|
Paramètres |
|