nl::Weave::Profiles::DataManagement_Legacy

此命名空间包含 Weave 中即将弃用的 Weave 数据管理 (WDM) 配置文件的所有接口。

摘要

枚举

@103{
  kStatus_CancelSuccess = 0x0001,
  kStatus_InvalidPath = 0x0013,
  kStatus_UnknownTopic = 0x0014,
  kStatus_IllegalReadRequest = 0x0015,
  kStatus_IllegalWriteRequest = 0x0016,
  kStatus_InvalidVersion = 0x0017,
  kStatus_UnsupportedSubscriptionMode = 0x0018
}
枚举
@166{
  kViewPoolSize = WEAVE_CONFIG_WDM_VIEW_POOL_SIZE,
  kSubscribePoolSize = WEAVE_CONFIG_WDM_SUBSCRIBE_POOL_SIZE,
  kCancelSubscriptionPoolSize = WEAVE_CONFIG_WDM_CANCEL_SUBSCRIPTION_POOL_SIZE,
  kUpdatePoolSize = WEAVE_CONFIG_WDM_UPDATE_POOL_SIZE,
  kNotifyPoolSize = WEAVE_CONFIG_WDM_NOTIFY_POOL_SIZE,
  kTransactionTableSize = WEAVE_CONFIG_WDM_TRANSACTION_TABLE_SIZE,
  kBindingTableSize = WEAVE_CONFIG_WDM_BINDING_TABLE_SIZE,
  kNotifierTableSize = WEAVE_CONFIG_WDM_NOTIFIER_TABLE_SIZE,
  kSubscriptionMgrTableSize = WEAVE_CONFIG_WDM_SUBSCRIPTION_MGR_TABLE_SIZE
}
枚举
WDM 池和表大小。
@167{
  kMsgType_ViewRequest = 0x10,
  kMsgType_ViewResponse = 0x11,
  kMsgType_SubscribeRequest = 0x12,
  kMsgType_SubscribeResponse = 0x13,
  kMsgType_CancelSubscriptionRequest = 0x14,
  kMsgType_UpdateRequest = 0x15,
  kMsgType_NotifyRequest = 0x16,
  kMsgType_ViewRequest_Deprecated = 0x00,
  kMsgType_ViewResponse_Deprecated = 0x01,
  kMsgType_SubscribeRequest_Deprecated = 0x02,
  kMsgType_SubscribeResponse_Deprecated = 0x03,
  kMsgType_CancelSubscriptionRequest_Deprecated = 0x04,
  kMsgType_UpdateRequest_Deprecated = 0x05,
  kMsgType_NotifyRequest_Deprecated = 0x06
}
枚举
WDM 配置文件消息类型。
@168{
  kTransactionIdNotSpecified = 0,
  kResponseTimeoutNotSpecified = 0,
  kVersionNotSpecified = 0xFFFFFFFFFFFFFFFFULL,
  kInstanceIdNotSpecified = 0,
  kDefaultBindingTableIndex = 0,
  kWeaveTLVTagLen = 8,
  kWeaveTLVControlByteLen = 1
}
枚举
其他 WDM 专用常量。
@169{
  kStatus_CancelSuccess = 0x0001,
  kStatus_InvalidPath = 0x0013,
  kStatus_UnknownTopic = 0x0014,
  kStatus_IllegalReadRequest = 0x0015,
  kStatus_IllegalWriteRequest = 0x0016,
  kStatus_InvalidVersion = 0x0017,
  kStatus_UnsupportedSubscriptionMode = 0x0018
}
枚举
WDM 特定状态代码。
@170{
  kTag_WDMPathList = 100,
  kTag_WDMPathProfile = 101,
  kTag_WDMPathProfileId = 1,
  kTag_WDMPathProfileInstance = 2,
  kTag_WDMPathProfileId_Deprecated = 102,
  kTag_WDMPathProfileInstance_Deprecated = 103,
  kTag_WDMPathArrayIndexSelector = 104,
  kTag_WDMPathArrayValueSelector = 105,
  kTag_WDMDataList = 200,
  kTag_WDMDataListElementPath = 3,
  kTag_WDMDataListElementVersion = 4,
  kTag_WDMDataListElementData = 5,
  kTag_WDMDataListElementPath_Deprecated = 201,
  kTag_WDMDataListElementVersion_Deprecated = 202,
  kTag_WDMDataListElementData_Deprecated = 203
}
枚举
数据管理协议标记。
@171{
  kTopicIdPublisherSpecificMask = 0xFFFF000000000000ULL,
  kTopicIdNotSpecified = 0x0000000000000000ULL,
  kAnyTopicId = 0xFFFFFFFFFFFFFFFFULL
}
枚举
可区分的主题 ID。
WeaveTransportOption{
  kTransport_TCP = 1,
  kTransport_WRMP = 2,
  kTransport_UDP = 3
}
枚举
WDM 传输选项。

类型定义符

TopicIdentifier typedef
uint64_t
主题标识符。

函数

