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

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

Resumo

Observação: essa classe encapsula os detalhes do protocolo de envio de comandos, simplificando a mecânica envolvida dos aplicativos. O aplicativo fornece um PackageBuffer contendo o payload do comando e um conjunto opcional de argumentos que alteram o conteúdo do cabeçalho de comando e o comportamento do comando. A utilidade deste wrapper para o tratamento de comandos é de fato limitada, principalmente devido à complexidade/flexibilidade envolvida na validação de segurança e na serialização/desserialização de dados.

Os detalhes da validação do comando ainda serão definidos

Essa classe também ajuda os aplicativos a inferir se os dados em um TraitDataSink associado foram atualizados para os efeitos colaterais do comando (com base na versão fornecida na resposta do comando). O aplicativo é responsável por gerenciar o armazenamento desse objeto.

Vinculação de tecido

Um objeto dessa classe pode ser inicializado com uma Binding do Weave, que servirá como a vinculação padrão a ser usada para enviar comandos. O usuário também pode fornecer uma Binding para cada chamada de SendCommand(), que substituirá a Binding padrão. Não é necessário fornecer uma Binding padrão. No entanto, qualquer vinculação fornecida a CommandSender já precisa ser inicializada.

Callback de evento

O usuário precisa definir uma função desse tipo se quiser ser atualizado sobre eventos que acontecem depois do envio do comando (consulte "Eventos de API" abaixo). Pode ser NULL se o usuário não se importar com o que acontece depois que o comando é enviado.

Eventos da API

Os seguintes eventos são os resultados possíveis após o envio de um Command:

Erro de comunicação

Ocorreu um erro ao formar ou enviar o Command ou ao aguardar uma resposta. Exemplos de erros que podem ocorrer durante a espera de uma resposta são os principais erros ou o encerramento inesperado de uma conexão. O motivo do erro estará no argumento InEventParam para o manipulador EventCallback.

InProgressReceived

O destinatário pode enviar uma mensagem 'em andamento' que significa que o Command foi recebido, mas ainda não foi concluído. Após a conclusão, o destinatário enviará uma resposta ou um statusReport. Não é necessário enviar uma mensagem 'em andamento'

StatusReportReceived

O recebimento de um StatusReport implica que houve um erro no processamento do Command. O StatusReport pode ser acessado pelo InEventParam.

Resposta recebida

O recebimento de uma resposta implica que o destinatário do Command processou o Command corretamente. A resposta pode conter um payload ou não. Se o aplicativo quiser manter o buffer de pacote, ele pode chamar ExchangeContext::AddRef() para incrementar a contagem de referência.

Tipos públicos

EventCallback)(void *const aAppState, EventType aEvent, const InEventParam &aInParam, OutEventParam &aOutEventParam) typedef
void(*
EventType tipo enumerado

Atributos públicos

mAppState = NULL
void *
mSyncronizedTraitState = NULL

Funções estáticas públicas

DefaultEventHandler(void *aAppState, EventType aEvent, const InEventParam & aInParam, OutEventParam & aOutParam)
void

Funções públicas

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

Estruturas

nl::Weave::Profiles::DataManagement_Current::CommandSender::InEventParam

Dados retornados ao remetente pelo destinatário do comando personalizado.

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

Dados retornados de volta para um objeto CommandSender de uma função EventCallback.

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

Encapsula argumentos a serem passados para SendCommand().

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

Tipos públicos

Callback de evento

void(* EventCallback)(void *const aAppState, EventType aEvent, const InEventParam &aInParam, OutEventParam &aOutEventParam)

EventType

 EventType

Atributos públicos

Estado do aplicativo

void * mAppState = NULL

mSyncronizedTraitState

SynchronizedTraitState * mSyncronizedTraitState = NULL

Funções estáticas públicas

Gerenciador de eventos padrão

void DefaultEventHandler(
  void *aAppState,
  EventType aEvent,
  const InEventParam & aInParam,
  OutEventParam & aOutParam
)

Funções públicas

Fechar

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
)