nl::Weave::Profiles::DataManagement_Current::NotificationEngine::NotifyRequestBuilder

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

这提供了一个辅助类来撰写通知,并将消息的结构和结构从使用方中抽象出来。

摘要

这是 MessageDef.cpp 中提供的类似类的一个更为紧凑的版本,旨在对设备的闪存和 RAM 需求敏感。

公共函数

Checkpoint(TLV::TLVWriter & aPoint)
将请求状态检查到 TLVWriter 中。
EndDataList()
结束数据列表数组的构建。
EndEventList()
结束事件列表的构建。
EndNotifyRequest()
结束通知的构建。
GetWriter(void)
Init(PacketBuffer *aBuf, TLV::TLVWriter *aWriter, SubscriptionHandler *aSubHandler, uint32_t aMaxPayloadSize)
初始化构建器。
MoveToState(NotifyRequestBuilderState aDesiredState)
主状态转换函数。
Rollback(TLV::TLVWriter & aPoint)
将请求状态回滚到设有检查点的 TLVWriter 中。
StartDataList(void)
开始构建数据列表数组。
StartEventList()
开始构建事件列表。
StartNotifyRequest()
开始构建通知。
WriteDataElement(TraitDataHandle aTraitDataHandle, PropertyPathHandle aPropertyPathHandle, SchemaVersion aSchemaVersion, PropertyPathHandle *aMergeDataHandleSet, uint32_t aNumMergeDataHandles, PropertyPathHandle *aDeleteHandleSet, uint32_t aNumDeleteHandles)
给定特征路径,写出与该路径关联的数据元素。

公共函数

Checkpoint

WEAVE_ERROR Checkpoint(
  TLV::TLVWriter & aPoint
)

将请求状态检查到 TLVWriter 中。

具体说明
参数
[out] aPoint
一个写入器,用于对 TLV 写入器的状态设置检查点。
返回值
WEAVE_NO_ERROR
成功时。

EndDataList

WEAVE_ERROR EndDataList()

结束数据列表数组的构建。

具体说明
返回值
WEAVE_NO_ERROR
成功时。
WEAVE_ERROR_INCORRECT_STATE
如果请求不在 DataList 容器中。
other
无法构建数据列表的末尾。

EndEventList

WEAVE_ERROR EndEventList()

结束事件列表的构建。

具体说明
返回值
WEAVE_NO_ERROR
成功时。
WEAVE_ERROR_INCORRECT_STATE
请求不在 EventList 容器中。
other
无法构建数据列表的末尾。

EndNotifyRequest

WEAVE_ERROR EndNotifyRequest()

结束通知的构建。

具体说明
返回值
WEAVE_NO_ERROR
成功时。
WEAVE_ERROR_INCORRECT_STATE
如果请求不在通知容器中。
other
无法构造通知的结尾。

GetWriter

TLV::TLVWriter * GetWriter(
  void
)

Init

WEAVE_ERROR Init(
  PacketBuffer *aBuf,
  TLV::TLVWriter *aWriter,
  SubscriptionHandler *aSubHandler,
  uint32_t aMaxPayloadSize
)

初始化构建器。

只应调用一次。

具体说明
返回值
WEAVE_NO_ERROR
成功时。
other
无法初始化构建器。

MoveToState

WEAVE_ERROR MoveToState(
  NotifyRequestBuilderState aDesiredState
)

主状态转换函数。

函数会采用期望的状态(即我们希望达到的通知请求构建器的阶段),并将请求转换为该状态。如果期望状态与当前状态相同,函数将不执行任何操作。否则,系统会分配 PacketBuffer(如果需要);该函数首先将请求转换为顶级通知请求(打开通知请求 TLV 结构,或根据需要关闭当前的 TLV 数据容器),然后通过打开相应的 TLV 数据容器或关闭总体 Notifications 请求来转换通知请求。

具体说明
参数
aDesiredState
请求应转换为的期望状态
返回值
WEAVE_NO_ERROR
成功时。
WEAVE_ERROR_NO_MEMORY
内存不足,无法转换为该状态。
WEAVE_ERROR_INCORRECT_STATE
内部状态机损坏。
other
当状态机无法在其缓冲区中记录状态时,可能表示存在设计缺陷,而不是运行时问题。

回滚

WEAVE_ERROR Rollback(
  TLV::TLVWriter & aPoint
)

将请求状态回滚到设有检查点的 TLVWriter 中。

具体说明
参数
[in] aPoint
撰写者记录了过去某个时间点的状态
返回值
WEAVE_NO_ERROR
成功时。

StartDataList

WEAVE_ERROR StartDataList(
  void
)

开始构建数据列表数组。

具体说明
返回值
WEAVE_NO_ERROR
成功时。
WEAVE_ERROR_INCORRECT_STATE
如果请求不在通知容器中。
other
无法构建数据列表的开头。

StartEventList

WEAVE_ERROR StartEventList()

开始构建事件列表。

具体说明
返回值
WEAVE_NO_ERROR
成功时。
WEAVE_ERROR_INCORRECT_STATE
如果请求不在通知容器中。
other
无法构建数据列表的开头。

StartNotifyRequest

WEAVE_ERROR StartNotifyRequest()

开始构建通知。

具体说明
返回值
WEAVE_NO_ERROR
成功时。
WEAVE_ERROR_INCORRECT_STATE
请求不在缓冲区的顶层。
other
无法构造通知的结尾。

WriteDataElement

WEAVE_ERROR WriteDataElement(
  TraitDataHandle aTraitDataHandle,
  PropertyPathHandle aPropertyPathHandle,
  SchemaVersion aSchemaVersion,
  PropertyPathHandle *aMergeDataHandleSet,
  uint32_t aNumMergeDataHandles,
  PropertyPathHandle *aDeleteHandleSet,
  uint32_t aNumDeleteHandles
)

给定特征路径,写出与该路径关联的数据元素。

调用方还可以选择传入句柄集,以便利用父属性路径句柄的较小直接子节点集的合并操作。

具体说明
返回值
WEAVE_NO_ERROR
成功时。
other
无法检索和写入数据元素。