нл:: Переплетение:: Профили:: Обновление программного обеспечения:: ImageQuery

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

Класс для поддержки создания и декодирования сообщений запроса изображений.

Краткое содержание

Кадр запроса изображения по сети имеет следующую форму:

Длина Имя поля
1 байт контроль кадра
6 байт спецификация продукта
переменная спецификация версии
2..4 байта список типов целостности
2..5 байт обновить список схем
переменная спецификация локали (необязательно)
8 байт идентификатор целевого узла
переменная данные поставщика (необязательно)
где поле управления кадром имеет следующие битовые поля:

Кусочек Значение
0 1 – данные производителя присутствуют, 0 – нет
1 1 — спецификация локали присутствует, 0 — нет.
2 1 — идентификатор целевого узла присутствует, 0 — нет.
3..7 Сдержанный
ImageQuery как структура читается немного иначе, чем представление в реальном времени. В частности, версия и локаль представляют собой c-строки с нулевым завершением (в отличие от кортежей (длина, символы)), а оба необязательных элемента представлены как указатели, допускающие значение NULL, поэтому нет отдельного логического значения для проверки.

Конструкторы и деструкторы

ImageQuery ()
Конструктор по умолчанию для ImageQuery .

Публичные атрибуты

integrityTypes
Типы целостности, поддерживаемые устройством.
localeSpec
Строка UTF-8 переменной длины, содержащая локаль POSIX, действующую на устройстве, для которого выполняется запрос изображения.
packageSpec
Строка UTF-8 переменной длины, содержащая строку спецификации пакета, зависящую от поставщика.
productSpec
Спецификация продукта, описывающая устройство, выполняющее запрос изображения.
targetNodeId
uint64_t
Необязательный идентификатор узла устройства, для которого выполняется запрос.
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

Строка UTF-8 переменной длины, содержащая локаль POSIX, действующую на устройстве, для которого выполняется запрос изображения.

Содержимое строки должно соответствовать формату идентификатора локали POSIX, как указано в ISO/IEC 15897, например en_AU.UTF-8 для австралийского английского языка.

спецификация пакета

ReferencedString packageSpec

Строка UTF-8 переменной длины, содержащая строку спецификации пакета, зависящую от поставщика.

Содержимое поля описывает желаемый тип контейнера для образа программного обеспечения, например «rpm», «deb», «tgz», «elf» и т. д. (ПРИМЕЧАНИЕ. Это поле не используется в реализациях протокола Nest).

Спецификация продукта

ProductSpec productSpec

Спецификация продукта, описывающая устройство, выполняющее запрос изображения.

целевойнодеид

uint64_t targetNodeId

Необязательный идентификатор узла устройства, для которого выполняется запрос.

Поле идентификатора целевого узла является необязательным. Если он отсутствует, идентификатор целевого узла для запроса неявно является узлом, который был источником сообщения запроса изображения.

Поле идентификатора целевого узла обычно используется в тех случаях, когда узел, являющийся источником сообщения IMAGE QUERY, служит прокси-сервером обновления программного обеспечения для другого узла.

метаданные

ReferencedTLVData theMetaData

Поле данных, зависящее от поставщика, имеет переменную длину и занимает остальную часть полезных данных сообщения Weave, помимо полей, описанных выше.

В этом поле кодируется информация поставщика об устройстве, для которого делается запрос. Поле данных, зависящее от поставщика, является необязательным. Если оно присутствует, оно имеет форму анонимной структуры, закодированной в TLV. Теги, представленные в этой структуре, должны быть полностью определенными тегами, специфичными для профиля.

updateSchemes

UpdateSchemeList updateSchemes

Схемы обновления (протоколы загрузки), поддерживаемые устройством.

версия

ReferencedString version

Строка UTF-8 переменной длины, содержащая указанную поставщиком версию программного обеспечения устройства, для которого выполняется запрос.

Должен иметь длину 32 или меньше.

Общественные функции

ImageQuery

 ImageQuery()

Конструктор по умолчанию для ImageQuery .

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
Необязательный идентификатор целевого узла.
[in] aMetaData
Необязательный большой двоичный объект данных поставщика в кодировке TLV.
Возврат
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
)

Публичные статические функции

анализировать

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 Если сообщение содержало слишком длинный список IntegrityTypeList или UpdateSchemeList .