nl::Weave::Profiles::DataManagement_Current::ResourceIdentifier

#include <src/lib/profiles/data-management/Current/ResourceIdentifier.h>

封装资源 ID 的结构。

摘要

ResourceIdentifier 可以是特定类型的通用 64 位对象 ID,也可以是 UUID。在外部编码时,支持以下表示法:

与 DEVICE 类型的通用对象对应的无符号 64 位整数,具有表示法中指定的 ID

编码为 10 个八位字节的字节字符串的通用表示法。前两个八位字节将资源类型编码为一个 16 位的小字节序整数,其余 8 个字节编码为一个小字节序的 64 位资源 ID。

ResourceIdentifiers 体现了整个 WDM 代码中存在的惯例:空的 ResourceIdentifier 对应于设备的节点 ID,并且我们针对最常见的用例提供了构造函数。

构造函数和析构函数

ResourceIdentifier()
构造一个与未指定的 ResourceID 对应的 ResourceIdentifier
ResourceIdentifier(const uint64_t & aNodeId)
根据给定的 aNodeId 构造一个类型为 DEVICE 的 ResourceIdentifier
ResourceIdentifier(uint16_t aResourceType, const uint64_t & aResourceId)
使用给定 ID 构造指定类型的 ResourceIdentifier
ResourceIdentifier(uint16_t aResourceType, const uint8_t *aResourceId, size_t aResourceIdLen)
使用给定 ID 构造指定类型的 ResourceIdentifier

公共类型

@125{
  RESOURCE_TYPE_RESERVED = 0
}
枚举
@126 枚举
为 NodeId 定义一个引用“self”的特殊值。
@127 枚举

公共属性

ResourceId
uint64_t
ResourceIdBytes[8]
uint8_t

公共函数

FromString(const char *inBuffer, size_t inBufferLen)
将资源的规范字符串表示形式解析为资源对象。
FromString(const char *inBuffer, size_t inBufferLen, const uint64_t & aSelfNodeId)
将资源的规范字符串表示形式解析为资源对象。
FromTLV(nl::Weave::TLV::TLVReader & aReader)
TLV 表示中的 ResourceIdentifier 反序列化为该对象。
FromTLV(nl::Weave::TLV::TLVReader & aReader, const uint64_t & aSelfNodeId)
TLV 表示中的 ResourceIdentifier 反序列化为该对象。
GetResourceId() const
uint64_t
用于提取 ResourceId 的访问函数。
GetResourceType() const
uint16_t
用于提取 ResourceType 的访问函数。
ResourceTypeAsString(void) const
const char *
生成 ResourceType 的字符串表示形式。
ToString(char *buffer, size_t bufferLen)
ResourceIdentifier 转换为可打印的字符串。
ToTLV(nl::Weave::TLV::TLVWriter & aWriter) const
使用上下文 Path::ResourceID 标记将资源序列化为 TLV 表示法。
ToTLV(nl::Weave::TLV::TLVWriter & aWriter, const uint64_t & aTag) const
使用给定标记将资源序列化为 TLV 表示法。

公共静态函数

ResourceTypeAsString(uint16_t aResourceType)
const char *
生成资源类型的字符串表示形式。

朋友课程

operator==
friend bool

公共类型

@125

 @125
属性
RESOURCE_TYPE_RESERVED

预留的资源类型。

选择枚举时,应确保其与 Schema::Weave:::Common::ResourceType 枚举中的枚举值不冲突。目前,RESERVED 资源类型有两个 ResourceId 值:kNodeIdNotSpecified 对应于统一化的 ResourceIdentifier,SELF_NODE_ID 对应于将从任何其他表示法重新映射到 SELF 的资源。

@126

 @126

为 NodeId 定义一个引用“self”的特殊值。

在某些 WDM 交互中,将资源值设置为 self 可以压缩该信息,因为它对于 Weave 消息本身中表示的设备源节点 ID 而言是多余的

@127

 @127

公共属性

ResourceId

uint64_t ResourceId

ResourceIdBytes

uint8_t ResourceIdBytes[8]

公共函数

FromString

WEAVE_ERROR FromString(
  const char *inBuffer,
  size_t inBufferLen
)

将资源的规范字符串表示形式解析为资源对象。

将资源的规范字符串表示形式转换为资源对象。请注意,只有一部分资源可以表示为字符串,具体而言,Weave 中的参考实现将仅解析 ResourceTypeEnum 中表示的规范类型的资源。

具体说明
参数
[in] inBuffer
包含要解析的资源 ID 的缓冲区
[in] inBufferLen
要解析的字符串的长度(以字节为单位)

FromString

WEAVE_ERROR FromString(
  const char *inBuffer,
  size_t inBufferLen,
  const uint64_t & aSelfNodeId
)

