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 数据容器或关闭主要的通知请求来转换通知请求。

详细信息
参数
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
无法检索和写入数据元素。