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

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

摘要

注意:此类旨在隐藏命令处理中的某些细节。已决定隐藏 ExchangeContext 和身份验证器验证的详细信息,而将 PacketBuffer 处理留在应用层处理。 此封装容器在命令处理方面的用途确实有限,主要是因为安全验证和数据序列化/反序列化的复杂性/灵活性。

命令验证的详细信息仍待定

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

1) 通过 GetExchangeContext 获取 Exchange Context,并直接对其进行评估/调整。2) 在启动期间(在任何命令到达之前)预分配和配置绑定,并进行适当配置 3) 使用此函数 BindingPool::NewReplyerBindingFromExchangeContext 创建临时 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
检索此传入命令使用的交换上下文对象。
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 

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

具体说明
返回值
指向此传入命令使用的交换上下文对象的指针

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
)