нл:: Переплетение:: Профили:: DataManagement_Current:: TraitSchemaEngine

#include <src/lib/profiles/data-management/Current/TraitData.h>

Механизм схемы принимает информацию о схеме, связанную с конкретным признаком, и предоставляет средства для анализа и перевода ее в форму, пригодную для использования механизмом WDM.

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

Сюда входит преобразование PathHandles в пути WDM (и наоборот), методы интерпретации/запроса самой схемы и методы, помогающие читать/записывать данные в/из TLV с учетом дескриптора.

Сама схема хранится в табличной форме и достаточно описана, чтобы обеспечить общий анализ/композицию путей/данных WDM для любого заданного признака. Эти таблицы будут конечным результатом «code-gen» (сам термин несколько вводит в заблуждение, учитывая отсутствие какого-либо сгенерированного кода: P)

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

kHandleTableOffset = 2
const uint32_t

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

mSchema
const Schema

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

FindLowestCommonAncestor ( PropertyPathHandle aHandle1, PropertyPathHandle aHandle2, PropertyPathHandle *aHandle1BranchChild, PropertyPathHandle *aHandle2BranchChild) const
Учитывая два дескриптора свойства, вычислите самый низкий дескриптор, который будет родительским для обоих этих дескрипторов.
GetChildHandle ( PropertyPathHandle aParentHandle, uint8_t aContextTag) const
GetDepth ( PropertyPathHandle aHandle) const
int32_t
Вычислить глубину дерева схемы для данного дескриптора.
GetDictionaryItemHandle ( PropertyPathHandle aParentHandle, uint16_t aDictionaryKey) const
GetFirstChild ( PropertyPathHandle aParentHandle) const
Возвращает первый дочерний дескриптор, связанный с конкретным родителем.
GetHighestForwardVersion (SchemaVersion aVersion) const
SchemaVersion
Учитывая предоставленную версию схемы данных, будет возвращена самая высокая версия схемы, совместимая с предыдущими версиями.
GetLowestCompatibleVersion (SchemaVersion aVersion) const
SchemaVersion
Учитывая предоставленную версию схемы данных, будет возвращена минимальная совместимая версия схемы.
GetMap ( PropertyPathHandle aHandle) const
const PropertyInfo *
Возвращает указатель на структуру PropertyInfo , описывающую конкретный дескриптор пути.
GetMaxVersion () const
SchemaVersion
GetMinVersion () const
SchemaVersion
GetNextChild ( PropertyPathHandle aParentId, PropertyPathHandle aChildHandle) const
Учитывая дескриптор существующего дочернего элемента, возвращает следующий дескриптор дочернего элемента, связанный с конкретным родительским элементом.
GetParent ( PropertyPathHandle aHandle) const
Возвращает родительский дескриптор заданного дочернего дескриптора пути.
GetProfileId (void) const
uint32_t
Возвращает идентификатор профиля связанного признака.
GetRelativePathTags (const PropertyPathHandle aCandidateHandle, uint64_t *aTags, const uint32_t aTagsSize, uint32_t & aNumTags) const
Преобразует PropertyPathHandle в массив тегов контекста.
GetTag ( PropertyPathHandle aHandle) const
uint64_t
Возвращает тег, связанный с дескриптором пути.
GetVersionIntersection ( SchemaVersionRange & aVersion, SchemaVersionRange & aIntersection) const
bool
Учитывая диапазон версий, эта функция проверяет, существует ли пересечение совместимости между ним и тем, что поддерживается схемой, поддерживающей этот механизм схемы.
IsDictionary ( PropertyPathHandle aHandle) const
bool
Возвращает true, если дескриптор является словарем (а не в словаре — см. метод ниже).
IsEphemeral ( PropertyPathHandle aHandle) const
bool
IsInDictionary ( PropertyPathHandle aHandle, PropertyPathHandle & aDictionaryItemHandle) const
bool
Возвращает true, если дескриптор находится внутри словаря (элемента словаря).
IsLeaf ( PropertyPathHandle aPropertyHandle) const
bool
Возвращает true, если дескриптор ссылается на листовой узел в дереве схемы.
IsNullable ( PropertyPathHandle aHandle) const
bool
IsOptional ( PropertyPathHandle aHandle) const
bool
IsParent ( PropertyPathHandle aChildHandle, PropertyPathHandle aParentHandle) const
bool
Проверяет, является ли данный дескриптор дочерним элементом другого дескриптора.
MapHandleToPath ( PropertyPathHandle aHandle, nl::Weave::TLV::TLVWriter & aPathWriter) const
Преобразуйте дескриптор пути в путь TLV .
MapPathToHandle ( nl::Weave::TLV::TLVReader & aPathReader, PropertyPathHandle & aHandle) const
Учитывая, что считыватель расположен в корне элемента пути WDM, прочитайте соответствующие теги и укажите эквивалентный дескриптор пути.
MapPathToHandle (const char *aPathString, PropertyPathHandle & aHandle) const
Учитывая строковое представление пути WDM, прочтите соответствующие теги и укажите эквивалентный дескриптор пути.
MatchesProfileId (uint32_t aProfileId) const
bool
Возвращает true, если переданный идентификатор профиля совпадает с идентификатором, хранящимся в схеме.
RetrieveData ( PropertyPathHandle aHandle, uint64_t aTagToWrite, nl::Weave::TLV::TLVWriter & aWriter, IGetDataDelegate *aDelegate, IDirtyPathCut *apDirtyPathCut) const
Учитывая дескриптор пути и позицию записи в соответствующем элементе данных, извлеките конечные данные из источника и запишите их в буфер, на который указывает средство записи, в соответствии со схемой.
RetrieveUpdatableDictionaryData ( PropertyPathHandle aHandle, uint64_t aTagToWrite, nl::Weave::TLV::TLVWriter & aWriter, IGetDataDelegate *aDelegate, PropertyPathHandle & aPropertyPathHandleOfDictItemToStartFrom) const
StoreData ( PropertyPathHandle aHandle, nl::Weave::TLV::TLVReader & aReader, ISetDataDelegate *aDelegate, IPathFilter *aPathFilter) const
Учитывая дескриптор пути и устройство чтения, расположенное на соответствующем элементе данных, обработайте буфер данных, на который указывает устройство чтения, и сохраните его в приемнике, вызывая вызов SetLeafData всякий раз, когда встречается элемент данных листа.

