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 會寫入空值元素。如果 aHandle 不是分葉,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
條件式更新為「是」,否則傳回「否」。
傳回值
WEAVE_NO_ERROR
(表示已成功將屬性控點加入屬性集,以便傳送給特徵擁有者)。
WEAVE_ERROR_INVALID_ARGUMENT
如果控制代碼或 SubscriptionClient 指標無效。
WEAVE_ERROR_WDM_INCONSISTENT_CONDITIONALITY
表示 trait 實例已以相反的條件更新。
WEAVE_ERROR_WDM_LOCAL_DATA_INCONSISTENT
WEAVE_ERROR_WDM_PATH_STORE_FULL
表示沒有可儲存路徑的記憶體。
Other
WEAVE_ERROR 代碼 (取決於失敗情形)。

TraitUpdatableDataSink

 TraitUpdatableDataSink(
  const TraitSchemaEngine *aEngine
)

解鎖

void Unlock(
  SubscriptionClient *apSubClient
)