Google is committed to advancing racial equity for Black communities. See how.
Эта страница переведена с помощью Cloud Translation API.
Switch to English

nl :: Плетение :: Профили: 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
Возвращает истину, если дескриптор является словарем (а не словарем - см. Метод ниже).
IsEphemeral ( PropertyPathHandle aHandle) const
bool
IsInDictionary ( PropertyPathHandle aHandle, PropertyPathHandle & aDictionaryItemHandle) const
bool
Возвращает истину, если дескриптор находится внутри словаря (элемент словаря).
IsLeaf ( PropertyPathHandle aPropertyHandle) const
bool
Возвращает истину, если дескриптор ссылается на листовой узел в дереве схемы.
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, если переданный profileId совпадает с сохраненным в схеме.
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

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

mSchema

const Schema mSchema

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

FindLowestCommonAncestor

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

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

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

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

GetChildHandle

PropertyPathHandle GetChildHandle(
  PropertyPathHandle aParentHandle,
  uint8_t aContextTag
) const 

GetDepth

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 

Данная версия схемы данных вернет наивысшую версию схемы прямой совместимости.

GetLowestCompatibleVersion

SchemaVersion GetLowestCompatibleVersion(
  SchemaVersion aVersion
) const 

Для предоставленной версии схемы данных будет возвращена минимальная совместимая версия схемы.

GetMap

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
Ручка родителя.

GetProfileId

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
Количество тегов, записанных в теги
Возврат
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 

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

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

IsEphemeral

bool IsEphemeral(
  PropertyPathHandle aHandle
) const 

IsInDictionary

bool IsInDictionary(
  PropertyPathHandle aHandle,
  PropertyPathHandle & aDictionaryItemHandle
) const 

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

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

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

IsLeaf

bool IsLeaf(
  PropertyPathHandle aPropertyHandle
) const 

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

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

IsNullable

bool IsNullable(
  PropertyPathHandle aHandle
) const 

IsOptional

bool IsOptional(
  PropertyPathHandle aHandle
) const 

IsParent

bool IsParent(
  PropertyPathHandle aChildHandle,
  PropertyPathHandle aParentHandle
) const 

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

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

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

MapHandleToPath

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
Если строка пути искажена

MatchesProfileId

bool MatchesProfileId(
  uint32_t aProfileId
) const 

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

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

RetrieveData

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

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

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

RetrieveUpdatableDictionaryData

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
Обнаружены ошибки при разборе / обработке данных.