nl::Weave::Profiles::SoftwareUpdate::ImageQuery

#include <src/lib/profiles/software-update/SoftwareUpdateProfile.h>

该类支持创建和解码图片查询消息。

总结

图像查询框架采用以下形式(通过网络)

时长 字段名称
1 个字节 画面控制
6 个字节 产品规格
变量 版本规范
2..4 字节 完整性类型列表
2..5 字节 更新方案列表
变量 语言区域规范(可选)
8 个字节 目标节点 ID
变量 供应商特定数据(可选)
其中,帧控制字段的位字段如下所示:

钻头 含义
0 1 - 存在特定于供应商的数据,0 - 不存在
1 1 - 存在语言区域规范,0 - 不存在
2 1 - 存在目标节点 ID,0 - 不存在
3.7 预留
ImageQuery,因为结构读取方式与运行中的表示法略有不同。特别是,版本和语言区域是以 null 结尾的 c 字符串(而不是长度、字符)元组,并且两个可选项目都表示为可为 null 的指针,因此没有单独的布尔值需要检查。

构造函数和构造函数

ImageQuery()
ImageQuery 的默认构造函数。

公共属性

integrityTypes
设备支持的完整性类型。
localeSpec
包含图片查询的设备上的 POSIX 语言区域有效的可变长度 UTF-8 字符串。
packageSpec
包含供应商专用软件包规范字符串的可变长度 UTF-8 字符串。
productSpec
对进行图片查询的设备进行产品规范。
targetNodeId
uint64_t
为其执行查询的设备的可选节点 ID。
theMetaData
供应商专用数据字段的长度可变,并除 Weave 消息载荷的剩余部分外,超出上述字段。
updateSchemes
设备支持的更新方案(下载协议)。
version
一个可变长度的 UTF-8 字符串,其中包含查询的设备的供应商指定的软件版本。

公共函数

init(ProductSpec & aProductSpec, ReferencedString & aVersion, IntegrityTypeList & aTypeList, UpdateSchemeList & aSchemeList, ReferencedString *aPackage, ReferencedString *aLocale, uint64_t aTargetNodeId, ReferencedTLVData *aMetaData)
使用提供的值明确初始化 ImageQuery 对象。
operator==(const ImageQuery &) const
bool
等式运算符。
pack(PacketBuffer *)
将底层 ImageQuery 序列化到提供的 PacketBuffer 中。
print(void)
void

公共静态函数

parse(PacketBuffer *, ImageQuery &)
将 PacketBuffer 中提供的图片查询消息反序列化为提供的 ImageQuery

公共属性

完整性类型

IntegrityTypeList integrityTypes

设备支持的完整性类型。

语言区域规范

ReferencedString localeSpec

包含图片查询的设备上的 POSIX 语言区域有效的可变长度 UTF-8 字符串。

该字符串的内容必须符合 ISO/IEC 15897 中规定的 POSIX 语言区域标识符格式,例如澳大利亚英语的 en_AU.UTF-8。

packageSpec

ReferencedString packageSpec

包含供应商专用软件包规范字符串的可变长度 UTF-8 字符串。

此字段的内容描述了软件映像所需的容器类型,例如“rpm”、“deb”、“tgz”和“elf”等(注意:此字段在协议的 Nest 实现中未使用)

product 规范

ProductSpec productSpec

对进行图片查询的设备进行产品规范。

目标节点 ID

uint64_t targetNodeId

为其执行查询的设备的可选节点 ID。

目标节点 ID 字段为可选字段。如果不存在,查询的目标节点 ID 便是作为图片查询消息的来源的节点。

在符合以下条件的情况下,目标节点 ID 字段通常用作映像查询消息的来源节点,作为另一节点的软件更新代理。

元数据

ReferencedTLVData theMetaData

供应商专用数据字段的长度可变,并除 Weave 消息载荷的剩余部分外,超出上述字段。

此字段会对要查询的设备进行供应商专用信息编码。供应商专用数据字段为选填字段。如果存在,该字段将采用匿名 TLV 编码结构。此结构中呈现的代码应该是完全限定的个人资料专用代码。

updateSchemes

UpdateSchemeList updateSchemes

设备支持的更新方案(下载协议)。

version

ReferencedString version

一个可变长度的 UTF-8 字符串,其中包含查询的设备的供应商指定的软件版本。

长度不得超过 32。

公共函数

图片查询

 ImageQuery()

ImageQuery 的默认构造函数。

可通过调用 init() 或通过从消息中反序列化对象来填充 ImageQuery

init

WEAVE_ERROR init(
  ProductSpec & aProductSpec,
  ReferencedString & aVersion,
  IntegrityTypeList & aTypeList,
  UpdateSchemeList & aSchemeList,
  ReferencedString *aPackage,
  ReferencedString *aLocale,
  uint64_t aTargetNodeId,
  ReferencedTLVData *aMetaData
)

使用提供的值明确初始化 ImageQuery 对象。

详情
参数
[in] aProductSpec
产品规格。
[in] aVersion
当前安装的软件版本。
[in] aTypeList
客户端支持的完整性类型。
[in] aSchemeList
客户端支持的更新方案。
[in] aPackage
客户端支持的可选软件包规范。
[in] aLocale
客户端请求的可选语言区域规范。
[in] aTargetNodeId
(可选)目标节点 ID。
[in] aMetaData
可选 TLV 编码的供应商数据 blob。
退货
WEAVE_NO_ERROR(无条件)。

运算符==

bool operator==(
  const ImageQuery &
) const 

等式运算符。

详情
参数
another
要用于检查此 ImageQueryImageQuery
退货
如果两个对象中的所有字段相等,则返回 true,否则返回 false

WEAVE_ERROR pack(
  PacketBuffer *
)

将底层 ImageQuery 序列化到提供的 PacketBuffer 中。

详情
参数
[in] aBuffer
将查询打包到的数据包缓冲区
返回值
WEAVE_NO_ERROR
成功时
WEAVE_ERROR_BUFFER_TOO_SMALL
如果 ImageQuery 太大而无法放入提供的缓冲区。

平面

void print(
  void
)

公共静态函数

parse

WEAVE_ERROR parse(
  PacketBuffer *,
  ImageQuery &
)

将 PacketBuffer 中提供的图片查询消息反序列化为提供的 ImageQuery

详情
参数
[in] aBuffer
指向要解析图片查询的数据包的指针
[in] aQuery
将结果放入其中的对象
退货
WEAVE_NO_ERROR 成功时
退货
WEAVE_ERROR_BUFFER_TOO_SMALL 如果消息太小而无法包含 ImageQuery 的所有字段
退货
WEAVE_ERROR_INVALID_LIST_LENGTH 如果消息包含过长的 IntegrityTypeListUpdateSchemeList