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 采用的结构,其读取方式与运行中表示法略有不同。特别是,version 和 locale 是以 null 结尾的 c 字符串(而不是(长度, 个字符)元组),并且两个可选项都表示为可为 null 的指针,因此没有单独的布尔值可以检查。

构造函数和析构函数

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

公共属性

integrityTypes
设备支持的完整性类型。
localeSpec
一个可变长度的 UTF-8 字符串,其中包含在进行图片查询的设备上生效的 POSIX 语言区域。
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

公共属性

integrityTypes

IntegrityTypeList integrityTypes

设备支持的完整性类型。

localeSpec

ReferencedString localeSpec

一个可变长度的 UTF-8 字符串,其中包含在进行图片查询的设备上生效的 POSIX 语言区域。

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

packageSpec

ReferencedString packageSpec

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

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

productSpec

ProductSpec productSpec

产品规范,用于描述查询图片的设备。

targetNodeId

uint64_t targetNodeId

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

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

“目标节点 ID”字段通常用于以下情况下:作为“图片查询”消息的来源的节点用作其他节点的软件更新代理。

theMetaData

ReferencedTLVData theMetaData

供应商特定数据字段的长度是可变的,并且占用除上述字段之外的 Weave 消息载荷的其余部分。

该字段可对针对设备执行查询的设备的供应商特定信息进行编码。供应商专用数据字段为选填字段。如果存在,则该字段具有匿名 TLV 编码结构形式。该结构中显示的标记应为完全限定的特定于配置文件的标记。

updateSchemes

UpdateSchemeList updateSchemes

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

版本

ReferencedString version

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

长度不得超过 32 个字符。

公共函数

ImageQuery

 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 太长