CheckTLVType(nl::Weave::TLV::TLVType aType, nl::Weave::TLV::TLVReader & aReader)
bool
检查正在读取的 TLV 元素是否具有预期的 TLV 类型。
CheckWDMTag(uint32_t aTagNum, nl::Weave::TLV::TLVReader & aReader)
bool
选中 WDM 专用代码。
CloseDataListElement(nl::Weave::TLV::TLVReader & aReader)
停止读取 WDM 数据列表元素。
CloseList(nl::Weave::TLV::TLVReader & aReader)
停止读取 WDM 路径或数据列表。
EncodeDeprecatedPath(TLVWriter & aWriter, const uint64_t & aTag, uint32_t aProfileId, const uint64_t & aInstanceId, uint32_t aPathLen, ...)
使用已弃用的标记和整数实例 ID 对 WDM 路径进行编码。
EncodeDeprecatedPath(TLVWriter & aWriter, const uint64_t & aTag, uint32_t aProfileId, const char *aInstanceId, uint32_t aPathLen, ...)
使用已弃用的标记和字符串实例 ID 对 WDM 路径进行编码。
EncodePath(TLVWriter & aWriter, const uint64_t & aTag, uint32_t aProfileId, const uint64_t & aInstanceId, uint32_t aPathLen, ...)
使用整数配置文件实例 ID 对 WDM 路径进行编码。
EncodePath(TLVWriter & aWriter, const uint64_t & aTag, uint32_t aProfileId, const uint32_t aInstanceIdLen, const uint8_t *aInstanceId, uint32_t aPathLen, ...)
使用字节数组实例 ID 对 WDM 路径进行编码。
EncodePath(TLVWriter & aWriter, const uint64_t & aTag, uint32_t aProfileId, const char *aInstanceId, uint32_t aPathLen, ...)
使用字符串实例 ID 对 WDM 路径进行编码。
EndDataListElement(nl::Weave::TLV::TLVWriter & aWriter)
完成数据列表元素的写入。
EndEncodePath(TLVWriter & aWriter, TLVType & mOuterContainer, WEAVE_ERROR mError)
EndList(nl::Weave::TLV::TLVWriter & aWriter)
完成路径列表或数据列表的写入。
EndList(ReferencedTLVData & aList, nl::Weave::TLV::TLVWriter & aWriter)
完成路径列表或数据列表的写入。
IsPublisherSpecific(const TopicIdentifier & aTopicId)
bool
检查主题 ID 是否为发布商专有。
OpenDataList(ReferencedTLVData & aDataList, nl::Weave::TLV::TLVReader & aReader)
开始读取数据列表。
OpenDataListElement(nl::Weave::TLV::TLVReader & aReader, nl::Weave::TLV::TLVReader & aPathReader, uint64_t & aVersion)
开始读取数据列表元素。
OpenPathList(ReferencedTLVData & aPathList, nl::Weave::TLV::TLVReader & aReader)
开始阅读路径列表。
PublisherSpecificTopicId(void)
从头开始生成发布商专用主题 ID。
SendStatusReport(ExchangeContext *aExchangeCtx, StatusReport & aStatus)
StartDataList(nl::Weave::TLV::TLVWriter & aWriter)
开始写入数据列表。
StartDataList(ReferencedTLVData & aDataList, nl::Weave::TLV::TLVWriter & aWriter)
开始将数据列表写入给定的 ReferencedTLVData 对象。
StartDataListElement(nl::Weave::TLV::TLVWriter & aWriter)
开始写入数据列表元素。
StartEncodePath(TLVWriter & aWriter, const uint64_t & aTag, uint32_t aProfileId, TLVType & mOuterContainer, TLVType & mPath)
StartPathList(nl::Weave::TLV::TLVWriter & aWriter)
开始编写路径列表。
TxnResponseHandler(ExchangeContext *anExchangeCtx, const IPPacketInfo *anAddrInfo, const WeaveMessageInfo *aMsgInfo, uint32_t aProfileId, uint8_t aMsgType, PacketBuffer *aMsg)
void
TxnTimeoutHandler(ExchangeContext *anExchangeCtx)
void
ValidateTLVType(nl::Weave::TLV::TLVType aType, nl::Weave::TLV::TLVReader & aReader)
验证正在读取的 TLV 元素是否为预期的 TLV 类型。
ValidateWDMTag(uint32_t aTagNum, nl::Weave::TLV::TLVReader & aReader)
验证正在读取的 TLV 元素是否具有预期的 WDM 标记。

nl::Weave::Profiles::DataManagement_Legacy::Binding

Binding 类使用 Weave 代表应用实体管理通信状态。

nl::Weave::Profiles::DataManagement_Legacy::ClientDataManager

一个抽象类,包含 WDM 客户端所需的确认和指示方法定义。

nl::Weave::Profiles::DataManagement_Legacy::ClientNotifier

WDM 客户端需要订阅和通知支持时采用的辅助类。

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

特定于应用的 WDM 客户端的抽象基类。

nl::Weave::Profiles::DataManagement_Legacy::DMPublisher

特定于应用的 WDM 发布商的抽象基类。

nl::Weave::Profiles::DataManagement_Legacy::ProfileDatabase

抽象 ProfileDatabase 辅助类。

nl::Weave::Profiles::DataManagement_Legacy::ProtocolEngine

WDM 协议引擎类。

nl::Weave::Profiles::DataManagement_Legacy::PublisherDataManager

一个抽象类,包含 WDM 发布商所需的确认和通知方法定义。

枚举

