nl::Weave::Profiles::DataManagement_Current::TraitSchemaEngine

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

El motor de esquema toma la información del esquema asociada con una característica en particular y proporciona recursos para analizarla y traducirla a un formato que pueda usar la maquinaria de WDM.

Resumen

Esto incluye la conversión de PathHandles a rutas de WDM (y viceversa), métodos para interpretar o consultar el esquema en sí y métodos para ayudar a leer y escribir datos hacia y desde TLV determinado con un handle.

El esquema en sí se almacena en forma tabular, lo suficientemente descrito para permitir el análisis o la composición genérica de rutas o datos de WDM para cualquier característica dada. Estas tablas son el resultado final de "code-gen" (el término en sí es un tanto engañoso debido a la ausencia de un código generado :P).

Atributos públicos estáticos

kHandleTableOffset = 2
const uint32_t

Atributos públicos

mSchema
const Schema

Funciones públicas

FindLowestCommonAncestor(PropertyPathHandle aHandle1, PropertyPathHandle aHandle2, PropertyPathHandle *aHandle1BranchChild, PropertyPathHandle *aHandle2BranchChild) const
Con dos identificadores de propiedad, calcula el más bajo que funciona como superior para ambos.
GetChildHandle(PropertyPathHandle aParentHandle, uint8_t aContextTag) const
GetDepth(PropertyPathHandle aHandle) const
int32_t
Calcula la profundidad en el árbol de esquemas de un controlador determinado.
GetDictionaryItemHandle(PropertyPathHandle aParentHandle, uint16_t aDictionaryKey) const
GetFirstChild(PropertyPathHandle aParentHandle) const
Muestra el primer controlador secundario asociado con un elemento superior en particular.
GetHighestForwardVersion(SchemaVersion aVersion) const
SchemaVersion
Dada una versión de esquema de datos proporcionada, se mostrará la versión de esquema compatible con versiones futuras más alta.
GetLowestCompatibleVersion(SchemaVersion aVersion) const
SchemaVersion
Dada una versión de esquema de datos proporcionada, se mostrará la versión mínima de esquema compatible.
GetMap(PropertyPathHandle aHandle) const
const PropertyInfo *
Muestra un puntero a la estructura PropertyInfo que describe un controlador de ruta de acceso en particular.
GetMaxVersion() const
SchemaVersion
GetMinVersion() const
SchemaVersion
GetNextChild(PropertyPathHandle aParentId, PropertyPathHandle aChildHandle) const
Cuando se le otorga un controlador a un elemento secundario existente, se muestra el siguiente controlador secundario asociado con un elemento superior en particular.
GetParent(PropertyPathHandle aHandle) const
Muestra el controlador superior de un controlador de ruta de acceso secundario determinado.
GetProfileId(void) const
uint32_t
Muestra el ID de perfil de la característica asociada.
GetRelativePathTags(const PropertyPathHandle aCandidateHandle, uint64_t *aTags, const uint32_t aTagsSize, uint32_t & aNumTags) const
Convierte un PropertyPathHandle en un array de etiquetas de contexto.
GetTag(PropertyPathHandle aHandle) const
uint64_t
Muestra la etiqueta asociada con un controlador de ruta de acceso.
GetVersionIntersection(SchemaVersionRange & aVersion, SchemaVersionRange & aIntersection) const
bool
En un rango de versiones, esta función verifica si existe una intersección de compatibilidad entre eso y lo que admite el esquema que respalda este motor de esquema.
IsDictionary(PropertyPathHandle aHandle) const
bool
Muestra true si el controlador es un diccionario (y no un diccionario; consulta el método a continuación).
IsEphemeral(PropertyPathHandle aHandle) const
bool
IsInDictionary(PropertyPathHandle aHandle, PropertyPathHandle & aDictionaryItemHandle) const
bool
Muestra true si el controlador está dentro de un diccionario (un elemento de diccionario).
IsLeaf(PropertyPathHandle aPropertyHandle) const
bool
Muestra true si el handle hace referencia a un nodo de hoja en el árbol de esquemas.
IsNullable(PropertyPathHandle aHandle) const
bool
IsOptional(PropertyPathHandle aHandle) const
bool
IsParent(PropertyPathHandle aChildHandle, PropertyPathHandle aParentHandle) const
bool
Comprueba si un identificador determinado es un elemento secundario de otro.
MapHandleToPath(PropertyPathHandle aHandle, nl::Weave::TLV::TLVWriter & aPathWriter) const
Convierte el controlador de ruta de acceso en una ruta de acceso TLV.
MapPathToHandle(nl::Weave::TLV::TLVReader & aPathReader, PropertyPathHandle & aHandle) const
Dado que un lector se encuentra en la raíz de un elemento de ruta de acceso de WDM, lee las etiquetas relevantes y proporciona el controlador de ruta de acceso equivalente.
MapPathToHandle(const char *aPathString, PropertyPathHandle & aHandle) const
Dada la representación de cadena de una ruta de WDM, se leen las etiquetas relevantes y se proporciona el controlador de ruta de acceso equivalente.
MatchesProfileId(uint32_t aProfileId) const
bool
Muestra true si el valor que se pasó en profileId coincide con el almacenado en el esquema.
RetrieveData(PropertyPathHandle aHandle, uint64_t aTagToWrite, nl::Weave::TLV::TLVWriter & aWriter, IGetDataDelegate *aDelegate, IDirtyPathCut *apDirtyPathCut) const
Con un controlador de ruta de acceso y una posición del escritor en el elemento de datos correspondiente, recupera los datos de hoja de la fuente y escríbelos en el búfer al que apunta el escritor de forma compatible con el esquema.
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
Con un controlador de ruta de acceso y un lector posicionado en el elemento de datos correspondiente, procesa el búfer de datos al que apunta el lector y almacénalo en el receptor invocando la llamada SetLeafData cada vez que se encuentre un elemento de datos de hoja.