将资源的规范字符串表示形式解析为资源对象。

将资源的规范字符串表示形式转换为资源对象。请注意,只有一部分资源可以表示为字符串,具体而言,Weave 中的参考实现将仅解析 ResourceTypeEnum 中表示的规范类型的资源。

具体说明
参数
[in] inBuffer
包含要解析的资源 ID 的缓冲区
[in] inBufferLen
要解析的字符串的长度(以字节为单位)
[in] aSelfNodeId
64 位 ID,表示应将哪个设备 ID 映射到 SELF_NODE_ID

FromTLV

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

TLV 表示中的 ResourceIdentifier 反序列化为该对象。

具体说明
参数
[in] aReader
位于 ResourceIdentifier 元素上的 TLV 读取器
返回值
成功时返回 WEAVE_NO_ERROR。如果 ResourceIdentifier 无法正确读取,则来自 TLVReader 的错误。

FromTLV

WEAVE_ERROR FromTLV(
  nl::Weave::TLV::TLVReader & aReader,
  const uint64_t & aSelfNodeId
)

TLV 表示中的 ResourceIdentifier 反序列化为该对象。

具体说明
参数
[in] aReader
位于 ResourceIdentifier 元素上的 TLV 读取器
[in] aSelfNodeId
64 位 ResourceID,将从序列化表示法重新映射到 SELF_NODE_ID
返回值
成功时返回 WEAVE_NO_ERROR。如果 ResourceIdentifier 无法正确读取,则来自 TLVReader 的错误。

GetResourceId

uint64_t GetResourceId() const 

用于提取 ResourceId 的访问函数。

GetResourceType

uint16_t GetResourceType() const 

用于提取 ResourceType 的访问函数。

ResourceIdentifier

 ResourceIdentifier()

构造一个与未指定的 ResourceID 对应的 ResourceIdentifier

未指定的资源 ID 是一个元组,由 RESERVED 资源类型和 kNodeIdNotSpeficied 资源组成。

ResourceIdentifier

 ResourceIdentifier(
  const uint64_t & aNodeId
)

根据给定的 aNodeId 构造一个类型为 DEVICE 的 ResourceIdentifier

具体说明
参数
[in] aNodeId
指定资源 ID 的 NodeId

ResourceIdentifier

 ResourceIdentifier(
  uint16_t aResourceType,
  const uint64_t & aResourceId
)

使用给定 ID 构造指定类型的 ResourceIdentifier

具体说明
参数
[in] aResourceType
要命名的资源类型
[in] aResourceId
要命名的资源的 ID

ResourceIdentifier

 ResourceIdentifier(
  uint16_t aResourceType,
  const uint8_t *aResourceId,
  size_t aResourceIdLen
)

使用给定 ID 构造指定类型的 ResourceIdentifier

具体说明
参数
[in] aResourceType
要命名的资源类型
[in] aResourceId
以字节数组表示的要命名的资源的 ID
[in] aResourceIdLen
ID 的长度(以字节为单位)

ResourceTypeAsString

const char * ResourceTypeAsString(
  void
) const 

生成 ResourceType 的字符串表示形式。

转换的资源类型是 ResourceTypeEnum.h 中枚举的资源类型,以及 0(对应于 RESOURCE_TYPE_RESERVED)

ToString

WEAVE_ERROR ToString(
  char *buffer,
  size_t bufferLen
)

ResourceIdentifier 转换为可打印的字符串。

具体说明
参数
[in] buffer
用于打印的缓冲区
[in] bufferLen
缓冲区的长度

ToTLV

WEAVE_ERROR ToTLV(
  nl::Weave::TLV::TLVWriter & aWriter
) const 

使用上下文 Path::ResourceID 标记将资源序列化为 TLV 表示法。

具体说明
参数
[in] aWriter
一个 TLV 写入器,用于将 ResourceIdentifier 序列化为

ToTLV

WEAVE_ERROR ToTLV(
  nl::Weave::TLV::TLVWriter & aWriter,
  const uint64_t & aTag
) const 

使用给定标记将资源序列化为 TLV 表示法。

具体说明
参数
[in] aWriter
一个 TLV 写入器,用于将 ResourceIdentifier 序列化为
[in] aTag
为序列化 ResourceIdentifier 命名的标记

公共静态函数

ResourceTypeAsString

const char * ResourceTypeAsString(
  uint16_t aResourceType
)

生成资源类型的字符串表示形式。

转换的资源类型是 ResourceTypeEnum.h 中枚举的资源类型,以及 0(对应于 RESOURCE_TYPE_RESERVED)

具体说明
参数
[in] aResourceType
要转换为字符串表示法的资源类型枚举。

朋友课程

运算符==

friend bool operator==(const ResourceIdentifier &lhs, const ResourceIdentifier &rhs)