@103

 @103
属性
kStatus_CancelSuccess

此旧状态代码表示已成功取消订阅。

此状态代码表示,订阅已成功取消。

kStatus_IllegalReadRequest

此旧状态代码表示,发出读取特定数据项的请求的节点无权执行该操作。

此状态代码表示,发出读取特定数据项的请求的节点无权执行该操作。

kStatus_IllegalWriteRequest

此旧状态代码表示,发出写入特定数据项的请求的节点无权执行此操作。

此状态代码表示,发出写入特定数据项的请求的节点无权执行此操作。

kStatus_InvalidPath

此旧状态代码表示,视图或更新请求帧的路径列表中的路径与响应程序的节点驻留架构不匹配。

此状态代码表示,视图或更新请求帧的路径列表中的路径与响应程序的节点驻留架构不匹配。

kStatus_InvalidVersion

此旧版状态代码表示,更新请求中所含数据的版本与发布商上的最新版本不匹配,因此无法应用更新。

此状态代码表示,更新请求中所含数据的版本与发布商上的最新版本不匹配,因此无法应用更新。

kStatus_UnknownTopic

此旧状态代码表示取消请求或通知中提供的主题标识符与接收节点上现有的任何订阅都不匹配。

此状态代码表示,取消请求或通知中提供的主题标识符与接收节点上现有的任何订阅都不匹配。

kStatus_UnsupportedSubscriptionMode

此旧状态代码表示接收设备不支持所请求的订阅模式。

此状态代码表示接收设备不支持所请求的订阅模式。

@166

 @166

WDM 池和表大小。

WDM 定义了其运行所需的各种数据池和表,如下所示。

客户端事务池:

  • kViewPoolSize
  • kSubscribePoolSize
  • kCancelSubscriptionPoolSize
  • kUpdatePoolSize

发布商交易池:

  • kNotifyPoolSize

协议引擎表:

  • kTransactionTableSize
  • kBindingTableSize

与订阅相关的表:

  • kNotifierTableSize(仅限客户端)
  • kSubscriptionMgrTableSize(仅限发布商)

请注意,这些是可配置的数量,并且每个平台的值显示在关联的 WeaveConfig.h 中。

属性
kBindingTableSize

这是 WDM 协议引擎中绑定表的默认大小。

此值可通过 WEAVE_CONFIG_WDM_BINDING_TABLE_SIZE 进行配置。

kCancelSubscriptionPoolSize

这是 WDM 客户端的取消订阅请求事务池的默认大小。

此值可通过 WEAVE_CONFIG_WDM_CANCEL_SUBSCRIPTION_POOL_SIZE 进行配置。

kNotifierTableSize

这是 WDM 客户端通知表的默认大小。

此值可通过 WEAVE_CONFIG_WDM_NOTIFIER_TABLE_SIZE 进行配置。

kNotifyPoolSize

这是 WDM 发布商的通知请求交易池的默认大小。

此值可通过 WEAVE_CONFIG_WDM_NOTIFY_POOL_SIZE 进行配置。

kSubscribePoolSize

这是 WDM 客户端的订阅请求事务池的默认大小。

此值可通过 WEAVE_CONFIG_WDM_SUBSCRIBE_POOL_SIZE 进行配置。

kSubscriptionMgrTableSize

这是 WDM 发布商订阅表格的默认大小。

此值可通过 WEAVE_CONFIG_WDM_SUBSCRIPTION_MGR_TABLE_SIZE 进行配置。

kTransactionTableSize

这是 WDM 协议引擎中事务表的默认大小。

此值可通过 WEAVE_CONFIG_WDM_TRANSACTION_TABLE_SIZE 进行配置。

kUpdatePoolSize

这是 WDM 客户端的更新请求事务池的默认大小。

此值可通过 WEAVE_CONFIG_WDM_UPDATE_POOL_SIZE 进行配置。

kViewPoolSize

这是 WDM 客户端的查看请求事务池的默认大小。

此值可通过 WEAVE_CONFIG_WDM_VIEW_POOL_SIZE 进行配置。

@167

 @167

WDM 配置文件消息类型。

数据管理规范中列出了这些值。

注意!!自 2015 年第一季度起,之前版本 WDM 中使用的消息类型已弃用,并且定义了新的消息类型,体现了过去的打包和解析细节的充分改变,证明了完全休息的合理性。

属性
kMsgType_CancelSubscriptionRequest

取消订阅请求消息。

kMsgType_CancelSubscriptionRequest_Deprecated

已弃用

kMsgType_NotifyRequest

通知请求消息。

kMsgType_NotifyRequest_Deprecated

已弃用

kMsgType_SubscribeRequest

订阅请求消息。

kMsgType_SubscribeRequest_Deprecated

已弃用

kMsgType_SubscribeResponse

订阅响应消息。

kMsgType_SubscribeResponse_Deprecated

已弃用

kMsgType_UpdateRequest

更新请求消息。

kMsgType_UpdateRequest_Deprecated

已弃用

kMsgType_ViewRequest

查看请求消息。

kMsgType_ViewRequest_Deprecated

已弃用

kMsgType_ViewResponse

查看回复消息。

kMsgType_ViewResponse_Deprecated

已弃用

@168

 @168

其他 WDM 专用常量。

