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、可选、临时或叶的句柄调用此函数。预期:任何具有启用这些选项的句柄的 trait 都将实现适当的逻辑来填充 aIsNull 和 aIsPresent。

详细信息
参数
[in] aHandle
相关 PropertyPathHandle。
[in] aTagToWrite
要为 aHandle 编写的代码。
[in,out] aWriter
写入 TLV 元素的作者。
[out] aIsNull
是否将 aHandle 作废?如果是,TDM 会写入 null 元素。如果 aHandle 不是叶,TDM 会跳过其子项。
[out] aIsPresent
是否存在一个句柄?如果为 no 且 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 回调以及更新操作的结果。修改可以有条件,也可以无条件。如果特征实例的本地副本不再与发布者同步,因为发布者本身或其他客户端更改了该实例,则条件数据更新将会丢失。在同一 trait 实例中,不支持同时支持条件变更和无条件变更。

详细信息
参数
[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
如果 aIsConditional 为 true,但特征实例没有有效版本,则返回此值。
WEAVE_ERROR_WDM_PATH_STORE_FULL
如果没有内存来存储该路径,则会发生此错误。
Other
WEAVE_ERROR 代码(具体取决于失败情况)。

TraitUpdatableDataSink

 TraitUpdatableDataSink(
  const TraitSchemaEngine *aEngine
)

解锁

void Unlock(
  SubscriptionClient *apSubClient
)