nl:: Weave:: Profiles:: DataManagement_Current:: CommandSender
#include <src/lib/profiles/data-management/Current/CommandSender.h>
Resumo
Observação: esta classe encapsula os detalhes de protocolo de envio de comandos, simplificando a mecânica envolvida nos aplicativos. O aplicativo fornece um PackageBuffer com o payload do comando, bem como um conjunto opcional de argumentos que alteram o conteúdo do cabeçalho do comando, bem como o comportamento dele. A utilidade desse wrapper para o manuseio de comandos é de fato limitada devido principalmente à 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 não foram definidos
Essa classe também ajuda os aplicativos a inferir se os dados em um TraitDataSink associado encontram os efeitos colaterais do comando (com base na versão fornecida na resposta ao comando). O aplicativo é responsável por gerenciar o armazenamento desse objeto.
Vinculação do Weave
Um objeto desta classe pode ser inicializado com uma Binding do Weave, que servirá como a Binding padrão a ser usada para enviar comandos. O usuário também pode fornecer um objeto Binding para cada chamada de SendCommand(), que modificará a classe Binding padrão. Não é necessário fornecer uma Binding padrão. No entanto, qualquer vinculação fornecida ao CommandSender já precisa ter sido inicializada.
EventCallback
O usuário precisa definir uma função desse tipo se quiser receber atualizações sobre eventos que acontecem após o envio do comando (consulte "Eventos de API" abaixo). Pode ser NULL se o usuário não se importar com o que acontece depois do envio do comando.
Eventos da API
Os seguintes eventos são os possíveis resultados depois de enviar um Command:
CommunicationError
Ocorreu um erro ao formar ou enviar o Command ou ao aguardar uma resposta. Exemplos de erros que podem ocorrer ao aguardar uma resposta são erros de chave ou fechamento inesperado de uma conexão. O motivo do erro será exibido no argumento InEventParam para o gerenciador EventCallback.
InProgressReceived
O destinatário pode enviar uma mensagem que significa que o Command foi recebido, mas ainda não concluído. Após a conclusão, o destinatário enviará uma Resposta ou StatusReport. Envio de uma mensagem "em andamento" não é necessária.
StatusReportReceived
O recebimento de um StatusReport implica que houve um erro no processamento do Command. O StatusReport pode ser acessado por meio do InEventParam.
ResponseReceived
Receber uma resposta implica que o destinatário Command processou o Command. A resposta pode conter ou não um payload. Se o aplicativo quiser manter o buffer de pacote, ele poderá chamar ExchangeContext::AddRef() para incrementar a contagem de referências.
Tipos públicos |
|
---|---|
EventCallback)(void *const aAppState, EventType aEvent, const InEventParam &aInParam, OutEventParam &aOutEventParam)
|
typedefvoid(*
|
EventType
|
enum |
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:: |
Dados retornados ao remetente pelo destinatário do comando personalizado. |
nl:: |
Dados retornados de volta para um objeto CommandSender por uma função EventCallback. |
nl:: |
Encapsula argumentos a serem passados para SendCommand(). |
nl:: |
Tipos públicos
EventCallback
void(* EventCallback)(void *const aAppState, EventType aEvent, const InEventParam &aInParam, OutEventParam &aOutEventParam)
EventType
EventType
Atributos públicos
mAppState
void * mAppState = NULL
mSyncronizedTraitState
SynchronizedTraitState * mSyncronizedTraitState = NULL
Funções estáticas públicas
DefaultEventHandler
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 )