属性
kDefaultBindingTableIndex

具有多个条目的协议引擎绑定表中默认绑定的索引。

kInstanceIdNotSpecified

在需要指定配置文件实例的调用中,指明“none”。

大多数情况下,这意味着相关实体上仅存在该资料的一个实例。

kResponseTimeoutNotSpecified

在请求事务的方法中,表示调用方已拒绝指定超时。

通常,这意味着应使用默认值。

kTransactionIdNotSpecified

在采用事务 ID 的方法和数据结构中,表示“无”或通配符值。

kVersionNotSpecified

在需要指定数据版本的调用中,表示“无特定版本”。

kWeaveTLVControlByteLen

TLV 控制字节的长度,用于对 TLV 中的 WDM 结构进行编码的方法。

kWeaveTLVTagLen

完全限定 TLV 标记的标准长度(以字节为单位),用于对 TLV 中的 WDM 结构进行编码的支持方法。

@169

 @169

WDM 特定状态代码。

属性
kStatus_CancelSuccess

此旧状态代码表示已成功取消订阅。

此状态代码表示,订阅已成功取消。

kStatus_IllegalReadRequest

此旧状态代码表示,发出读取特定数据项的请求的节点无权执行该操作。

此状态代码表示,发出读取特定数据项的请求的节点无权执行该操作。

kStatus_IllegalWriteRequest

此旧状态代码表示,发出写入特定数据项的请求的节点无权执行此操作。

此状态代码表示,发出写入特定数据项的请求的节点无权执行此操作。

kStatus_InvalidPath

此旧状态代码表示,视图或更新请求帧的路径列表中的路径与响应程序的节点驻留架构不匹配。

此状态代码表示,视图或更新请求帧的路径列表中的路径与响应程序的节点驻留架构不匹配。

kStatus_InvalidVersion

此旧版状态代码表示,更新请求中所含数据的版本与发布商上的最新版本不匹配,因此无法应用更新。

此状态代码表示,更新请求中所含数据的版本与发布商上的最新版本不匹配,因此无法应用更新。

kStatus_UnknownTopic

此旧状态代码表示取消请求或通知中提供的主题标识符与接收节点上现有的任何订阅都不匹配。

此状态代码表示,取消请求或通知中提供的主题标识符与接收节点上现有的任何订阅都不匹配。

kStatus_UnsupportedSubscriptionMode

此旧状态代码表示接收设备不支持所请求的订阅模式。

此状态代码表示接收设备不支持所请求的订阅模式。

@170

 @170

数据管理协议标记。

数据管理协议定义了一些将在配置数据的 TLV 表示形式中使用的标记。

和以往一样,新 WDM 和旧 WDM 之间会存在兼容性问题。过去,所有这些标记都是作为配置文件专用的,这样会浪费空间。现在,我们在可能的情况下尽可能使用上下文标记,但我们需要在适当的情况下保留旧标记(并具有一个使用它们对路径进行编码的机制)。

kTag_WDMDataListElementData 标记在之前的版本中未使用,而且被代码完全忽略,因此我们没有提供已废弃的版本。

属性
kTag_WDMDataList

元素是一个结构列表,其中包含路径、可选版本和数据元素。

代码类型:配置文件专属元素类型:数组处理:顶级

kTag_WDMDataListElementData

元素表示由指定路径所指向且具有指定版本的数据。

标记类型:上下文特定元素类型:任何处理:必需

kTag_WDMDataListElementData_Deprecated

已弃用。

标记类型:上下文特定元素类型:任何处理:必需

kTag_WDMDataListElementPath

元素是数据列表元素的路径组成部分。

标记类型:上下文相关元素类型:路径处置:必需

kTag_WDMDataListElementPath_Deprecated

已弃用。

代码类型:配置文件专属元素类型:路径处置:必填

kTag_WDMDataListElementVersion

该元素是数据列表元素的版本组件。

标记类型:上下文相关元素类型:整数处理:必需

kTag_WDMDataListElementVersion_Deprecated

已弃用。

代码类型:配置文件专属元素类型:整数处理:必需

kTag_WDMPathArrayIndexSelector

path 元素对应于架构中的一个数组,包含的整数元素将用作该数组的索引。

代码类型:配置文件专属元素类型:整数处理:可选

kTag_WDMPathArrayValueSelector

路径元素对应于架构中的一个数组,封装的元素将用作记录选择器。

代码类型:配置文件专属元素类型:结构处理:可选

kTag_WDMPathList

该元素是 TLV 路径列表。

代码类型:配置文件专属元素类型:数组处理:顶级

kTag_WDMPathProfile

元素是用于开始路径的结构,包含配置文件信息(根据要解读路径中的标记的信息)。

代码类型:配置文件专属元素类型:结构处理:必需

kTag_WDMPathProfileId

该元素是路径配置文件元素的配置文件 ID 组成部分,开始 TLV 路径。

标记类型:上下文相关元素类型:整数处理:必需

kTag_WDMPathProfileId_Deprecated

已弃用。

代码类型:配置文件专属元素类型:整数处理:必需

kTag_WDMPathProfileInstance

该元素是一个配置文件实例,可能跟在 TLV 路径中的配置文件 ID 后面。