Классы

nl:: Weave:: Profiles:: DataManagement_Current:: TraitSchemaEngine:: IGetDataDelegate
nl:: Weave:: Profiles:: DataManagement_Current:: TraitSchemaEngine:: ISetDataDelegate

Структуры

nl:: Weave:: Profiles:: DataManagement_Current:: TraitSchemaEngine:: PropertyInfo
nl:: Weave:: Profiles:: DataManagement_Current:: TraitSchemaEngine:: Schema

Основная структура схемы, в которой хранится информация о схеме.

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

kHandleTableOffset

const uint32_t kHandleTableOffset = 2

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

мСхема

const Schema mSchema

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

НайтиLowestCommonAncestor

PropertyPathHandle FindLowestCommonAncestor(
  PropertyPathHandle aHandle1,
  PropertyPathHandle aHandle2,
  PropertyPathHandle *aHandle1BranchChild,
  PropertyPathHandle *aHandle2BranchChild
) const 

Учитывая два дескриптора свойства, вычислите самый низкий дескриптор, который будет родительским для обоих этих дескрипторов.

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

Подробности
Возвращаемые значения
PropertyPathHandle
Дескриптор самого низкого родителя.

GetChildHandle

PropertyPathHandle GetChildHandle(
  PropertyPathHandle aParentHandle,
  uint8_t aContextTag
) const 

Получить глубину

int32_t GetDepth(
  PropertyPathHandle aHandle
) const 

Вычислить глубину дерева схемы для данного дескриптора.

Подробности
Возвращаемые значения
int32_t
Глубина в дереве

GetDictionaryItemHandle

PropertyPathHandle GetDictionaryItemHandle(
  PropertyPathHandle aParentHandle,
  uint16_t aDictionaryKey
) const 

GetFirstChild

PropertyPathHandle GetFirstChild(
  PropertyPathHandle aParentHandle
) const 

Возвращает первый дочерний дескриптор, связанный с конкретным родителем.

Подробности
Возвращаемые значения
PropertyPathHandle
Ручка первого ребенка.

