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
可变长度的 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
要根据此 ImageQuery 进行检查的 ImageQuery
返回值
如果两个对象中的所有字段都相等,则返回 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