请注意,一个节点不一定包含特定配置文件的多个实例,如果只有一个实例,此元素可能会被省略。

标记类型:上下文特定元素类型:任何处理:可选

kTag_WDMPathProfileInstance_Deprecated

已弃用。

代码类型:配置文件专属元素类型:任何处理方式:可选

@171

 @171

可区分的主题 ID。

这里有三个不同的相关主题 ID,所有这三个 ID 均采用“发布商专有”格式。

属性
kAnyTopicId

此 ID 已预留为通配符主题 ID。

kTopicIdNotSpecified

这是一个预留的特殊值,用于表示无效或通配符主题 ID。

kTopicIdPublisherSpecificMask

这可用作创建或分解 Topci ID 的掩码。

WeaveTransportOption

 WeaveTransportOption

WDM 传输选项。

这些都是 WDM 中互相排斥的传输方案。

属性
kTransport_TCP

底层传输是 TCP。

绑定可以使用服务管理器完成,也可以直接使用消息层完成。

kTransport_UDP

底层传输专用于 UDP。

kTransport_WRMP

底层传输完全是 UDP,但是具有“应用支持层”可靠性增强。

类型定义符

TopicIdentifier

uint64_t TopicIdentifier

主题标识符。

主题标识符是 64 位数字,具有两种相关用途/语义。首先,它们可以用作一组知名路径(例如“Nest 烟雾检测器”)的传统简写形式。以这种方式使用的主题 ID 应(与配置文件标识符一样)包含供应商代码,以防止不同供应商自主选择的主题 ID 发生冲突,如下所示:

位 48 - 63 位 0 - 47
供应商 ID 主题编号
主题标识符的第二种用途/语义出现在 WDM 客户端和发布者之间动态订阅的情况下。在这种情况下,发布者应始终提供代表特定订阅的唯一主题 ID,并且无论使用知名主题 ID 还是任意路径列表请求订阅,发布者都应这样做。这种形式的主题标识符通过供应商代码 0xFFFF 来区分。

另请参阅
WeaveVendorIdentifiers.hpp

函数

CheckTLVType

bool CheckTLVType(
  nl::Weave::TLV::TLVType aType,
  nl::Weave::TLV::TLVReader & aReader
)

检查正在读取的 TLV 元素是否具有预期的 TLV 类型。

根据 TLV 读取器头部的元素类型检查给定的 TLV 类型。

具体说明
参数
[in] aType
要针对特定元素检查的 TLVType
[in] aReader
对位于待检查元素的 TLV 读取器的引用
返回值
当且仅当元素的 TLVType 与 aType 匹配时,才返回 true。
另请参阅
WeaveTLVTypes.h

CheckWDMTag

bool CheckWDMTag(
  uint32_t aTagNum,
  nl::Weave::TLV::TLVReader & aReader
)

选中 WDM 专用代码。

检查 .../data-management/DMConstants.h 中 WDM 专用标签的数量,并与 TLV 读卡器头部的实际标签数量进行比较。

具体说明
参数
[in] aTagNum
要根据特定 TLV 元素检查的代码编号。
[in] aReader
TLV 读取器的引用,该读取器指向要检查的元素。
返回值
true iff aReader.GetTag() 生成的标记与给定标记号的预期标记形式之一匹配。

CloseDataListElement

WEAVE_ERROR CloseDataListElement(
  nl::Weave::TLV::TLVReader & aReader
)

停止读取 WDM 数据列表元素。

此方法假定相关元素是 WDM 数据列表的一部分,因此会将 kTLVType_Array 传递给 ExitContainer()。

具体说明
参数
[in,out] aReader
位于 WDM 数据列表元素中的 TLV 读取器。
返回值
WEAVE_NO_ERROR。成功时。否则,返回 WEAVE_ERROR,反映无法退出容器。

CloseList

WEAVE_ERROR CloseList(
  nl::Weave::TLV::TLVReader & aReader
)

停止读取 WDM 路径或数据列表。

此方法假定相关列表是最顶层的 TLV 元素,因此将 kTLVType_Sructure 传递给 ExitContainer()。

具体说明
参数
[in,out] aReader
位于 WDM 路径或数据列表中的 TLV 读取器。
返回值
WEAVE_NO_ERROR。成功时。否则,返回 WEAVE_ERROR,反映无法退出容器。

EncodeDeprecatedPath

WEAVE_ERROR EncodeDeprecatedPath(
  TLVWriter & aWriter,
  const uint64_t & aTag,
  uint32_t aProfileId,
  const uint64_t & aInstanceId,
  uint32_t aPathLen,
  ...
)

使用已弃用的标记和整数实例 ID 对 WDM 路径进行编码。

注意:在 Weave 版本 2.0 之前,请使用服务接受的已弃用标记集对路径进行编码。此版本的方法使用数字实例标识符。此方法启动具有 ProfileTag(kWeaveProfile_WDM, kTag_WDMPathProfile) 的容器,然后使用 ProfileTag(kWeaveProfile_WDM, kTag_WDMPathProfileId_Deprecated) 插入配置文件 ID。然后,它会使用 ProfileTag(kWeaveProfile_WDM, kTag_WDMPathProfileInstance_Deprecated) 插入实例 ID。这是路径编码的已弃用版本之一,新设计应避免使用这种格式。

