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