Clases

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

Structs

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

Es la estructura del esquema principal que contiene la información del esquema.

Atributos públicos estáticos

kHandleTableOffset

const uint32_t kHandleTableOffset = 2

Atributos públicos

mSchema

const Schema mSchema

Funciones públicas

FindLowestCommonAncestor

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

Con dos identificadores de propiedad, calcula el más bajo que funciona como superior para ambos.

Además, muestra las dos ramas secundarias que contienen cada uno de los dos controladores (incluso si son iguales).

Detalles
Valores que se muestran
PropertyPathHandle
Controla hasta el elemento superior inferior.

GetChildHandle

PropertyPathHandle GetChildHandle(
  PropertyPathHandle aParentHandle,
  uint8_t aContextTag
) const 

GetDepth

int32_t GetDepth(
  PropertyPathHandle aHandle
) const 

Calcula la profundidad en el árbol de esquemas de un controlador determinado.

Detalles
Valores que se muestran
int32_t
La profundidad en el árbol

GetDictionaryItemHandle

PropertyPathHandle GetDictionaryItemHandle(
  PropertyPathHandle aParentHandle,
  uint16_t aDictionaryKey
) const 

GetFirstChild

PropertyPathHandle GetFirstChild(
  PropertyPathHandle aParentHandle
) const 

Muestra el primer controlador secundario asociado con un elemento superior en particular.

Detalles
Valores que se muestran
PropertyPathHandle
Es el identificador del primer elemento secundario.

GetHighestForwardVersion

SchemaVersion GetHighestForwardVersion(
  SchemaVersion aVersion
) const 

Dada una versión de esquema de datos proporcionada, se mostrará la versión de esquema compatible con versiones futuras más alta.

GetLowestCompatibleVersion

SchemaVersion GetLowestCompatibleVersion(
  SchemaVersion aVersion
) const 

Dada una versión de esquema de datos proporcionada, se mostrará la versión mínima de esquema compatible.

GetMap

const PropertyInfo * GetMap(
  PropertyPathHandle aHandle
) const 

Muestra un puntero a la estructura PropertyInfo que describe un controlador de ruta de acceso en particular.

Detalles
Valores que se muestran
PropertyInfo*

GetMaxVersion

SchemaVersion GetMaxVersion() const 

GetMinVersion

SchemaVersion GetMinVersion() const 

GetNextChild

PropertyPathHandle GetNextChild(
  PropertyPathHandle aParentId,
  PropertyPathHandle aChildHandle
) const 

Cuando se le otorga un controlador a un elemento secundario existente, se muestra el siguiente controlador secundario asociado con un elemento superior en particular.

Detalles
Valores que se muestran
PropertyPathHandle
Controlador del siguiente elemento secundario.

GetParent

PropertyPathHandle GetParent(
  PropertyPathHandle aHandle
) const 

Muestra el controlador superior de un controlador de ruta de acceso secundario determinado.

Las claves de diccionario del controlador se conservan en el caso en que el controlador superior también sea un elemento de diccionario.

Detalles
Valores que se muestran
PropertyPathHandle
Es el identificador del elemento superior.

GetProfileId

uint32_t GetProfileId(
  void
) const 

Muestra el ID de perfil de la característica asociada.

Detalles
Valores que se muestran
Trait
ID de perfil

GetRelativePathTags

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

Convierte un PropertyPathHandle en un array de etiquetas de contexto.

Detalles
Parámetros
[in] aCandidateHandle
El PropertyPathHandle que se convertirá.
[in] aTags
Puntero al array de salida.
[in] aTagsSize
Tamaño del array aTags, en cantidad de elementos.
[out] aNumTags
La cantidad de etiquetas escritas en aTags
Qué muestra
WEAVE_NO_ERROR en caso de éxito; WEAVE_ERROR_NO_MEMORY si aTags es demasiado pequeño para almacenar la ruta de acceso completa.