具体说明
参数
[in] aWriter
对用于写出路径的 TLV 写入器的引用。
[in] aTag
对应用于此路径的完全限定 TLV 标记的引用。
[in] aProfileId
要解释路径元素的配置文件 ID。
[in] aInstanceId
对要使用的配置文件的可选实例 ID 的引用。
[in] aPathLen
初始配置文件说明符以外的路径元素列表的长度(可能是 0)。
[in] ...
其他路径标记的可变长度列表(可选)。
返回值
WEAVE_NO_ERROR。成功时。否则,返回 WEAVE_ERROR,说明无法设置给定路径的格式。

EncodeDeprecatedPath

WEAVE_ERROR EncodeDeprecatedPath(
  TLVWriter & aWriter,
  const uint64_t & aTag,
  uint32_t aProfileId,
  const char *aInstanceId,
  uint32_t aPathLen,
  ...
)

使用已弃用的标记和字符串实例 ID 对 WDM 路径进行编码。

注意:请使用已弃用的标记集对路径进行编码(请参阅 DMConstants.h)。此版本的方法使用实例 ID 字符串。此方法启动具有 ProfileTag(kWeaveProfile_WDM, kTag_WDMPathProfile) 的容器,然后使用 ProfileTag(kWeaveProfile_WDM, kTag_WDMPathProfileId_Deprecated) 插入配置文件 ID。然后,它会使用 ProfileTag(kWeaveProfile_WDM, kTag_WDMPathProfileInstance_Deprecated) 插入实例 ID。这是路径编码的已弃用版本之一,新设计应避免使用这种格式。

具体说明
参数
[in] aWriter
对用于写出路径的 TLV 写入器的引用。
[in] aTag
对应用于此路径的完全限定 TLV 标记的引用。
[in] aProfileId
要解释路径元素的配置文件 ID。
[in] aInstanceId
用作配置文件实例标识符的可选字符串。如果未指定实例 ID,则此参数可能为 NULL。
[in] aPathLen
初始配置文件说明符以外的路径元素列表的长度(可能是 0)。
[in] ...
其他路径标记的可变长度列表(可选)。
返回值
WEAVE_NO_ERROR。成功时。否则,返回 WEAVE_ERROR,说明无法设置给定路径的格式。

EncodePath

WEAVE_ERROR EncodePath(
  TLVWriter & aWriter,
  const uint64_t & aTag,
  uint32_t aProfileId,
  const uint64_t & aInstanceId,
  uint32_t aPathLen,
  ...
)

使用整数配置文件实例 ID 对 WDM 路径进行编码。

注意:请编写数据管理中使用的种类的 TLV 路径,其中特别要指出的是,应在开头指定配置文件,以便解释后续路径元素。此版本的方法采用整数资料实例 ID。

此方法使用 ContextTag(kTag_WDMPathProfileInstance) 插入实例 ID,这是对路径进行编码的最新版本。

具体说明
参数
[in] aWriter
对用于写出路径的 TLV 写入器的引用。
[in] aTag
对应用于此路径的完全限定 TLV 标记的引用。
[in] aProfileId
要解释路径元素的配置文件 ID。
[in] aInstanceId
对要使用的配置文件的可选实例标识符的引用。如果不使用实例 ID,则此参数的值为 kInstanceIdNotSpecified。
[in] aPathLen
初始配置文件说明符以外的路径元素列表的长度(可能是 0)。
[in] ...
其他路径标记的可变长度列表(可选)。
返回值
WEAVE_NO_ERROR。成功时。否则,返回 WEAVE_ERROR,说明无法设置给定路径的格式。

EncodePath

WEAVE_ERROR EncodePath(
  TLVWriter & aWriter,
  const uint64_t & aTag,
  uint32_t aProfileId,
  const uint32_t aInstanceIdLen,
  const uint8_t *aInstanceId,
  uint32_t aPathLen,
  ...
)

使用字节数组实例 ID 对 WDM 路径进行编码。

注意:请编写数据管理中使用的种类的 TLV 路径,其中特别要指出的是,应在开头指定配置文件,以便解释后续路径元素。此版本的方法使用字节数组配置文件实例 ID 和长度。

此方法使用 ContextTag(kTag_WDMPathProfileInstance) 插入实例 ID,这是对路径进行编码的最新版本。

具体说明
参数
[in] aWriter
对用于写出路径的 TLV 写入器的引用。
[in] aTag
对应用于此路径的完全限定 TLV 标记的引用。
[in] aProfileId
要解释路径元素的配置文件 ID。
[in] aInstanceIdLen
构成实例 ID 的字节数组的长度。如果没有 ID,则此参数的值应为 0。
[in] aInstanceId
用作配置文件实例标识符的可选字节数组。如果未指定实例 ID,则此参数可以为 NULL。
[in] aPathLen
初始配置文件说明符以外的路径元素列表的长度(可能是 0)。
[in] ...
其他路径标记的可变长度列表(可选)。
返回值
WEAVE_NO_ERROR。成功时。否则,返回 WEAVE_ERROR,说明无法设置给定路径的格式。

EncodePath

WEAVE_ERROR EncodePath(
  TLVWriter & aWriter,
  const uint64_t & aTag,
  uint32_t aProfileId,
  const char *aInstanceId,
  uint32_t aPathLen,
  ...
)

