nl::Weave::Profiles::DataManagement_Current::TraitUpdatableDataSink

摘要

繼承

沿用自:
  nl::Weave::Profiles::DataManagement_Current::TraitDataSink
  nl::Weave::Profiles::DataManagement_Current::TraitSchemaEngine::IGetDataDelegate

建構函式和解構函式

TraitUpdatableDataSink(const TraitSchemaEngine *aEngine)

公開函式

ClearUpdated(SubscriptionClient *apSubClient, PropertyPathHandle aPropertyHandle)
GetData(PropertyPathHandle aHandle, uint64_t aTagToWrite, nl::Weave::TLV::TLVWriter & aWriter, bool & aIsNull, bool & aIsPresent) __OVERRIDE
virtual WEAVE_ERROR
具有一個節點的路徑控點、TLV 寫入器,以及指出該值是否為空值的布林值,從將建立通知的特徵來源取得資料。
GetSubscriptionClient() __OVERRIDE
virtual SubscriptionClient *
GetUpdateEncoder() __OVERRIDE
virtual UpdateEncoder *
IsUpdatableDataSink(void) __OVERRIDE
virtual bool
Lock(SubscriptionClient *apSubClient)
void
ReadData(TraitDataHandle aTraitDataHandle, PropertyPathHandle aHandle, uint64_t aTagToWrite, TLV::TLVWriter & aWriter, PropertyPathHandle & aPropertyPathHandleOfDictItemToStartFrom)
SetSubscriptionClient(SubscriptionClient *apSubClient) __OVERRIDE
virtual WEAVE_ERROR
SetUpdateEncoder(UpdateEncoder *apEncoder) __OVERRIDE
virtual WEAVE_ERROR
SetUpdated(SubscriptionClient *apSubClient, PropertyPathHandle aPropertyHandle, bool aIsConditional)
宣告指定的 PropertyPathHandle 具有本機修改。
Unlock(SubscriptionClient *apSubClient)
void

公開函式

ClearUpdated

WEAVE_ERROR ClearUpdated(
  SubscriptionClient *apSubClient,
  PropertyPathHandle aPropertyHandle
)

GetData

virtual WEAVE_ERROR GetData(
  PropertyPathHandle aHandle,
  uint64_t aTagToWrite,
  nl::Weave::TLV::TLVWriter & aWriter,
  bool & aIsNull,
  bool & aIsPresent
) __OVERRIDE

具有一個節點的路徑控點、TLV 寫入者,以及指出該值是否為空值的布林值,從將建立通知的特徵來源取得資料。

如果路徑控點不是分葉節點,TDM 將處理將值寫入寫入者的動作 (例如開啟容器、為結構體空值等)。如果非分葉節點為空值或不存在,TDM 不會針對其子項呼叫 GetData。

系統只會針對可為空值、選用、暫時或分葉的帳號呼叫這個函式。預期只要有任何特徵已啟用相關控制代碼,都會實作適當的邏輯來填入 aIsNull 和 aIsPresent。

詳細資料
參數
[in] aHandle
有問題的 PropertyPathHandle。
[in] aTagToWrite
為 aHandle 編寫的標記。
[in,out] aWriter
要寫入 TLV 元素的寫入者。
[out] aIsNull
帳號代碼是否為空值?如果是,TDM 會寫入空值元素。如果帳號代碼不是分葉,TDM 就會略過子項。
[out] aIsPresent
是否有帳號代碼?如果否,且 aHandle 不是分葉,TDM 將略過路徑及其子項。
傳回值
WEAVE_NO_ERROR
成功時。
other
無法擷取資料並寫入寫入者。

GetSubscriptionClient

virtual SubscriptionClient * GetSubscriptionClient() __OVERRIDE

GetUpdateEncoder

virtual UpdateEncoder * GetUpdateEncoder() __OVERRIDE

IsUpdatableDataSink

virtual bool IsUpdatableDataSink(
  void
) __OVERRIDE

鎖定

void Lock(
  SubscriptionClient *apSubClient
)

ReadData

WEAVE_ERROR ReadData(
  TraitDataHandle aTraitDataHandle,
  PropertyPathHandle aHandle,
  uint64_t aTagToWrite,
  TLV::TLVWriter & aWriter,
  PropertyPathHandle & aPropertyPathHandleOfDictItemToStartFrom
)

SetSubscriptionClient

virtual WEAVE_ERROR SetSubscriptionClient(
  SubscriptionClient *apSubClient
) __OVERRIDE

SetUpdateEncoder

virtual WEAVE_ERROR SetUpdateEncoder(
  UpdateEncoder *apEncoder
) __OVERRIDE

SetUpdated

WEAVE_ERROR SetUpdated(
  SubscriptionClient *apSubClient,
  PropertyPathHandle aPropertyHandle,
  bool aIsConditional
)

宣告指定的 PropertyPathHandle 具有本機修改。

更新要求處理完畢之前,NotificationEngine 不會覆寫處理常式及其子系。應用程式會收到此處理常式或其其中一個祖系的 kEvent_OnUpdateComplete 回呼,以及更新作業的結果。修改可以是有條件的。如果特徵執行個體的本機副本與發布者不再同步,因為發布商本身或其他用戶端變更了條件式資料,就會遺失條件資料更新。在同一個特徵例項中,無法同時支援條件式和非條件式異動。

詳細資料
參數
[in] apSubClient
指向管理這個接收器的 SubscriptionClient 指標。
[in] aPropertyHandle
這個 Trait 執行個體任何有效的 PropertyPathHandle。
[in] aIsConditional
針對條件式更新為 true;否則傳回 false。
傳回值
WEAVE_NO_ERROR
當屬性控點已成功新增至要傳送給特徵擁有者的屬性組時。
WEAVE_ERROR_INVALID_ARGUMENT
如果帳號代碼或 SubscriptionClient 指標無效。
WEAVE_ERROR_WDM_INCONSISTENT_CONDITIONALITY
表示特徵執行個體已以相反的條件更新
WEAVE_ERROR_WDM_LOCAL_DATA_INCONSISTENT
WEAVE_ERROR_WDM_PATH_STORE_FULL
就不會有記憶體可儲存路徑
Other
根據失敗情形提供 WEAVE_ERROR 代碼。

TraitUpdatableDataSink

 TraitUpdatableDataSink(
  const TraitSchemaEngine *aEngine
)

解鎖

void Unlock(
  SubscriptionClient *apSubClient
)