NL::编织::简介:: DataManagement_Current::命令

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

概括

注:该课程旨在隐藏命令处理某个细节。已经作出决定要隐藏的细节ExchangeContext和认证验证,同时使PacketBuffers的处理到应用层。这个围绕命令处理的包装器的效用确实有限,主要是由于安全验证和数据序列化/反序列化所涉及的复杂性/灵活性。

命令验证的细节仍待定

要调整正在进行中的重发时间,状态报告,并响应消息,在应用层会以某种方式与处理ExchangeContext对象。最佳实践还是TBD,但是应用层有这三个选择:

1)获取通过Exchange语境GetExchangeContext和直接评估/调整。 2)预分配和配置绑定引导期间,任何命令到达前,并配置得当3)创建一个临时绑定使用此功能BindingPool :: NewResponderBindingFromExchangeContext

在 (2) 和 (3) 中,应用层可以通过 Binding::ConfigureExistingExchangeContext 强制执行安全/时间设置。该绑定从不用于生成自定义命令新的交流环境,所以它并没有被存储在该手柄内。

请求数据包缓冲区也不存储在这个句柄中,因为没有明显的用途。如果应用层可以处理此命令并直接发送响应,则尤其如此。

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

公共类型

CommandFlags {
kCommandFlag_MustBeVersionValid = 0x0001,
kCommandFlag_InitiationTimeValid = 0x0002,
kCommandFlag_ActionTimeValid = 0x0004,
kCommandFlag_ExpiryTimeValid = 0x0008,
kCommandFlag_IsOneWay = 0x0010
}
枚举
命令标志位。
CommandFlags类型定义
命令标志位。

公共属性

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

命令标志位。

特性
kCommandFlag_ActionTimeValid

当动作时间有效时设置。

kCommandFlag_ExpiryTimeValid

当到期时间有效时设置。

kCommandFlag_InitiationTimeValid

初始化时间有效时设置。

kCommandFlag_IsOneWay

当命令是单向时设置。

kCommandFlag_MustBeVersionValid

当版本字段有效时设置。

公共属性

动作时间微秒

int64_t actionTimeMicroSecond

命令类型

uint64_t commandType

到期时间微秒

int64_t expiryTimeMicroSecond

启动时间微秒

int64_t initiationTimeMicroSecond

必须版本

uint64_t mustBeVersion

公共职能

关闭

void Close(
  void
)

获取交换上下文

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

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

细节
退货
指向此传入命令使用的交换上下文对象的指针

动作时间有效

bool IsActionTimeValid(
  void
) const 

IsExpiryTimeValid

bool IsExpiryTimeValid(
  void
) const 

IsInitiationTimeValid

bool IsInitiationTimeValid(
  void
) const 

IsMustBeVersionValid

bool IsMustBeVersionValid(
  void
) const 

一种方式

bool IsOneWay(
  void
) const 

发送错误

WEAVE_ERROR SendError(
  uint32_t aProfileId,
  uint16_t aStatusCode,
  WEAVE_ERROR aWeaveError
)

发送进度

WEAVE_ERROR SendInProgress(
  void
)

发送响应

WEAVE_ERROR SendResponse(
  uint32_t traitInstanceVersion,
  nl::Weave::System::PacketBuffer *apPayload
)

验证身份验证器

WEAVE_ERROR ValidateAuthenticator(
  nl::Weave::System::PacketBuffer *aRequestBuffer
)