нл:: Переплетение:: Профили:: 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
Учитывая два дескриптора свойства, вычислите самый низкий дескриптор, который будет родительским для обоих этих дескрипторов.
Кроме того, верните две дочерние ветви, содержащие каждый из двух дескрипторов (даже если они одинаковы).
Подробности | |||
---|---|---|---|
Возвращаемые значения |
|
GetChildHandle
PropertyPathHandle GetChildHandle( PropertyPathHandle aParentHandle, uint8_t aContextTag ) const
Получить глубину
int32_t GetDepth( PropertyPathHandle aHandle ) const
Вычислить глубину дерева схемы для данного дескриптора.
Подробности | |||
---|---|---|---|
Возвращаемые значения |
|
GetDictionaryItemHandle
PropertyPathHandle GetDictionaryItemHandle( PropertyPathHandle aParentHandle, uint16_t aDictionaryKey ) const
GetFirstChild
PropertyPathHandle GetFirstChild( PropertyPathHandle aParentHandle ) const
Возвращает первый дочерний дескриптор, связанный с конкретным родителем.
Подробности | |||
---|---|---|---|
Возвращаемые значения |
|
GetHighestForwardVersion
SchemaVersion GetHighestForwardVersion( SchemaVersion aVersion ) const
Учитывая предоставленную версию схемы данных, будет возвращена самая высокая версия схемы, совместимая с предыдущими версиями.
Получить самую низкую совместимую версию
SchemaVersion GetLowestCompatibleVersion( SchemaVersion aVersion ) const
Учитывая предоставленную версию схемы данных, будет возвращена минимальная совместимая версия схемы.
Получить карту
const PropertyInfo * GetMap( PropertyPathHandle aHandle ) const
Возвращает указатель на структуру PropertyInfo , описывающую конкретный дескриптор пути.
Подробности | |||
---|---|---|---|
Возвращаемые значения |
|
GetMaxVersion
SchemaVersion GetMaxVersion() const
GetMinVersion
SchemaVersion GetMinVersion() const
GetNextChild
PropertyPathHandle GetNextChild( PropertyPathHandle aParentId, PropertyPathHandle aChildHandle ) const
Учитывая дескриптор существующего дочернего элемента, возвращает следующий дескриптор дочернего элемента, связанный с конкретным родительским элементом.
Подробности | |||
---|---|---|---|
Возвращаемые значения |
|
GetParent
PropertyPathHandle GetParent( PropertyPathHandle aHandle ) const
Возвращает родительский дескриптор заданного дочернего дескриптора пути.
Ключи словаря в дескрипторе сохраняются в том случае, если родительский дескриптор также является элементом словаря.
Подробности | |||
---|---|---|---|
Возвращаемые значения |
|
Получитьпрофилеид
uint32_t GetProfileId( void ) const
Возвращает идентификатор профиля связанного признака.
Подробности | |||
---|---|---|---|
Возвращаемые значения |
|
GetRelativePathTags
WEAVE_ERROR GetRelativePathTags( const PropertyPathHandle aCandidateHandle, uint64_t *aTags, const uint32_t aTagsSize, uint32_t & aNumTags ) const
Преобразует PropertyPathHandle в массив тегов контекста.
Подробности | |||||||||
---|---|---|---|---|---|---|---|---|---|
Параметры |
| ||||||||
Возврат | WEAVE_NO_ERROR в случае успеха; WEAVE_ERROR_NO_MEMORY, если теги слишком малы для хранения полного пути. |
GetTag
uint64_t GetTag( PropertyPathHandle aHandle ) const
Возвращает тег, связанный с дескриптором пути.
Если это элемент словаря, эта функция возвращает ProfileTag. В противном случае он возвращает теги контекста.
Подробности | |||
---|---|---|---|
Возвращаемые значения |
|
GetVersionIntersection
bool GetVersionIntersection( SchemaVersionRange & aVersion, SchemaVersionRange & aIntersection ) const
Учитывая диапазон версий, эта функция проверяет, существует ли пересечение совместимости между ним и тем, что поддерживается схемой, поддерживающей этот механизм схемы.
Если пересечение существует, функция вернет true и обновит переданный аргумент aIntersection, чтобы отразить результаты этого теста пересечения.
IsDictionary
bool IsDictionary( PropertyPathHandle aHandle ) const
Возвращает true, если дескриптор является словарем (а не в словаре — см. метод ниже).
Подробности | |||
---|---|---|---|
Возвращаемые значения |
|
Эфемерный
bool IsEphemeral( PropertyPathHandle aHandle ) const
ИсИнСловарь
bool IsInDictionary( PropertyPathHandle aHandle, PropertyPathHandle & aDictionaryItemHandle ) const
Возвращает true, если дескриптор находится внутри словаря (элемента словаря).
Пользователь, переданный в дескрипторе (aDictionaryItemHandle), обновляется и указывает на дескриптор самого верхнего элемента словаря в словаре.
Подробности | |||
---|---|---|---|
Возвращаемые значения |
|
IsLeaf
bool IsLeaf( PropertyPathHandle aPropertyHandle ) const
Возвращает true, если дескриптор ссылается на листовой узел в дереве схемы.
Подробности | |||
---|---|---|---|
Возвращаемые значения |
|
IsNullable
bool IsNullable( PropertyPathHandle aHandle ) const
Необязательно
bool IsOptional( PropertyPathHandle aHandle ) const
IsParent
bool IsParent( PropertyPathHandle aChildHandle, PropertyPathHandle aParentHandle ) const
Проверяет, является ли данный дескриптор дочерним элементом другого дескриптора.
Это может быть косвенный родитель.
Подробности | |||
---|---|---|---|
Возвращаемые значения |
|
КартаHandleToPath
WEAVE_ERROR MapHandleToPath( PropertyPathHandle aHandle, nl::Weave::TLV::TLVWriter & aPathWriter ) const
MapPathToHandle
WEAVE_ERROR MapPathToHandle( nl::Weave::TLV::TLVReader & aPathReader, PropertyPathHandle & aHandle ) const
Учитывая, что считыватель расположен в корне элемента пути WDM, прочитайте соответствующие теги и укажите эквивалентный дескриптор пути.
Подробности | |||||
---|---|---|---|---|---|
Возвращаемые значения |
|
MapPathToHandle
WEAVE_ERROR MapPathToHandle( const char *aPathString, PropertyPathHandle & aHandle ) const
Учитывая строковое представление пути WDM, прочтите соответствующие теги и укажите эквивалентный дескриптор пути.
Путь WDM представляется в виде строки с использованием следующих правил:
- теги разделяются знаком
/
- путь ДОЛЖЕН начинаться с символа
/
и НЕ ДОЛЖЕН содержать косую черту в конце. - числовые теги в пути WDM ДОЛЖНЫ быть закодированы с использованием стандартной библиотеки C для кодирования целых чисел в строку, т. е. десятичная кодировка (по умолчанию) НЕ ДОЛЖНА содержать ведущий 0, шестнадцатеричная кодировка ДОЛЖНА начинаться с
0x
, а восьмеричная кодировка ДОЛЖНА содержать ведущий0
.
Подробности | |||||||
---|---|---|---|---|---|---|---|
Возвращаемые значения |
|
Идентификатор профиля совпадений
bool MatchesProfileId( uint32_t aProfileId ) const
Возвращает true, если переданный идентификатор профиля совпадает с идентификатором, хранящимся в схеме.
Подробности | |||
---|---|---|---|
Возвращаемые значения |
|
Получить данные
WEAVE_ERROR RetrieveData( PropertyPathHandle aHandle, uint64_t aTagToWrite, nl::Weave::TLV::TLVWriter & aWriter, IGetDataDelegate *aDelegate, IDirtyPathCut *apDirtyPathCut ) const
Учитывая дескриптор пути и позицию записи в соответствующем элементе данных, извлеките конечные данные из источника и запишите их в буфер, на который указывает средство записи, в соответствии со схемой.
Подробности | |||||
---|---|---|---|---|---|
Возвращаемые значения |
|
Получить упдатабледикционаридата
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 всякий раз, когда встречается элемент данных листа.
Подробности | |||||
---|---|---|---|---|---|
Возвращаемые значения |
|