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) 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

Strutture

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 a 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
)

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
)

SetSynchronizedTraitState

void SetSynchronizedTraitState(
  SynchronizedTraitState *aTraitState
)