GetHighestForwardVersion

SchemaVersion GetHighestForwardVersion(
  SchemaVersion aVersion
) const 

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

Получить самую низкую совместимую версию

SchemaVersion GetLowestCompatibleVersion(
  SchemaVersion aVersion
) const 

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

Получить карту

const PropertyInfo * GetMap(
  PropertyPathHandle aHandle
) const 

Возвращает указатель на структуру PropertyInfo , описывающую конкретный дескриптор пути.

Подробности
Возвращаемые значения
PropertyInfo*

GetMaxVersion

SchemaVersion GetMaxVersion() const 

GetMinVersion

SchemaVersion GetMinVersion() const 

GetNextChild

PropertyPathHandle GetNextChild(
  PropertyPathHandle aParentId,
  PropertyPathHandle aChildHandle
) const 

Учитывая дескриптор существующего дочернего элемента, возвращает следующий дескриптор дочернего элемента, связанный с конкретным родительским элементом.

Подробности
Возвращаемые значения
PropertyPathHandle
Дескриптор следующего ребенка.

GetParent

PropertyPathHandle GetParent(
  PropertyPathHandle aHandle
) const 

Возвращает родительский дескриптор заданного дочернего дескриптора пути.

Ключи словаря в дескрипторе сохраняются в том случае, если родительский дескриптор также является элементом словаря.

Подробности
Возвращаемые значения
PropertyPathHandle
Дескриптор родителя.

Получитьпрофилеид

uint32_t GetProfileId(
  void
) const 

Возвращает идентификатор профиля связанного признака.

Подробности
Возвращаемые значения
Trait
идентификатор профиля

GetRelativePathTags

WEAVE_ERROR GetRelativePathTags(
  const PropertyPathHandle aCandidateHandle,
  uint64_t *aTags,
  const uint32_t aTagsSize,
  uint32_t & aNumTags
) const 

Преобразует PropertyPathHandle в массив тегов контекста.

Подробности
Параметры
[in] aCandidateHandle
PropertyPathHandle, который необходимо преобразовать.
[in] aTags
Указатель на выходной массив.
[in] aTagsSize
Размер массива aTags в количестве элементов.
[out] aNumTags
Количество тегов, записанных в aTags
Возврат
WEAVE_NO_ERROR в случае успеха; WEAVE_ERROR_NO_MEMORY, если теги слишком малы для хранения полного пути.

GetTag

uint64_t GetTag(
  PropertyPathHandle aHandle
) const 

Возвращает тег, связанный с дескриптором пути.

Если это элемент словаря, эта функция возвращает ProfileTag. В противном случае он возвращает теги контекста.

Подробности
Возвращаемые значения
uint64_t

GetVersionIntersection

bool GetVersionIntersection(
  SchemaVersionRange & aVersion,
  SchemaVersionRange & aIntersection
) const 

Учитывая диапазон версий, эта функция проверяет, существует ли пересечение совместимости между ним и тем, что поддерживается схемой, поддерживающей этот механизм схемы.

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

IsDictionary

bool IsDictionary(
  PropertyPathHandle aHandle
) const 

Возвращает true, если дескриптор является словарем (а не в словаре — см. метод ниже).

Подробности
Возвращаемые значения
bool

Эфемерный

bool IsEphemeral(
  PropertyPathHandle aHandle
) const 

ИсИнСловарь

bool IsInDictionary(
  PropertyPathHandle aHandle,
  PropertyPathHandle & aDictionaryItemHandle
) const 

Возвращает true, если дескриптор находится внутри словаря (элемента словаря).

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

Подробности
Возвращаемые значения
bool

IsLeaf

bool IsLeaf(
  PropertyPathHandle aPropertyHandle
) const 

Возвращает true, если дескриптор ссылается на листовой узел в дереве схемы.

Подробности
Возвращаемые значения
bool

IsNullable

bool IsNullable(
  PropertyPathHandle aHandle
) const 

Необязательно

bool IsOptional(
  PropertyPathHandle aHandle
) const 

IsParent

bool IsParent(
  PropertyPathHandle aChildHandle,
  PropertyPathHandle aParentHandle
) const 

Проверяет, является ли данный дескриптор дочерним элементом другого дескриптора.

