nl::Weave::Profiles::DataManagement_Legacy::DMClient

#include <src/lib/profiles/data-management/Legacy/DMClient.h>

應用程式專屬 WDM 用戶端的抽象基本類別。

摘要

DMClient 是標準 WDM 用戶端。您可以選擇在實作中加入訂閱/通知。這個程式庫結合了 DM ProtocolEngine 類別,負責處理通訊通訊的工具和完全抽象的 ClientDataManager 類別,而它們也實作了與訂閱相關的部分方法,所以您不用擔心這些方法的較高層。

訂閱相關工作的處理常式主要做為 ClientNotifier 物件的精簡轉接器。子類別實作者應謹慎呼叫相關的父類別方法,才能轉化訂閱管理員。

DMClient 要求方法通常有 2 個簽章,一個有明確的目的地節點 ID,另一個有指定目的地。無論是哪一種情況,傳送訊息給發布者的能力都取決於用戶端中現有的繫結,但在第一種情況下,目的地 ID 是在多個繫結目的地之間選取,而在第二個情況下,系統會選取繫結表格中的第一個項目做為預設值。舉例來說,如果用戶端只會繫結至一個發布商,這項功能就非常實用。

繼承

沿用自:
  nl::Weave::Profiles::DataManagement_Legacy::ProtocolEngine
  nl::Weave::Profiles::DataManagement_Legacy::ClientDataManager

建構函式和解構函式

DMClient(void)
DMClient 物件的預設建構函式。
~DMClient(void)
DMClient 物件的解構函式。
ViewRequest(const uint64_t & aDestinationId, ReferencedTLVData & aPathList, uint16_t aTxnId, uint32_t aTimeout)
virtual WEAVE_ERROR
要求檢視已發布的資料。
ViewRequest(ReferencedTLVData & aPathList, uint16_t aTxnId, uint32_t aTimeout)
virtual WEAVE_ERROR
要求查看預設發布商的資料。
UpdateRequest(const uint64_t & aDestinationId, ReferencedTLVData & aDataList, uint16_t aTxnId, uint32_t aTimeout)
virtual WEAVE_ERROR
要求更新已發布的資料。
UpdateRequest(ReferencedTLVData & aDataList, uint16_t aTxnId, uint32_t aTimeout)
virtual WEAVE_ERROR
要求更新預設發布商的資料。

受保護的屬性

mUpdatePool[kUpdatePoolSize]
mViewPool[kViewPoolSize]

公用函式

CancelTransactionRequest(uint16_t aTxnId, WEAVE_ERROR aError)
要求取消執行中的交易。
Clear(void)
virtual void
清除與 DMClient 物件相關聯的內部狀態。
Finalize(void)
virtual void
關閉作業中的 DMClient
IncompleteIndication(Binding *aBinding, StatusReport & aReport)
virtual void
處理用戶端使用繫結的「未完成」。

受保護的函式

NewUpdate(void)
Update *
NewView(void)
View *

ViewRequest

virtual WEAVE_ERROR ViewRequest(
  const uint64_t & aDestinationId,
  ReferencedTLVData & aPathList,
  uint16_t aTxnId,
  uint32_t aTimeout
)

要求檢視已發布的資料。

要求檢視位於指定遠端發布者並管理的資料。

詳細說明
參數
[in] aDestinationId
遠端發布者 64 位元節點 ID 的參照。
[in] aPathList
這是 ReferencedTLVData 物件的參照,該物件包含表示要求資料的 TLV 編碼路徑清單。
[in] aTxnId
用來管理這項資料檢視作業的 WDM 交易 ID。
[in] aTimeout
等待檢視畫面回應的時間上限,以毫秒為單位。
傳回值
WEAVE_NO_ERROR
成功時。
WEAVE_ERROR_NO_MEMORY
如果無法分配交易。
傳回
否則,將反映初始化或啟動交易失敗的 WEAVE_ERROR

ViewRequest

virtual WEAVE_ERROR ViewRequest(
  ReferencedTLVData & aPathList,
  uint16_t aTxnId,
  uint32_t aTimeout
)

要求查看預設發布商的資料。

要求「預設」發布者 (亦即用戶端繫結資料表中第一個 (或僅限)) 管理所在資源的檢視畫面。

詳細說明
參數
[in] aPathList
這是 ReferencedTLVData 物件的參照,該物件包含表示要求資料的 TLV 編碼路徑清單。
[in] aTxnId
用來管理這項資料檢視作業的 WDM 交易 ID。
[in] aTimeout
等待檢視畫面回應的時間上限,以毫秒為單位。
傳回值
WEAVE_NO_ERROR
成功時。
WEAVE_ERROR_NO_MEMORY
如果無法分配交易。
傳回
否則,將反映初始化或啟動交易失敗的 WEAVE_ERROR

