nl:: Weave:: Profiles:: DataManagement_Current:: CommandSender
#include <src/lib/profiles/data-management/Current/CommandSender.h>
Riepilogo
Nota: questa classe racchiude i dettagli del protocollo per l'invio dei comandi, semplificando i meccanismi coinvolti per le applicazioni. L'applicazione fornisce un PacketBuffer contenente il payload del comando, nonché un insieme 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 è infatti limitata, principalmente a causa della complessità/flessibilità implicata nella convalida della sicurezza e nella serializzazione/de-serializzazione dei dati.
I dettagli per la convalida del comando sono ancora da definire
Questa classe consente inoltre alle applicazioni di dedurre se i dati all'interno di un TraitDataSink associato hanno raggiunto gli effetti collaterali del comando (in base alla versione fornita nella risposta del comando). L'applicazione è responsabile della gestione dell'archiviazione di quell'oggetto.
Rilegatura tessuto
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'associazione a ogni chiamata di SendCommand(), che sostituirà l'Binding predefinita. Non è necessario fornire un'associazione predefinita; tuttavia, qualsiasi associazione fornita a CommandSender deve essere già stata inizializzata.
EventCallback
L'utente deve definire una funzione di questo tipo se vuole essere aggiornato sugli 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
I seguenti eventi sono i possibili risultati dopo l'invio di un Command:
CommunicationError
Si è verificato un errore durante la creazione o l'invio del comando o durante l'attesa di una risposta. Esempi di errori che possono verificarsi durante l'attesa di una risposta sono errori chiave o chiusura imprevista di una connessione. Il motivo dell'errore sarà contenuto 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 completato. Al termine, il destinatario invierà una risposta o un report sullo stato. Non è necessario inviare un messaggio "In corso".
StatusReportReceived
La ricezione di uno StatusReport implica che si sia verificato un errore durante l'elaborazione del Command. È possibile accedere a StatusReport tramite InEventParam.
ResponseReceived
La ricezione di una risposta implica che il destinatario per Comando ha gestito correttamente Comando. La risposta può contenere o meno un payload. Se l'applicazione vuole mantenere il buffer dei pacchetti, può chiamare ExchangeContext::AddRef() per incrementare il conteggio di riferimento.
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
|
Strutture |
|
---|---|
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 a 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 )
Inizia
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 )