Это может быть косвенный родитель.

Подробности
Возвращаемые значения
bool

КартаHandleToPath

WEAVE_ERROR MapHandleToPath(
  PropertyPathHandle aHandle,
  nl::Weave::TLV::TLVWriter & aPathWriter
) const 

Преобразуйте дескриптор пути в путь TLV .

Подробности
Возвращаемые значения
WEAVE_NO_ERROR
Об успехе.
other
Не удалось преобразовать дескриптор в путь TLV .

MapPathToHandle

WEAVE_ERROR MapPathToHandle(
  nl::Weave::TLV::TLVReader & aPathReader,
  PropertyPathHandle & aHandle
) const 

Учитывая, что считыватель расположен в корне элемента пути WDM, прочитайте соответствующие теги и укажите эквивалентный дескриптор пути.

Подробности
Возвращаемые значения
WEAVE_NO_ERROR
Об успехе.
WEAVE_ERROR_TLV_TAG_NOT_FOUND
Если соответствующий дескриптор не найден из-за неправильного формирования/неверно указанного пути.

MapPathToHandle

WEAVE_ERROR MapPathToHandle(
  const char *aPathString,
  PropertyPathHandle & aHandle
) const 

Учитывая строковое представление пути WDM, прочитайте соответствующие теги и укажите эквивалентный дескриптор пути.

Путь WDM представляется в виде строки по следующим правилам:

  • теги разделяются знаком /
  • путь ДОЛЖЕН начинаться с символа / и НЕ ДОЛЖЕН содержать косую черту в конце.
  • числовые теги в пути WDM ДОЛЖНЫ быть закодированы с использованием стандартной библиотеки C для кодирования целых чисел в строку, т. е. десятичная кодировка (по умолчанию) НЕ ДОЛЖНА содержать ведущий 0, шестнадцатеричная кодировка ДОЛЖНА начинаться с 0x , а восьмеричная кодировка ДОЛЖНА содержать ведущий 0 .

Подробности
Возвращаемые значения
WEAVE_NO_ERROR
Об успехе.
WEAVE_ERROR_TLV_TAG_NOT_FOUND
Если соответствующий дескриптор не найден.
WEAVE_ERROR_INVALID_ARGUMENT
Если строка пути имеет неверный формат

Идентификатор профиля совпадений

bool MatchesProfileId(
  uint32_t aProfileId
) const 

Возвращает true, если переданный идентификатор профиля совпадает с идентификатором, хранящимся в схеме.

Подробности
Возвращаемые значения
bool

Получить данные

WEAVE_ERROR RetrieveData(
  PropertyPathHandle aHandle,
  uint64_t aTagToWrite,
  nl::Weave::TLV::TLVWriter & aWriter,
  IGetDataDelegate *aDelegate,
  IDirtyPathCut *apDirtyPathCut
) const 

Учитывая дескриптор пути и позицию записи в соответствующем элементе данных, извлеките конечные данные из источника и запишите их в буфер, на который указывает средство записи, в соответствии со схемой.

Подробности
Возвращаемые значения
WEAVE_NO_ERROR
Об успехе.
other
Обнаружены ошибки при записи данных.

Получить упдатабледикционаридата

WEAVE_ERROR RetrieveUpdatableDictionaryData(
  PropertyPathHandle aHandle,
  uint64_t aTagToWrite,
  nl::Weave::TLV::TLVWriter & aWriter,
  IGetDataDelegate *aDelegate,
  PropertyPathHandle & aPropertyPathHandleOfDictItemToStartFrom
) const 

StoreData

WEAVE_ERROR StoreData(
  PropertyPathHandle aHandle,
  nl::Weave::TLV::TLVReader & aReader,
  ISetDataDelegate *aDelegate,
  IPathFilter *aPathFilter
) const 

Учитывая дескриптор пути и устройство чтения, расположенное на соответствующем элементе данных, обработайте буфер данных, на который указывает устройство чтения, и сохраните его в приемнике, вызывая вызов SetLeafData всякий раз, когда встречается элемент данных листа.

Подробности
Возвращаемые значения
WEAVE_NO_ERROR
Об успехе.
other
Обнаружены ошибки при синтаксическом анализе/обработке данных.