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 de ExchangeContext e validação do autenticador, deixando a manipulação dos PackageBuffers para a camada do aplicativo. 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

Para ajustar o tempo de retransmissão das mensagens "Em andamento", "Relatório de status" e "Resposta", a camada do aplicativo precisaria lidar com o objeto ExchangeContext de alguma forma. A prática recomendada ainda não foi definida, mas a camada do aplicativo tem três opções:

1) Adquirir o contexto do Exchange pelo GetExchangeContext e avaliá-lo/ajustá-lo diretamente. 2) Pré-alocar e configurar uma Binding durante a inicialização, antes que qualquer comando chegue, e configurá-la corretamente 3) Criar uma Binding temporária usando a função BindingPool::NewResponderBindingFromExchangeContext

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

O buffer do pacote de solicitação também não é armazenado nesse identificador, porque não há uso óbvio dele. Isso é especialmente verdadeiro se a camada do aplicativo puder lidar com esse comando e enviar a resposta diretamente.

A camada de aplicativo receberia o buffer de pacote do mesmo callback em que recebe esse identificador de comando. Se ele decidir processar esse comando de maneira assíncrona, terá que armazenar o identificador do 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 tempo de ação é válido.

kCommandFlag_ExpiryTimeValid

Defina quando o prazo de validade será válido.

kCommandFlag_InitiationTimeValid

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