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

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

摘要

注意:此类旨在隐藏命令处理中的某个细节。已决定隐藏 ExchangeContext 和身份验证器验证的详细信息,同时将处理 PacketBuffers 交由应用层处理。 这个封装命令的效用确实有限,这主要是因为安全验证和数据序列化/反序列化所涉及的复杂性/灵活性。

命令验证的详细信息仍处于待定状态

要调整“进行中”、“状态报告”和“响应”消息的重新传输时间,应用层需要以某种方式处理 ExchangeContext 对象。最佳实践仍然待定,但应用层有以下三个选项:

1) 通过 GetExchangeContext 获取 Exchange 上下文,然后直接对其进行评估/调整。2) 在启动过程中,在发出任何命令之前预先分配和配置 Binding,并进行正确配置 3) 使用此函数 BindingPool::NewResponderBindingFromExchangeContext 创建临时 Binding

在 (2) 和 (3) 中,应用层都可以通过 Binding::ConfigureExistingExchangeContext 强制执行安全/时间设置。Binding 绝不会用于为自定义命令生成新的交换上下文,因此不必存储在此句柄中。

请求数据包缓冲区也不会存储在此句柄中,因为没有明显的用法。如果应用层能够处理此命令并直接发出响应,这一点尤为重要。

应用层将从收到此命令句柄的同一回调中接收数据包缓冲区。如果它决定以异步方式处理此命令,则必须同时存储命令句柄和数据包缓冲区。

公共类型

CommandFlags{
  kCommandFlag_MustBeVersionValid = 0x0001,
  kCommandFlag_InitiationTimeValid = 0x0002,
  kCommandFlag_ActionTimeValid = 0x0004,
  kCommandFlag_ExpiryTimeValid = 0x0008,
  kCommandFlag_IsOneWay = 0x0010
}
枚举
Command 标志位。
CommandFlags typedef
Command 标志位。

公共属性

actionTimeMicroSecond
int64_t
commandType
uint64_t
expiryTimeMicroSecond
int64_t
initiationTimeMicroSecond
int64_t
mustBeVersion
uint64_t

公共函数

Close(void)
void
GetExchangeContext(void) const
检索此传入命令使用的 Exchange 上下文对象。
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)

公共类型

CommandFlags

 CommandFlags

Command 标志位。

属性
kCommandFlag_ActionTimeValid

设置操作时间有效的时间。

kCommandFlag_ExpiryTimeValid

在过期时间有效时设置。

kCommandFlag_InitiationTimeValid

在初始化时间有效时设置。

kCommandFlag_IsOneWay

当命令为单向时设置。

kCommandFlag_MustBeVersionValid

在版本字段有效时设置。

公共属性

actionTimeMicroSecond

int64_t actionTimeMicroSecond

commandType

uint64_t commandType

expiryTimeMicroSecond

int64_t expiryTimeMicroSecond

initiationTimeMicroSecond

int64_t initiationTimeMicroSecond

mustBeVersion

uint64_t mustBeVersion

公共函数

关闭

void Close(
  void
)

GetExchangeContext

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

检索此传入命令使用的 Exchange 上下文对象。

详细信息
返回值
指向此传入命令使用的 Exchange 上下文对象的指针

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
)