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