使用字符串实例 ID 对 WDM 路径进行编码。

注意:请编写数据管理中使用的种类的 TLV 路径,其中特别要指出的是,应在开头指定配置文件,以便解释后续路径元素。此版本的方法使用字符串配置文件实例 ID。

此方法使用 ContextTag(kTag_WDMPathProfileInstance) 插入实例 ID,这是对路径进行编码的最新版本。

具体说明
参数
[in] aWriter
对用于写出路径的 TLV 写入器的引用。
[in] aTag
对应用于此路径的完全限定 TLV 标记的引用。
[in] aProfileId
要解释路径元素的配置文件 ID。
[in] aInstanceId
用作配置文件实例标识符的可选字符串。如果未指定实例 ID,则此参数可能为 NULL。
[in] aPathLen
初始配置文件说明符以外的路径元素列表的长度(可能是 0)。
[in] ...
其他路径标记的可变长度列表(可选)。
返回值
WEAVE_NO_ERROR。成功时。否则,返回 WEAVE_ERROR,说明无法设置给定路径的格式。

EndDataListElement

WEAVE_ERROR EndDataListElement(
  nl::Weave::TLV::TLVWriter & aWriter
)

完成数据列表元素的写入。

为 WDM 数据列表元素的末尾写入 TLV。请注意,这会自动将类型 kTLVType_Array 传递到 EndContainer() 调用(假设我们始终关闭列表项)。

具体说明
参数
[in] aWriter
TLV 写入器的引用,用于写入项的结尾。
返回值
WEAVE_NO_ERROR。成功时。否则,返回 WEAVE_ERROR,反映无法结束容器。

EndEncodePath

WEAVE_ERROR EndEncodePath(
  TLVWriter & aWriter,
  TLVType & mOuterContainer,
  WEAVE_ERROR mError
)

EndList

WEAVE_ERROR EndList(
  nl::Weave::TLV::TLVWriter & aWriter
)

完成路径列表或数据列表的写入。

为 WDM 路径或数据列表的末尾写入 TLV。此外,确定撰写者。

具体说明
参数
[in,out] aWriter
TLV 写入器的引用,用于写入列表末尾。
返回值
WEAVE_NO_ERROR。成功时。否则,返回 WEAVE_ERROR,反映无法结束容器。

EndList

WEAVE_ERROR EndList(
  ReferencedTLVData & aList,
  nl::Weave::TLV::TLVWriter & aWriter
)

完成路径列表或数据列表的写入。

为 WDM 路径或数据列表的末尾写入 TLV。此外,确定撰写者。在这种情况下,系统会传入并修改将 TLV 写入到的 ReferencedTLVData 对象,以反映写入的数据量。

具体说明
参数
[in,out] aList
对将列表写入到的 ReferenceTLVData 对象的引用。
[in] aWriter
TLV 写入器的引用,用于写入列表末尾。
返回值
WEAVE_NO_ERROR。成功时。否则,返回 WEAVE_ERROR,反映无法结束容器。

IsPublisherSpecific

bool IsPublisherSpecific(
  const TopicIdentifier & aTopicId
)

检查主题 ID 是否为发布商专有。

具体说明
参数
[in] aTopicId
检查的主题标识符
返回值
如果主题 ID 是针对特定发布商的,则为 true,否则为 false

OpenDataList

WEAVE_ERROR OpenDataList(
  ReferencedTLVData & aDataList,
  nl::Weave::TLV::TLVReader & aReader
)

开始读取数据列表。

提供一个全新的读取器和一个数据列表,开始阅读列表并验证在此过程中最初遇到的标记和类型。如果一切顺利,读取器会在进入列表容器后停止。

具体说明
参数
[in] aDataList
作为对 ReferencedTLVData 对象的引用传递的数据列表。正常用例是收到列表后列表实际上仍在缓冲区中。
[out] aReader
对用于读取数据列表的 TLV 读取器的引用。此读卡器会向左指向在列表中的第一个项前面。
返回值
WEAVE_NO_ERROR。成功时。否则,返回 WEAVE_ERROR 来反映故障,请打开数据列表和/或验证相关标记和类型。

OpenDataListElement

WEAVE_ERROR OpenDataListElement(
  nl::Weave::TLV::TLVReader & aReader,
  nl::Weave::TLV::TLVReader & aPathReader,
  uint64_t & aVersion
)

开始读取数据列表元素。

假设某个读取器位于数据列表元素处,开始读取该元素并验证在此过程中最初遇到的标记和类型。如果一切进展顺利,读取器最终将位于数据元素数据处,而进/出路径读取器则位于相应路径。

具体说明
参数
[in] aReader
对位于数据列表元素的 TLV 读取器的引用。
[out] aPathReader
对要指向数据列表元素的路径组件的 TLV 读取器的引用。
[out] aVersion
对 64 位整数的引用,将设为数据列表元素版本(如果存在),否则设为 kVersionNotSpecified。
返回值
如果成功,则为 WEAVE_NO_ERROR;否则为与打开和读取数据列表元素相关的 WEAVE_ERROR

OpenPathList

WEAVE_ERROR OpenPathList(
  ReferencedTLVData & aPathList,
  nl::Weave::TLV::TLVReader & aReader
)

