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
如果要求不在 Notification 容器中。
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 資料容器或關閉整體 Notification 要求,藉此轉換 Notification 要求。

詳細說明
參數
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
如果要求不在 Notification 容器中。
other
無法建立資料清單的開頭。

StartEventList

WEAVE_ERROR StartEventList()

開始建立事件清單。

詳細說明
傳回值
WEAVE_NO_ERROR
成功時。
WEAVE_ERROR_INCORRECT_STATE
如果要求不在 Notification 容器中。
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
無法擷取及寫入資料元素。