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) typedef
void(*
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::Weave::Profiles::DataManagement_Current::CommandSender::InEventParam

Dati restituiti al mittente dal destinatario del comando personalizzato.

nl::Weave::Profiles::DataManagement_Current::CommandSender::OutEventParam

Dati restituiti a un oggetto CommandSender da una funzione EventCallback.

nl::Weave::Profiles::DataManagement_Current::CommandSender::SendParams

Incapsula gli argomenti da passare in SendCommand().

nl::Weave::Profiles::DataManagement_Current::CommandSender::SynchronizedTraitState

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
)

SetSynchronizedTraitState

void SetSynchronizedTraitState(
  SynchronizedTraitState *aTraitState
)