nl:: Weave:: Profiles:: DataManagement_Current:: CommandSender
#include <src/lib/profiles/data-management/Current/CommandSender.h>
Zusammenfassung
Hinweis:Diese Klasse enthält die Protokolldetails zum Senden von Befehlen, wodurch der Mechanismus für Anwendungen vereinfacht wird. Die Anwendung stellt einen PacketBuffer bereit, der die Nutzlast des Befehls sowie eine optionale Reihe von Argumenten enthält, die den Inhalt des Befehlsheaders sowie das Verhalten des Befehls ändern. Der Nutzen dieses Wrappers für die Befehlsverarbeitung ist in der Tat begrenzt, hauptsächlich aufgrund der Komplexität/Flexibilität der Sicherheitsvalidierung und Datenserialisierung/Deserialisierung.
Die Details für die Befehlsvalidierung stehen noch aus.
Diese Klasse hilft Anwendungen auch, abzuleiten, ob die Daten innerhalb einer zugehörigen TraitDataSink die Nebenwirkungen des Befehls aufgeholt haben (basierend auf der Version, die in der Befehlsantwort bereitgestellt wird). Die Anwendung ist für die Verwaltung des Speichers dieses Objekts verantwortlich.
Weave-Bindung
Ein Objekt dieser Klasse kann mit einer Weave-Bindung initialisiert werden, die als Standard-Bindung zum Senden von Befehlen dient. Der Nutzer kann auch ein Binding für jeden Aufruf von SendCommand() angeben, wodurch die standardmäßige Binding überschrieben wird. Es ist nicht erforderlich, eine Standard-Binding anzugeben. Jede an CommandSender bereitgestellte Bindung muss jedoch bereits initialisiert sein.
EventCallback
Der Nutzer muss eine Funktion dieses Typs definieren, wenn er über Ereignisse informiert werden möchte, die nach dem Senden des Befehls auftreten (siehe „API-Ereignisse“ unten). Dieser Wert kann NULL sein, wenn es für den Nutzer nicht wichtig ist, was nach dem Senden des Befehls geschieht.
API-Ereignisse
Folgende Ereignisse sind mögliche Ergebnisse nach dem Senden eines Command:
CommunicationError
Beim Erstellen oder Senden von Command (Befehl) oder beim Warten auf eine Antwort ist ein Fehler aufgetreten. Beispiele für Fehler, die beim Warten auf eine Antwort auftreten können, sind wichtige Fehler oder das unerwartete Schließen einer Verbindung. Die Fehlerursache ist im Argument InEventParam für den EventCallback-Handler enthalten.
InProgressReceived
Der Empfänger kann eine Nachricht senden, die angezeigt wird, wenn der Befehl empfangen, aber noch nicht abgeschlossen wurde. Anschließend sendet der Empfänger eine Antwort oder einen StatusReport. Es ist nicht erforderlich, die Nachricht „In Bearbeitung“ zu senden.
StatusReportReceived
Der Erhalt eines StatusReport deutet darauf hin, dass bei der Verarbeitung von Command ein Fehler aufgetreten ist. Der StatusReport kann über InEventParam aufgerufen werden.
ResponseReceived
Der Erhalt einer Antwort deutet darauf hin, dass der Command-Empfänger den Command erfolgreich ausgeführt hat. Die Antwort kann eine Nutzlast enthalten oder nicht. Wenn die Anwendung den Paketpuffer beibehalten möchte, kann sie ExchangeContext::AddRef() aufrufen, um die Anzahl der Verweise zu erhöhen.
Öffentliche Typen |
|
---|---|
EventCallback)(void *const aAppState, EventType aEvent, const InEventParam &aInParam, OutEventParam &aOutEventParam)
|
typedefvoid(*
|
EventType
|
enum |
Öffentliche Attribute |
|
---|---|
mAppState = NULL
|
void *
|
mSyncronizedTraitState = NULL
|
Öffentliche statische Funktionen |
|
---|---|
DefaultEventHandler(void *aAppState, EventType aEvent, const InEventParam & aInParam, OutEventParam & aOutParam)
|
void
|
Öffentliche Funktionen |
|
---|---|
Close(bool aAbortNow)
|
void
|
Init(nl::Weave::Binding *aBinding, const EventCallback aEventCallback, void *const aAppState)
|
|
SendCommand(nl::Weave::PacketBuffer *aPayload, nl::Weave::Binding *aBinding, ResourceIdentifier & aResourceId, uint32_t aProfileId, uint32_t aCommandType)
|
|
SendCommand(nl::Weave::PacketBuffer *aPayload, nl::Weave::Binding *aBinding, SendParams & aSendParams)
|
|
SetSynchronizedTraitState(SynchronizedTraitState *aTraitState)
|
void
|
Strukturen |
|
---|---|
nl:: |
Daten, die der Empfänger des benutzerdefinierten Befehls an den Absender zurückgibt. |
nl:: |
Daten, die von einer EventCallback-Funktion an ein CommandSender-Objekt zurückgegeben werden. |
nl:: |
Kapselt Argumente ein, die an SendCommand() übergeben werden sollen |
nl:: |
Öffentliche Typen
EventCallback
void(* EventCallback)(void *const aAppState, EventType aEvent, const InEventParam &aInParam, OutEventParam &aOutEventParam)
EventType
EventType
Öffentliche Attribute
mAppState
void * mAppState = NULL
mSyncronizedTraitState
SynchronizedTraitState * mSyncronizedTraitState = NULL
Öffentliche statische Funktionen
DefaultEventHandler
void DefaultEventHandler( void *aAppState, EventType aEvent, const InEventParam & aInParam, OutEventParam & aOutParam )
Öffentliche Funktionen
Schließen
void Close( bool aAbortNow )
Init
WEAVE_ERROR Init( nl::Weave::Binding *aBinding, const EventCallback aEventCallback, void *const aAppState )
SendCommand
WEAVE_ERROR SendCommand( nl::Weave::PacketBuffer *aPayload, nl::Weave::Binding *aBinding, ResourceIdentifier & aResourceId, uint32_t aProfileId, uint32_t aCommandType )
SendCommand
WEAVE_ERROR SendCommand( nl::Weave::PacketBuffer *aPayload, nl::Weave::Binding *aBinding, SendParams & aSendParams )