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 进行编码。

ResourceIdentifier 也体现了整个 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
一个 TLV 读取器,位于 ResourceIdentifier 元素中
返回值
WEAVE_NO_ERROR(如果成功)。如果无法正确读取 ResourceIdentifier,则 TLVReader 会出现错误。

FromTLV

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

TLV 表示形式的 ResourceIdentifier 反序列化到此对象中。

详细信息
参数
[in] aReader
一个 TLV 读取器,位于 ResourceIdentifier 元素中
[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)