nl::Weave::Profiles::DataManagement_Current::Command

#include <src/lib/profiles/data-management/Current/Command.h>

Riepilogo

Nota: questa classe è progettata per nascondere un determinato dettaglio nella gestione dei comandi. È stata presa la decisione di nascondere i dettagli di ExchangeContext e della convalida dell'autenticatore, lasciando la gestione di PacketBuffers al livello dell'applicazione. 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

Per regolare i tempi della ritrasmissione per il messaggio In corso, il report sullo stato e anche il messaggio di risposta, il livello di applicazione deve in qualche modo gestire l'oggetto ExchangeContext. La best practice è ancora da definire, ma il livello di applicazione prevede tre opzioni:

1) Acquisisci contesto di scambio tramite GetExchangeContext e valutalo/modificalo direttamente. 2) Pre-alloca e configura un Binding durante l'avvio, prima che arrivi qualsiasi comando, e configuralo correttamente 3) Crea un Binding temporaneo utilizzando questa funzione BindingPool::NewResponderBindingFromExchangeContext

In entrambi i casi (2) e (3), il livello dell'applicazione può applicare l'impostazione di sicurezza/temporanea tramite Binding::ConfiguraExampleExchangeContext. L'elemento Binding non viene mai utilizzato per generare nuovi contesti di scambio per i comandi personalizzati, quindi non deve essere archiviato all'interno di questo handle.

Anche il buffer dei pacchetti della richiesta non è archiviato all'interno di questo handle, poiché non è evidente che non è utilizzato. Ciò è particolarmente vero se il livello dell'applicazione può gestire questo comando e inviare direttamente la risposta.

Il livello dell'applicazione riceverebbe il buffer dei pacchetti dallo stesso callback a cui riceve questo handle. Se decidesse di gestire questo comando in modo asincrono, dovrà archiviare sia l'handle di comando sia il buffer dei pacchetti.

Tipi pubblici

CommandFlags{
  kCommandFlag_MustBeVersionValid = 0x0001,
  kCommandFlag_InitiationTimeValid = 0x0002,
  kCommandFlag_ActionTimeValid = 0x0004,
  kCommandFlag_ExpiryTimeValid = 0x0008,
  kCommandFlag_IsOneWay = 0x0010
}
enum
I bit del flag Command.
CommandFlags typedef
I bit del flag Command.

Attributi pubblici

actionTimeMicroSecond
int64_t
commandType
uint64_t
expiryTimeMicroSecond
int64_t
initiationTimeMicroSecond
int64_t
mustBeVersion
uint64_t

Funzioni pubbliche

Close(void)
void
GetExchangeContext(void) const
Recupera l'oggetto di contesto dello scambio utilizzato da questo comando in entrata.
IsActionTimeValid(void) const
bool
IsExpiryTimeValid(void) const
bool
IsInitiationTimeValid(void) const
bool
IsMustBeVersionValid(void) const
bool
IsOneWay(void) const
bool
SendError(uint32_t aProfileId, uint16_t aStatusCode, WEAVE_ERROR aWeaveError)
SendInProgress(void)
SendResponse(uint32_t traitInstanceVersion, nl::Weave::System::PacketBuffer *apPayload)
ValidateAuthenticator(nl::Weave::System::PacketBuffer *aRequestBuffer)

Tipi pubblici

CommandFlags

 CommandFlags

I bit del flag Command.

Proprietà
kCommandFlag_ActionTimeValid

Imposta quando la data e l'ora dell'azione è valida.

kCommandFlag_ExpiryTimeValid

Imposta quando la data di scadenza è valida.

kCommandFlag_InitiationTimeValid

Imposta quando il tempo di inizializzazione è valido.

kCommandFlag_IsOneWay

Impostato quando il comando è unidirezionale.

kCommandFlag_MustBeVersionValid

Imposta il momento in cui il campo della versione è valido.

CommandFlags

enum nl::Weave::Profiles::DataManagement_Current::Command::CommandFlags CommandFlags

I bit del flag Command.

Attributi pubblici

actionTimeMicroSecond

int64_t actionTimeMicroSecond

commandType

uint64_t commandType

expiryTimeMicroSecond

int64_t expiryTimeMicroSecond

initiationTimeMicroSecond

int64_t initiationTimeMicroSecond

mustBeVersion

uint64_t mustBeVersion

Funzioni pubbliche

Chiudi

void Close(
  void
)

GetExchangeContext

nl::Weave::ExchangeContext * GetExchangeContext(
  void
) const 

Recupera l'oggetto di contesto dello scambio utilizzato da questo comando in entrata.

Dettagli
Restituisce
Un puntatore all'oggetto di contesto dello scambio utilizzato da questo comando in entrata

IsActionTimeValid

bool IsActionTimeValid(
  void
) const 

IsExpiryTimeValid

bool IsExpiryTimeValid(
  void
) const 

IsInitiationTimeValid

bool IsInitiationTimeValid(
  void
) const 

IsMustBeVersionValid

bool IsMustBeVersionValid(
  void
) const 

IsOneWay

bool IsOneWay(
  void
) const 

SendError

WEAVE_ERROR SendError(
  uint32_t aProfileId,
  uint16_t aStatusCode,
  WEAVE_ERROR aWeaveError
)

SendInProgress

WEAVE_ERROR SendInProgress(
  void
)

SendResponse

WEAVE_ERROR SendResponse(
  uint32_t traitInstanceVersion,
  nl::Weave::System::PacketBuffer *apPayload
)

ValidateAuthenticator

WEAVE_ERROR ValidateAuthenticator(
  nl::Weave::System::PacketBuffer *aRequestBuffer
)