GetTag

uint64_t GetTag(
  PropertyPathHandle aHandle
) const 

Muestra la etiqueta asociada con un controlador de ruta de acceso.

Si es un elemento del diccionario, esta función muestra ProfileTag. De lo contrario, muestra etiquetas de contexto.

Detalles
Valores que se muestran
uint64_t

GetVersionIntersection

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

En un rango de versiones, esta función verifica si existe una intersección de compatibilidad entre eso y lo que admite el esquema que respalda este motor de esquema.

Si hay una intersección, la función devolverá verdadero y actualizará el argumento aIntersection pasado para reflejar los resultados de esa prueba de intersección.

IsDictionary

bool IsDictionary(
  PropertyPathHandle aHandle
) const 

Muestra true si el controlador es un diccionario (y no un diccionario; consulta el método a continuación).

Detalles
Valores que se muestran
bool

IsEphemeral

bool IsEphemeral(
  PropertyPathHandle aHandle
) const 

IsInDictionary

bool IsInDictionary(
  PropertyPathHandle aHandle,
  PropertyPathHandle & aDictionaryItemHandle
) const 

Muestra true si el controlador está dentro de un diccionario (un elemento de diccionario).

Se actualiza un usuario que pasó un controlador (aDictionaryItemHandle) para que apunte al controlador de elemento de diccionario superior dentro del diccionario.

Detalles
Valores que se muestran
bool

IsLeaf

bool IsLeaf(
  PropertyPathHandle aPropertyHandle
) const 

Muestra true si el handle hace referencia a un nodo de hoja en el árbol de esquemas.

Detalles
Valores que se muestran
bool

IsNullable

bool IsNullable(
  PropertyPathHandle aHandle
) const 

IsOptional

bool IsOptional(
  PropertyPathHandle aHandle
) const 

IsParent

bool IsParent(
  PropertyPathHandle aChildHandle,
  PropertyPathHandle aParentHandle
) const 

Comprueba si un identificador determinado es un elemento secundario de otro.

Este puede ser un elemento superior indirecto.

Detalles
Valores que se muestran
bool

MapHandleToPath

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

Convierte el controlador de ruta de acceso en una ruta de acceso TLV.

Detalles
Valores que se muestran
WEAVE_NO_ERROR
Si la operación es exitosa.
other
No se pudo convertir el controlador en una ruta de acceso TLV

MapPathToHandle

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

Dado que un lector se encuentra en la raíz de un elemento de ruta de acceso de WDM, lee las etiquetas relevantes y proporciona el controlador de ruta de acceso equivalente.

Detalles
Valores que se muestran
WEAVE_NO_ERROR
Si la operación es exitosa.
WEAVE_ERROR_TLV_TAG_NOT_FOUND
Si no se pudo encontrar un identificador que coincida debido a una ruta especificada con errores o de forma incorrecta.

MapPathToHandle

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

Dada la representación de cadena de una ruta de WDM, se leen las etiquetas relevantes y se proporciona el controlador de ruta de acceso equivalente.

La ruta de WDM se representa como una cadena con las siguientes reglas:

  • las etiquetas están separadas con /
  • la ruta DEBE comenzar con un / inicial y NO DEBE contener una barra final
  • Las etiquetas numéricas en la ruta de acceso de WDM DEBEN codificarse usando la biblioteca C estándar para la codificación de números enteros a cadenas, es decir, la codificación decimal (predeterminada) NO DEBE contener un 0 inicial, una codificación hexadecimal DEBE comenzar con 0x y la codificación octal DEBE contener un 0 inicial.

Detalles
Valores que se muestran
WEAVE_NO_ERROR
Si la operación es exitosa.
WEAVE_ERROR_TLV_TAG_NOT_FOUND
Si no se encontró un identificador que coincida.
WEAVE_ERROR_INVALID_ARGUMENT
Si una cadena de ruta de acceso tiene un formato incorrecto

MatchesProfileId

bool MatchesProfileId(
  uint32_t aProfileId
) const 

Muestra true si el valor que se pasó en profileId coincide con el almacenado en el esquema.

Detalles
Valores que se muestran
bool

RetrieveData

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

Con un controlador de ruta de acceso y una posición del escritor en el elemento de datos correspondiente, recupera los datos de hoja de la fuente y escríbelos en el búfer al que apunta el escritor de forma compatible con el esquema.

Detalles
Valores que se muestran
WEAVE_NO_ERROR
Si la operación es exitosa.
other
Se produjeron errores al escribir los datos.

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 

Con un controlador de ruta de acceso y un lector posicionado en el elemento de datos correspondiente, procesa el búfer de datos al que apunta el lector y almacénalo en el receptor invocando la llamada SetLeafData cada vez que se encuentre un elemento de datos de hoja.

Detalles
Valores que se muestran
WEAVE_NO_ERROR
Si la operación es exitosa.
other
Se encontraron errores al analizar/procesar los datos.