nl:: Weave:: Profile:: 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.
Fazit
Die Klasse WeaveEchoClient implementiert die Initiatorenseite des Weave-Echo-Protokolls. Ähnlich wie beim ICMP-Ping-Protokoll kann das Weave-Echo-Protokoll verwendet werden, um die Aktivität und Erreichbarkeit eines Weave-Knotens zu testen.
Anwendungen können die Klasse WeaveEchoClient verwenden, um einmalige oder wiederkehrende EchoRequest-Nachrichten an einen Peer-Knoten zu senden, der durch ein Bindungsobjekt identifiziert wird. Für die Antwort auf Echo-Anfragen ist eine entsprechende Klasse vorhanden (siehe WeaveEchoServer).
WeaveEchoClient verwendet ein Weave-Bindungsobjekt, das verwendet wird, um die Kommunikation mit dem vorgesehenen Empfänger der Echo-Anfragen zu ermitteln und herzustellen. Die Bindung kann von der Anwendung vor der Initialisierung des WeaveEchoClient-Objekts konfiguriert und vorbereitet werden oder sie kann nicht vorbereitet werden. In diesem Fall fordert WeaveEchoClient bei Bedarf die Vorbereitung der Bindung an (siehe Bindung::RequestPrepare()).
Eine On-Demand-Vorbereitung der Bindung wird ebenfalls angefordert, wenn sie im Status „Bereit“ fehlschlägt.
Wiederkehrender Modus
Die SendRepeating()-Methode kann verwendet werden, um den WeaveEchoClient in den Sendewiederholungsmodus zu versetzen. In diesem Modus sendet das Clientobjekt in regelmäßigen Abständen eine wiederkehrende Echoanfrage-Nachricht an den Peer. Der Modus „Wiederholen“ kann mit der Methode Stop() abgebrochen werden.
Multicast und Übertragung
Ein WeaveEchoClient-Objekt kann verwendet werden, um EchoRequest-Anfragen an mehrere Empfänger gleichzeitig zu senden. Dazu wird das Bindungsobjekt mit einer geeigneten IPv6-Multicast-Adresse oder einer lokalen IPv4-Broadcast-Adresse (255.255.255.255) konfiguriert. Wenn das WeaveEchoClient-Objekt eine Multicast- oder Broadcast-Peer-Adresse erkennt, wechselt es beim Senden des EchoRequest automatisch in den MultiResponse-Modus.
In diesem Modus wartet das Objekt weiter auf alle eingehenden EchoResponse-Nachrichten, die auf demselben Exchange eingehen. Das Objekt bleibt im MultiResponse-Modus, bis: 1) die Anwendung Stop() oder Send() aufruft, 2) im Modus „Sendewiederholung“ wechselt, eine neue Anfrage gesendet wird oder 3) keine Antwort empfangen wird und das Zeitlimit für den Empfang abläuft.
API-Ereignisse
Während dessen Vorgang ruft das Objekt WeaveEchoClient die Anwendung auf, um bestimmte Aktionen anzufordern oder Benachrichtigungen über wichtige Ereignisse zu senden. Diese API-Ereignisaufrufe werden an die aktuell konfigurierte Callback-Funktion im Clientobjekt gesendet. Sofern nicht anders angegeben, können Anwendungen den Status des Clients während eines Ereignis-Callbacks ändern. Eine Ausnahme ist die H()-Methode für Objekte, die nie während eines Callbacks aufgerufen werden kann.
Die folgenden API-Ereignisse sind definiert:
Nutzlast
WeaveEchoClient beginnt mit der Erstellung einer EchoRequest-Nachricht und fordert die Anwendung an, eine Nutzlast bereitzustellen. Eine Anwendung kann einen neuen PacketBuffer mit den Nutzlastdaten zurückgeben, wenn dies erwünscht ist. Wenn die Anwendung dieses Ereignis nicht verarbeitet, wird automatisch ein EchoRequest mit Nutzlast null Länge gesendet. Die Anwendung darf den Status von WeaveEchoClient während dieses Callbacks NICHT ändern.
Anfrage gesendet
Eine EchoRequest-Nachricht wurde an den Peer gesendet.
Antwort erhalten
Vom Peer wurde eine EchoResponse-Nachricht empfangen. Argumente für das Ereignis enthalten die Nutzlast der Antwort und Metainformationen zur Antwortnachricht.
Kommunikationsfehler
Beim Erstellen oder Senden eines EchoRequest-Fehlers oder beim Warten auf eine Antwort ist ein Fehler aufgetreten. Zu den Fehlern, die beim Warten auf eine Antwort auftreten können, gehören entscheidende Fehler oder unerwartetes Schließen einer Verbindung. Argumente für das Ereignis enthalten den Fehlergrund.
Zeitüberschreitung der Antwort
Es wurde keine EchoResponse empfangen. Das Zeitlimit für Antworten wird vom Attribut „DefaultResponseTimeout“ für das Objekt Bindung festgelegt.
Anfrage abgebrochen
Ein laufender Echo-Austausch wurde abgebrochen, weil eine Anfrage zum Senden eines weiteren EchoRequest gestellt wurde, bevor eine Antwort auf die vorherige Nachricht empfangen wurde. Dieser Fehler kann im Modus „RepeatRepeating“ auftreten, wenn die Zeit ansteht, das nächste EchoRequest-Objekt zu senden. Das kann auch vorkommen, wenn die Anwendung Send() aufruft, nachdem ein EchoRequest gesendet wurde, aber bevor eine Antwort empfangen wurde.
Wenn sich das Objekt im MultiResponse-Modus befindet, wird das Ereignis unterdrückt, wenn mindestens eine EchoResponse-Nachricht empfangen wurde.
Konstrukteur und Zerstörer |
|
---|---|
WeaveEchoClient(void)
|
Öffentliche Typen |
|
---|---|
EventCallback)(void *appState, EventType eventType, const InEventParam &inParam, OutEventParam &outParam)
|
Typdefvoid(*
|
EventType{
|
enum |
State{
|
enum |
Öffentliche Attribute |
|
---|---|
AppState
|
void *
Ein Hinweis auf anwendungsspezifische Daten.
|
Öffentliche Funktionen |
|
---|---|
GetBinding(void) const
|
Binding *
Gibt einen Zeiger auf das Bindungsobjekt zurück, das mit dem WeaveEchoClient verknüpft ist.
|
GetEventCallback(void) const
|
EventCallback
Gibt einen Zeiger auf die API-Ereignis-Callback-Funktion zurück, die derzeit für das WeaveEchoClient-Objekt konfiguriert ist.
|
GetState(void) const
|
Rufen Sie den aktuellen Status des WeaveEchoClient-Objekts ab.
|
Init(Binding *binding, EventCallback eventCallback, void *appState)
|
Initialisiere ein WeaveEchoClient-Objekt.
|
IsSendRrepeating() const
|
bool
Gibt „true“ zurück, wenn sich das WeaveEchoClient-Objekt derzeit im Sendewiederholmodus-Modus befindet.
|
RequestInProgress() const
|
bool
Gibt „true“ zurück, wenn ein EchoRequest gesendet wurde und das WeaveEchoClient-Objekt auf eine Antwort wartet.
|
Send(void)
|
Sende eine EchoRequest-Nachricht an den Peer.
|
Send(PacketBuffer *payloadBuf)
|
Eine EchoRequest-Nachricht mit einer bestimmten Nutzlast an den Peer senden.
|
SendRepeating(uint32_t sendIntervalMS)
|
Senden Sie eine wiederkehrende Sequenz von EchoRequest-Nachrichten an den Peer.
|
SetEventCallback(EventCallback eventCallback)
|
void
Legt die API-Ereignis-Callback-Funktion für das WeaveEchoClient-Objekt fest.
|
Shutdown(void)
|
void
Herunterfahren eines zuvor initialisierten WeaveEchoClient-Objekts
|
Stop(void)
|
void
Beendet den Echo-Austausch und der Vorgang „Wiederholen“ wird abgebrochen.
|
Öffentliche statische Funktionen |
|
---|---|
DefaultEventHandler(void *appState, EventType eventType, const InEventParam & inParam, OutEventParam & outParam)
|
void
Standard-Handler für WeaveEchoClient-API-Ereignisse.
|
Strebenklemmen |
|
---|---|
nl:: |
Eingabeparameter für das API-Ereignis WeaveEchoClient |
nl:: |
Ausgabeparameter an das API-Ereignis WeaveEchoClient. |
Öffentliche Typen
Ereignis-Callback
void(* EventCallback)(void *appState, EventType eventType, const InEventParam &inParam, OutEventParam &outParam)
EventType
EventType
Attribute | |
---|---|
kEvent_CommunicationError
|
Ein Kommunikationsfehler ist aufgetreten, während ein EchoRequest gesendet oder auf eine Antwort gewartet wurde. |
kEvent_DefaultCheck
|
Wird verwendet, um die korrekte standardmäßige Ereignisverarbeitung in der Anwendung zu prüfen. |
kEvent_PreparePayload
|
Die Anwendung wird aufgefordert, die Nutzlast für die Echo-Anfrage vorzubereiten. |
kEvent_RequestAborted
|
Ein laufenden Echo-Austausch wurde abgebrochen, weil eine neue Anfrage gesendet wurde. |
kEvent_RequestSent
|
Eine EchoRequest-Nachricht wurde an den Peer gesendet. |
kEvent_ResponseReceived
|
Vom Peer wurde eine EchoResponse-Nachricht empfangen. |
kEvent_ResponseTimeout
|
Es wurde keine EchoResponse empfangen. |
Status
State
Attribute | |
---|---|
kState_Idle
|
Das Clientobjekt ist inaktiv. |
kState_NotInitialized
|
Das Clientobjekt ist nicht initialisiert. |
kState_PreparingBinding
|
Das Clientobjekt wartet darauf, dass die Bindung bereit ist. |
kState_RequestInProgress
|
Eine EchoRequest-Nachricht wurde gesendet und das Clientobjekt wartet auf eine Antwort. |
kState_WaitingToSend
|
SendRepeating() wurde aufgerufen und das Client-Objekt wartet auf das nächste Senden eines EchoRequest. |
Öffentliche Attribute
App-Status
void * AppState
Ein Hinweis auf anwendungsspezifische Daten.
Öffentliche Funktionen
GetBindung
Binding * GetBinding( void ) const
Gibt einen Zeiger auf das Bindungsobjekt zurück, das mit dem WeaveEchoClient verknüpft ist.
GetEventCallback
EventCallback GetEventCallback( void ) const
Gibt einen Zeiger auf die API-Ereignis-Callback-Funktion zurück, die derzeit für das WeaveEchoClient-Objekt konfiguriert ist.
GetState
State GetState( void ) const
Rufen Sie den aktuellen Status des WeaveEchoClient-Objekts ab.
Init
WEAVE_ERROR Init( Binding *binding, EventCallback eventCallback, void *appState )
Initialisiere ein WeaveEchoClient-Objekt.
Initialisieren Sie ein WeaveEchoClient-Objekt, um Echo-Nachrichten an einen Peer zu senden.
Details | |||||||
---|---|---|---|---|---|---|---|
Parameter |
|
IsSendRwiederkehrend
bool IsSendRrepeating() const
Gibt „true“ zurück, wenn sich das WeaveEchoClient-Objekt derzeit im Sendewiederholmodus-Modus befindet.
Anfrage in Bearbeitung
bool RequestInProgress() const
Gibt „true“ zurück, wenn ein EchoRequest gesendet wurde und das WeaveEchoClient-Objekt auf eine Antwort wartet.
Senden
WEAVE_ERROR Send( void )
Sende eine EchoRequest-Nachricht an den Peer.
Mit dieser Methode wird eine EchoRequest-Nachricht an den Peer-Knoten gesendet. Wenn und wann eine entsprechende EchoResponse-Nachricht eingeht, wird sie über das ResponseReceived API-Ereignis an die Anwendung gesendet.
Beim Erstellen der EchoRequest-Nachricht stellt WeaveEchoClient über das PreparePayload API-Ereignis eine Anfrage zur Vorbereitung der Nutzlast der Nachricht bereit.
Wenn sich das Bindungsobjekt beim Aufrufen dieser Methode nicht im Status „Bereit“ befindet, wird eine Anfrage an die Methode Bindung::RequestPrepare() gestellt, um die On-Demand-Vorbereitung zu initiieren. Der Vorgang wird dann in die Warteschlange gestellt, bis der Vorgang abgeschlossen ist. Die maximale Tiefe dieser Warteschlange ist eins. Beim Aufrufen von Send() in der Warteschlange wird somit nur ein EchoRequest gesendet.
Wenn Send() aufgerufen wird, während sich WeaveEchoClient im Modus zum Senden von Wiederholungen befindet (d.h. aufgrund eines früheren Aufrufs von SendRepeating()), beschleunigt und zurückgesetzt sich der Sendezyklus, verlässt aber WeaveEchoClient nicht aus dem Modus „Wiederholen“.
Senden
WEAVE_ERROR Send( PacketBuffer *payloadBuf )
Eine EchoRequest-Nachricht mit einer bestimmten Nutzlast an den Peer senden.
Mit dieser Methode wird eine EchoRequest-Nachricht an den Peer-Knoten gesendet. Der Inhalt des bereitgestellten Nutzlastzwischenspeichers wird als Nutzlast der EchoRequest-Nachricht an den Peer gesendet. Wenn und wann eine entsprechende EchoResponse-Nachricht eingeht, wird sie über das ResponseReceived API-Ereignis an die Anwendung gesendet.
Beim Aufrufen dieser Methode wird die Eigentümerschaft des bereitgestellten Nutzlastpuffers an das WeaveEchoClient-Objekt übergeben, das für die Freigabe verantwortlich ist. Dies gilt unabhängig davon, ob die Methode erfolgreich abgeschlossen wurde oder ob ein Fehler aufgetreten ist.
Wenn sich das Bindungsobjekt beim Aufrufen dieser Methode nicht im Status „Bereit“ befindet, wird eine Anfrage an die Methode Bindung::RequestPrepare() gestellt, um die On-Demand-Vorbereitung zu initiieren. Der Vorgang wird dann in die Warteschlange gestellt, bis der Vorgang abgeschlossen ist. Die maximale Tiefe dieser Warteschlange ist eins. Beim Aufrufen von Send() in der Warteschlange wird somit nur ein EchoRequest gesendet.
Wenn Send() aufgerufen wird, während sich WeaveEchoClient im Modus zum Senden von Wiederholungen befindet (d.h. aufgrund eines früheren Aufrufs von SendRepeating()), beschleunigt und zurückgesetzt sich der Sendezyklus, verlässt aber WeaveEchoClient nicht aus dem Modus „Wiederholen“.
Details | |||
---|---|---|---|
Parameter |
|
Wiederkehrende senden
WEAVE_ERROR SendRepeating( uint32_t sendIntervalMS )
Senden Sie eine wiederkehrende Sequenz von EchoRequest-Nachrichten an den Peer.
Mit dieser Methode wird ein sich wiederholender Prozess gestartet, bei dem EchoRequest-Nachrichten an den Peer gesendet werden. Wenn EchoResponse-Nachrichten vom Peer empfangen werden, werden sie über das ResponseReceived API-Ereignis an die Anwendung gesendet.
Wenn SendRepeating() aufgerufen wird, wechselt WeaveEchoClient in den Sendewiederholmodus-Modus, in dem es verbleibt, bis Stop() aufgerufen wird oder ein Bindung-Fehler auftritt. Wenn Sie SendRepeating() mehrmals aufrufen, wird der Sendezyklus zurückgesetzt und das Intervall wird aktualisiert.
Das erste Senden einer Sequenz erfolgt, wenn SendRepeating() aufgerufen wird oder wenn Bindung bereit ist, nachdem SendRepeating() aufgerufen wird (siehe unten). Nachfolgende danach erfolgen im angegebenen Intervall.
Bei jedem Senden sendet WeaveEchoClient über das PreparePayload API-Ereignis eine Anfrage an die Anwendung, um die Nutzlast der Nachricht vorzubereiten.
Wenn sich das Bindungsobjekt beim Senden einer Nachricht nicht im Status „Bereit“ befindet, wird eine Anfrage an die Methode Bindung::RequestPrepare() gestellt, um die On-Demand-Vorbereitung zu initiieren. Weitere wiederkehrende Nachrichten werden pausiert, bis dieser Vorgang abgeschlossen ist. Wenn die Bindung on-demand nicht vorbereitet wird, verlässt WeaveEchoClient den Modus „Wiederholen“.
SetEventCallback
void SetEventCallback( EventCallback eventCallback )
Legt die API-Ereignis-Callback-Funktion für das WeaveEchoClient-Objekt fest.
Heruntergefahren
void Shutdown( void )
Herunterfahren eines zuvor initialisierten WeaveEchoClient-Objekts
Diese Methode kann nur aufgerufen werden, wenn die Methode Init() zuvor aufgerufen wurde.
Beenden
void Stop( void )
Beendet den Echo-Austausch und der Vorgang „Wiederholen“ wird abgebrochen.
Logo: WeaveEchoClient
WeaveEchoClient( void )
Öffentliche statische Funktionen
Standard-EventHandler
void DefaultEventHandler( void *appState, EventType eventType, const InEventParam & inParam, OutEventParam & outParam )
Standard-Handler für WeaveEchoClient-API-Ereignisse.
Die Anwendungen müssen diese Methode für alle API-Ereignisse aufrufen, die sie nicht erkennen oder verarbeiten. Die bereitgestellten Parameter müssen mit den Parametern übereinstimmen, die vom Clientobjekt an die Ereignis-Handler-Funktion übergeben werden.
Details | |||||||||
---|---|---|---|---|---|---|---|---|---|
Parameter |
|