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

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

Resumo

Observação:essa classe foi projetada para ocultar um determinado detalhe no processamento de comandos. Foi tomada a decisão de ocultar os detalhes do ExchangeContext e da validação do autenticador, deixando o processamento de BundlesBuffers para a camada do aplicativo. A utilidade desse wrapper para a manipulação de comandos é realmente limitada, principalmente devido à complexidade/flexibilidade envolvida na validação da segurança e serialização/desserialização de dados.

Os detalhes da validação do comando ainda não foram definidos

Para ajustar o tempo de retransmissão para as mensagens "Em andamento", "Relatório de status" e "Resposta", a camada do aplicativo teria que lidar com o objeto ExchangeContext. A prática recomendada ainda é a ser definida, mas a camada do aplicativo tem estas três opções:

1) Adquira o contexto do Exchange por meio do GetExchangeContext e o avalie/ajuste diretamente. 2) Pré-alocar e configurar uma Binding durante a inicialização, antes da chegada de qualquer comando, e configurá-la corretamente 3) Criar uma Binding temporária usando esta função BindingPool::NewResponderBindingFrom ExchangeContext

Em (2) e (3), a camada do aplicativo pode impor a configuração de segurança/tempo usando Binding::Configure Existing ExchangeContext. Como o Binding nunca é usado para gerar novos contextos de troca para comandos personalizados, ele não precisa ser armazenado nesse identificador.

O buffer de pacote de solicitação também não é armazenado nesse identificador, porque não há uso óbvio dele. Isso acontece principalmente quando a camada do aplicativo consegue processar esse comando e enviar a resposta diretamente.

A camada do aplicativo receberia o buffer de pacote do mesmo callback que recebe esse identificador de comando. Se ele decidir processar esse comando de maneira assíncrona, ele terá que armazenar o identificador de comando e o buffer de pacote.

Tipos públicos

CommandFlags{
  kCommandFlag_MustBeVersionValid = 0x0001,
  kCommandFlag_InitiationTimeValid = 0x0002,
  kCommandFlag_ActionTimeValid = 0x0004,
  kCommandFlag_ExpiryTimeValid = 0x0008,
  kCommandFlag_IsOneWay = 0x0010
}
enum
Os bits de sinalização Command.
CommandFlags typedef
Os bits de sinalização Command.

Atributos públicos

actionTimeMicroSecond
int64_t
commandType
uint64_t
expiryTimeMicroSecond
int64_t
initiationTimeMicroSecond
int64_t
mustBeVersion
uint64_t

Funções públicas

Close(void)
void
GetExchangeContext(void) const
Recupere o objeto de contexto de troca usado por este comando recebido.
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)

Tipos públicos

CommandFlags

 CommandFlags

Os bits de sinalização Command.

Propriedades
kCommandFlag_ActionTimeValid

Defina quando o momento da ação é válido.

kCommandFlag_ExpiryTimeValid

Defina quando o tempo de expiração é válido.

kCommandFlag_InitiationTimeValid

Defina quando o horário de inicialização é válido.

kCommandFlag_IsOneWay

Defina quando o comando é unidirecional.

kCommandFlag_MustBeVersionValid

Defina quando o campo de versão é válido.

CommandFlags

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

Os bits de sinalização Command.

Atributos públicos

actionTimeMicroSecond

int64_t actionTimeMicroSecond

commandType

uint64_t commandType

expiryTimeMicroSecond

int64_t expiryTimeMicroSecond

initiationTimeMicroSecond

int64_t initiationTimeMicroSecond

mustBeVersion

uint64_t mustBeVersion

Funções públicas

Fechar

void Close(
  void
)

GetExchangeContext

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

Recupere o objeto de contexto de troca usado por este comando recebido.

Detalhes
Retorna
Um ponteiro para o objeto de contexto de troca usado por este comando recebido

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
)