UpdateRequest

virtual WEAVE_ERROR UpdateRequest(
  const uint64_t & aDestinationId,
  ReferencedTLVData & aDataList,
  uint16_t aTxnId,
  uint32_t aTimeout
)

要求更新已發布的資料。

要求遠端發布者更新管理服務的資料。

詳細說明
參數
[in] aDestinationId
請求所接收遠端發布商的 64 位元節點 ID 參照。
[in] aDataList
這是 ReferencedTLVData 物件的參照,其中包含採用 TLV 編碼的資料清單,其中含有更新項目表示法,包括要套用更新的路徑。
[in] aTxnId
設定用於管理更新要求的交易 ID。
[in] aTimeout
等待相應狀態報告的時間上限 (以毫秒為單位)。
傳回
成功執行 WEAVE_NO_ERROR;如果無法分配更新交易,則為 WEAVE_ERROR_NO_MEMORY。否則,系統會傳回 WEAVE_ERROR 反映更新失敗情形。

UpdateRequest

virtual WEAVE_ERROR UpdateRequest(
  ReferencedTLVData & aDataList,
  uint16_t aTxnId,
  uint32_t aTimeout
)

要求更新預設發布商的資料。

要求遠端發布者更新管理服務的資料。這個版本會將要求導向用戶端預設繫結的目標發布者。

詳細說明
參數
[in] aDataList
這是 ReferencedTLVData 物件的參照,其中包含採用 TLV 編碼的資料清單,其中含有更新項目表示法,包括要套用更新的路徑。
[in] aTxnId
設定用於管理更新要求的交易 ID。
[in] aTimeout
等待相應狀態報告的時間上限 (以毫秒為單位)。
傳回
成功執行 WEAVE_NO_ERROR;如果無法分配更新交易,則為 WEAVE_ERROR_NO_MEMORY。否則,系統會傳回 WEAVE_ERROR 反映更新失敗情形。

受保護的屬性

mUpdatePool

Update mUpdatePool[kUpdatePoolSize]

mViewPool

View mViewPool[kViewPoolSize]

公用函式

CancelTransactionRequest

WEAVE_ERROR CancelTransactionRequest(
  uint16_t aTxnId,
  WEAVE_ERROR aError
)

要求取消執行中的交易。

這個方法不會產生網路流量,只會釋出分配給指定交易的資源

詳細說明
參數
[in] aTxnId
要取消的交易數量,如果提供 kTransactionIdNotSpecified,系統就會取消所有交易。
[in] aError
取消交易時要回報的 WEAVE_ERROR
傳回
成功時出現 WEAVE_NO_ERROR,或表示無法取消交易的 WEAVE_ERROR

清除

virtual void Clear(
  void
)

清除與 DMClient 物件相關聯的內部狀態。

尤其是,這個方法會清除所有用戶端交易集區。針對已使用 Finalize() 方法的用戶端,是建議使用,因為它也會取消訂閱並清理交易和繫結資料表。

另請參閱:
Finalize()

DMClient

 DMClient(
  void
)

DMClient 物件的預設建構函式。

清除所有內部狀態。DMClient 必須先使用 Init() 進一步初始化才能使用。

完成轉換

virtual void Finalize(
  void
)

關閉作業中的 DMClient

清除與用戶端相關聯的所有作業狀態,並從通知器中移除所有相關訂閱。呼叫 Finalize() 後,便可只透過呼叫 Init() 重新初始化 DMClientDMClient 解構函式會叫用 Finalize(),但如果 DMClient 需要清理 (例如失敗或暫時關閉),之後可能需要重新還原。

IncompleteIndication

virtual void IncompleteIndication(
  Binding *aBinding,
  StatusReport & aReport
)

處理用戶端使用繫結的「未完成」。

當繫結意外失敗時,例如,如果繫結中的連線關閉,系統就會呼叫這個方法。

詳細說明
參數
[in] aBinding
指向未完成的「Binding」指標。
[in] aReport
狀態報告的參考資料,說明失敗原因。

~DMClient

virtual  ~DMClient(
  void
)

DMClient 物件的解構函式。

清除所有內部狀態,並在必要時取消待處理的訂閱項目。

受保護的函式

NewUpdate

Update * NewUpdate(
  void
)

NewView

View * NewView(
  void
)