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 die Mechanismen für Anwendungen vereinfacht werden. Die Anwendung bietet einen PacketBuffer, der die Nutzlast des Befehls sowie einen optionalen Satz von Argumenten enthält, die den Inhalt des Befehlsheaders und das Verhalten des Befehls ändern. Der Nutzen dieses Wrappers für die Befehlsverarbeitung ist tatsächlich begrenzt, hauptsächlich aufgrund der Komplexität/Flexibilität der Sicherheitsvalidierung und Datenserialisierung/Deserialisierung.
Details zur Befehlsvalidierung stehen noch aus
Mit dieser Klasse können Anwendungen außerdem ableiten, ob die Daten in einer verknüpften TraitDataSink die Nebeneffekte des Befehls abgerufen haben (basierend auf der in der Befehlsantwort angegebenen Version). Die Anwendung ist für die Verwaltung des Speichers dieses Objekts verantwortlich.
Weave-Bindung
Ein Objekt dieser Klasse kann mit einer Weave-Binding initialisiert werden, die als standardmäßige Binding zum Senden von Befehlen dient. Der Nutzer kann auch ein Binding für jeden Aufruf von SendCommand() bereitstellen, wodurch die Standardeinstellung 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 eintreten (siehe „API-Ereignisse“ unten). Dieser kann NULL sein, wenn es dem Nutzer egal ist, was nach dem Senden des Befehls geschieht.
API-Ereignisse
Folgende Ereignisse sind möglich, nachdem ein Command gesendet wurde:
CommunicationError
Beim Erstellen oder Senden des Command-Objekts 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 an den EventCallback-Handler enthalten.
InProgressReceived
Der Empfänger kann eine Nachricht mit dem Status "In Bearbeitung" senden. die anzeigt, dass der Command empfangen wurde, aber noch nicht abgeschlossen ist. Anschließend sendet der Empfänger eine Antwort oder einen Statusbericht. „In Bearbeitung“ senden ist nicht erforderlich.
StatusReportReceived
Der Empfang eines Statusberichts deutet darauf hin, dass bei der Verarbeitung des Befehls ein Fehler aufgetreten ist. Der StatusReport kann über den InEventParam aufgerufen werden.
ResponseReceived
Wenn Sie eine Antwort erhalten, bedeutet das, dass der Empfänger von Befehl den Befehl erfolgreich ausgeführt hat. Die Antwort kann eine Nutzlast enthalten oder nicht. Wenn die Anwendung den Paketzwischenspeicher 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)
|
typedef.void(*
|
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 vom Empfänger des benutzerdefinierten Befehls an den Absender zurückgegeben werden. |
nl:: |
Daten, die von einer EventCallback-Funktion an ein CommandSender-Objekt zurückgegeben werden. |
nl:: |
Kapselt Argumente, 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 )