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 写入器和指示值是否为 null 的布尔值,从将构建通知的特征来源获取数据。
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 写入器和指示值是否为 null 的布尔值,从将构建通知的特征来源获取数据。

如果路径句柄不是叶节点,TDM 将处理向写入者写入值的操作(例如打开容器、使结构体为空等)。如果某个非叶节点为 null 或不存在,TDM 将不会为其子节点调用 GetData。

仅对可为 null、可选、临时或叶的句柄调用此函数。预期是,任何具有已启用这些选项的句柄的特征都将实现适当的逻辑来填充 aIsNull 和 aIsPresent。

具体说明
参数
[in] aHandle
相关的 PropertyPathHandle。
[in] aTagToWrite
要为 aHandle 编写的标记。
[in,out] aWriter
向其写入 TLV 元素的写入器。
[out] aIsNull
aHandle 是否作废?如果是,TDM 将写入一个 null 元素。如果句柄不是叶项,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
如果属性句柄已成功添加到要发送给 trait 所有者的资源集中。
WEAVE_ERROR_INVALID_ARGUMENT
如果句柄或 SubscriptionClient 指针无效,则会发生此错误。
WEAVE_ERROR_WDM_INCONSISTENT_CONDITIONALITY
如果特征实例已经以相反条件进行更新。
WEAVE_ERROR_WDM_LOCAL_DATA_INCONSISTENT
如果 aIsConditional 为 true,但 trait 实例没有有效版本,则会发生该错误。
WEAVE_ERROR_WDM_PATH_STORE_FULL
如果没有内存来存储路径。
Other
WEAVE_ERROR 代码。

TraitUpdatableDataSink

 TraitUpdatableDataSink(
  const TraitSchemaEngine *aEngine
)

解锁

void Unlock(
  SubscriptionClient *apSubClient
)