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,因為結構與傳輸中的表示法稍有不同。具體來說,版本和語言代碼是為空值的 c 字串 (而非長度、字元) 元組,兩個選用項目都會表示為可為空值指標,因此沒有個別的布林值可檢查。

建構函式和解構函式

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 語言代碼 ID 格式,例如en_AU.UTF-8 代表澳洲英文。

packageSpec

ReferencedString packageSpec

長度 UTF-8 的變數字串,內含供應商專屬的套件規格字串。

欄位內容會說明所需的軟體映像檔容器類型,例如「rpm」、「deb」、「tgz」、「elf」等 (注意:這個欄位不適用於通訊協定的 Nest 實作項目)

productSpec

ProductSpec productSpec

產品規格,用於說明執行圖片查詢的裝置。

targetNodeId

uint64_t targetNodeId

選用的節點 ID,表示要查詢的裝置。

目標節點 ID 為選填欄位。如未指定,查詢的目標節點 ID 會隱含圖片查詢訊息的來源節點。

當 IMAGE QUERY 訊息的來源節點做為另一個節點的軟體更新 Proxy 時,目標節點 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 太長