nl:: Weave:: Profiles:: DataManagement_Current:: CommandSender
#include <src/lib/profiles/data-management/Current/CommandSender.h>
Riepilogo
Nota: questa lezione racchiude i dettagli del protocollo dell'invio dei comandi, semplificando i meccanismi coinvolti per le applicazioni. L'applicazione fornisce un PacketBuffer contenente il payload del comando e un set facoltativo di argomenti che alterano i contenuti dell'intestazione del comando e il comportamento del comando. L’utilità di questo wrapper per la gestione dei comandi è effettivamente limitata, principalmente a causa della complessità/flessibilità coinvolti nella convalida della sicurezza e nella serializzazione/deserializzazione dei dati.
I dettagli per la convalida dei comandi sono ancora da definire
Questa classe consente inoltre alle applicazioni di capire se i dati all'interno di un TraitDataSink associato hanno colto gli effetti collaterali del comando (in base alla versione fornita nella risposta del comando). L'applicazione è responsabile della gestione dell'archiviazione dell'oggetto.
Rilegatura Weave
Un oggetto di questa classe può essere inizializzato con un'associazione Weave, che fungerà da associazione predefinita da utilizzare per inviare comandi. L'utente può anche fornire un valore Binding per ogni chiamata di SendCommand(), che sostituirà il valore predefinito Binding. Non è necessario fornire un Binding predefinito, tuttavia qualsiasi associazione fornita a CommandSender deve essere già inizializzata.
EventCallback
L'utente deve definire una funzione di questo tipo se vuole essere aggiornato su eventi che si verificano dopo l'invio del comando (vedi "Eventi API" di seguito). Può essere NULL se all'utente non importa cosa succede dopo l'invio del comando.
Eventi API
Di seguito sono riportati i possibili esiti dopo l'invio di un comando Command:
CommunicationError
Si è verificato un errore durante la creazione o l'invio del comando o in attesa di una risposta. Esempi di errori che possono verificarsi durante l'attesa di una risposta sono gli errori chiave o la chiusura imprevista di una connessione. Il motivo dell'errore sarà riportato nell'argomento InEventParam del gestore EventCallback.
InProgressReceived
Il destinatario può inviare un messaggio "in corso" che indica che il comando è stato ricevuto, ma non è ancora stato completato. Al termine, il destinatario invierà una risposta o un report di stato. Invio di un messaggio "in corso" non è obbligatorio.
StatusReportReceived
La ricezione di uno StatusReport implica che si è verificato un errore durante l'elaborazione del Comando. È possibile accedere allo StatusReport tramite InEventParam.
ResponseReceived
La ricezione di una risposta implica che il destinatario Command abbia gestito correttamente il Comando. La risposta può contenere o meno un payload. Se l'applicazione desidera conservare il buffer di pacchetti, può chiamare ExchangeContext::AddRef() per incrementare il conteggio dei riferimenti.
Tipi pubblici |
|
---|---|
EventCallback)(void *const aAppState, EventType aEvent, const InEventParam &aInParam, OutEventParam &aOutEventParam)
|
typedefvoid(*
|
EventType
|
enum |
Attributi pubblici |
|
---|---|
mAppState = NULL
|
void *
|
mSyncronizedTraitState = NULL
|
Funzioni statiche pubbliche |
|
---|---|
DefaultEventHandler(void *aAppState, EventType aEvent, const InEventParam & aInParam, OutEventParam & aOutParam)
|
void
|
Funzioni pubbliche |
|
---|---|
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
|
Structs |
|
---|---|
nl:: |
Dati restituiti al mittente dal destinatario del comando personalizzato. |
nl:: |
Dati restituiti a un oggetto CommandSender da una funzione EventCallback. |
nl:: |
Incapsula gli argomenti da passare in SendCommand(). |
nl:: |
Tipi pubblici
EventCallback
void(* EventCallback)(void *const aAppState, EventType aEvent, const InEventParam &aInParam, OutEventParam &aOutEventParam)
EventType
EventType
Attributi pubblici
mAppState
void * mAppState = NULL
mSyncronizedTraitState
SynchronizedTraitState * mSyncronizedTraitState = NULL
Funzioni statiche pubbliche
DefaultEventHandler
void DefaultEventHandler( void *aAppState, EventType aEvent, const InEventParam & aInParam, OutEventParam & aOutParam )
Funzioni pubbliche
Chiudi
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 )