开始阅读路径列表。

提供一个全新的读取器和一个路径列表,开始阅读列表并验证在此过程中最初遇到的标记和类型。如果一切顺利,读取器会在进入列表容器后停止。

具体说明
参数
[in] aPathList
作为对 ReferencedTLVData 对象的引用传递的路径列表。正常用例是收到列表后列表实际上仍在缓冲区中。
[out] aReader
对用于读取路径列表的 TLV 读取器的引用。该读取器会向左指向第一个路径,正好位于列表中的第一个路径之前。
返回值
如果成功,则为 WEAVE_NO_ERROR;否则,如果返回 WEAVE_ERROR,则表示失败,请打开路径列表和/或验证相关标记和类型。

PublisherSpecificTopicId

TopicIdentifier PublisherSpecificTopicId(
  void
)

从头开始生成发布商专用主题 ID。

具体说明
返回值
新主题标识符。

SendStatusReport

WEAVE_ERROR SendStatusReport(
  ExchangeContext *aExchangeCtx,
  StatusReport & aStatus
)

StartDataList

WEAVE_ERROR StartDataList(
  nl::Weave::TLV::TLVWriter & aWriter
)

开始写入数据列表。

为 WDM 数据列表的开头写入 TLV,例如将其设为 UpdateRequest() 的主要参数。

具体说明
参数
[in] aWriter
对开始写入的 TLV 写入器的引用。
返回值
WEAVE_NO_ERROR。成功时。否则,返回 WEAVE_ERROR,反映无法启动容器。

StartDataList

WEAVE_ERROR StartDataList(
  ReferencedTLVData & aDataList,
  nl::Weave::TLV::TLVWriter & aWriter
)

开始将数据列表写入给定的 ReferencedTLVData 对象。

为 WDM 数据列表的开头写入 TLV。在本例中,我们假设要将数据列表写入到引用的 TLV 数据结构中。写入者被视为未初始化,或者在任何情况下都会初始化为指向指定对象。

具体说明
参数
[out] aDataList
ReferencedTLVData 对象的引用,该对象将作为写入者的目标,最终包含感兴趣的数据。
[in] aWriter
对开始写入的 TLV 写入器的引用。
返回值
WEAVE_NO_ERROR。成功时。否则,返回 WEAVE_ERROR,反映无法启动容器。

StartDataListElement

WEAVE_ERROR StartDataListElement(
  nl::Weave::TLV::TLVWriter & aWriter
)

开始写入数据列表元素。

为 WDM 数据列表元素的开头写入 TLV

具体说明
参数
[in] aWriter
对开始写入的 TLV 写入器的引用。
返回值
WEAVE_NO_ERROR。成功时。否则,返回 WEAVE_ERROR,反映无法启动容器。

StartEncodePath

WEAVE_ERROR StartEncodePath(
  TLVWriter & aWriter,
  const uint64_t & aTag,
  uint32_t aProfileId,
  TLVType & mOuterContainer,
  TLVType & mPath
)

StartPathList

WEAVE_ERROR StartPathList(
  nl::Weave::TLV::TLVWriter & aWriter
)

开始编写路径列表。

为 WDM 路径列表的开头写入 TLV,例如将其设为 ViewRequest() 的主要参数。

具体说明
参数
[in] aWriter
对开始写入的 TLV 写入器的引用。
返回值
WEAVE_NO_ERROR。成功时。否则,返回 WEAVE_ERROR,反映无法启动容器。

TxnResponseHandler

void TxnResponseHandler(
  ExchangeContext *anExchangeCtx,
  const IPPacketInfo *anAddrInfo,
  const WeaveMessageInfo *aMsgInfo,
  uint32_t aProfileId,
  uint8_t aMsgType,
  PacketBuffer *aMsg
)

TxnTimeoutHandler

void TxnTimeoutHandler(
  ExchangeContext *anExchangeCtx
)

ValidateTLVType

WEAVE_ERROR ValidateTLVType(
  nl::Weave::TLV::TLVType aType,
  nl::Weave::TLV::TLVReader & aReader
)

验证正在读取的 TLV 元素是否为预期的 TLV 类型。

根据 TLV 读取器头部的元素类型检查给定的 TLV 类型,如果不匹配,则返回错误。

具体说明
参数
[in] aType
要针对特定元素进行验证的 TLVType。
[in] aReader
TLV 读取器的引用,该读取器位于要验证的元素旁。
返回值
如果存在匹配项,则为 WEAVE_NO_ERROR;否则为 WEAVE_ERROR_WRONG_TLV_TYPE
另请参阅
WeaveTLVTypes.h

ValidateWDMTag

WEAVE_ERROR ValidateWDMTag(
  uint32_t aTagNum,
  nl::Weave::TLV::TLVReader & aReader
)

验证正在读取的 TLV 元素是否具有预期的 WDM 标记。

具体说明
参数
[in] aTagNum
预期 WDM 代码的 32 位代码编号。
[in] aReader
位于待验证元素的 TLV 读取器。
返回值
WEAVE_NO_ERROR。成功时。否则,如果在解析为 WDM 代码时与给定的代码编号不匹配,则为 WEAVE_ERROR_INVALID_TLV_TAG