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

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

O mecanismo de esquema usa informações de esquema associadas a um atributo específico e fornece recursos para analisar e traduzir isso em um formato que possa ser usado pela máquina WDM.

Resumo

Isso inclui a conversão de PathHandles para caminhos WDM (e vice-versa), métodos para interpretar/consultar o esquema e métodos para ler/gravar dados em/de TLV com um handle.

O esquema em si é armazenado em forma tabular, descrito de forma suficiente para permitir a análise/composição genérica de caminhos/dados de WDM para qualquer característica. Essas tabelas são o que será o resultado final de "code-gen" (o termo em si é um tanto enganoso, dada a ausência de qualquer código gerado :P)

Atributos estáticos públicos

kHandleTableOffset = 2
const uint32_t

Atributos públicos

mSchema
const Schema

Funções públicas

FindLowestCommonAncestor(PropertyPathHandle aHandle1, PropertyPathHandle aHandle2, PropertyPathHandle *aHandle1BranchChild, PropertyPathHandle *aHandle2BranchChild) const
Com base em dois identificadores de propriedade, calcule o identificador mais baixo que serve como pai para ambos.
GetChildHandle(PropertyPathHandle aParentHandle, uint8_t aContextTag) const
GetDepth(PropertyPathHandle aHandle) const
int32_t
Calcula a profundidade na árvore de esquema de um determinado identificador.
GetDictionaryItemHandle(PropertyPathHandle aParentHandle, uint16_t aDictionaryKey) const
GetFirstChild(PropertyPathHandle aParentHandle) const
Retorna o primeiro identificador filho associado a um pai específico.
GetHighestForwardVersion(SchemaVersion aVersion) const
SchemaVersion
Com uma versão do esquema de dados fornecida, retorna a versão do esquema compatível com versões futuras mais recentes.
GetLowestCompatibleVersion(SchemaVersion aVersion) const
SchemaVersion
Dada uma versão do esquema de dados fornecida, isso vai retornar a versão mínima do esquema compatível.
GetMap(PropertyPathHandle aHandle) const
const PropertyInfo *
Retorna um ponteiro para a estrutura PropertyInfo que descreve um identificador de caminho específico.
GetMaxVersion() const
SchemaVersion
GetMinVersion() const
SchemaVersion
GetNextChild(PropertyPathHandle aParentId, PropertyPathHandle aChildHandle) const
Dado um identificador de uma criança existente, retorna o próximo identificador associado a um pai específico.
GetParent(PropertyPathHandle aHandle) const
Retorna o identificador pai de um determinado identificador de caminho filho.
GetProfileId(void) const
uint32_t
Retorna o ID do perfil da característica associada.
GetRelativePathTags(const PropertyPathHandle aCandidateHandle, uint64_t *aTags, const uint32_t aTagsSize, uint32_t & aNumTags) const
Converte um PropertyPathHandle em uma matriz de tags de contexto.
GetTag(PropertyPathHandle aHandle) const
uint64_t
Retorna a tag associada a um identificador de caminho.
GetVersionIntersection(SchemaVersionRange & aVersion, SchemaVersionRange & aIntersection) const
bool
Dada uma faixa de versões, essa função verifica se há uma interseção de compatibilidade entre ela e o que é compatível com o esquema que está por trás desse mecanismo.
IsDictionary(PropertyPathHandle aHandle) const
bool
Retorna verdadeiro se o identificador for um dicionário (e não estiver em um dicionário, consulte o método abaixo).
IsEphemeral(PropertyPathHandle aHandle) const
bool
IsInDictionary(PropertyPathHandle aHandle, PropertyPathHandle & aDictionaryItemHandle) const
bool
Retorna "true" se o identificador está dentro de um dicionário (um elemento de dicionário).
IsLeaf(PropertyPathHandle aPropertyHandle) const
bool
Retorna "true" se o identificador se referir a um nó de folha na árvore de esquema.
IsNullable(PropertyPathHandle aHandle) const
bool
IsOptional(PropertyPathHandle aHandle) const
bool
IsParent(PropertyPathHandle aChildHandle, PropertyPathHandle aParentHandle) const
bool
Verifica se um identificador específico é filho de outro.
MapHandleToPath(PropertyPathHandle aHandle, nl::Weave::TLV::TLVWriter & aPathWriter) const
Converta o identificador de caminho em um caminho TLV.
MapPathToHandle(nl::Weave::TLV::TLVReader & aPathReader, PropertyPathHandle & aHandle) const
Considerando um leitor posicionado na raiz de um elemento de caminho WDM, leia as tags relevantes e forneça o identificador do caminho equivalente.
MapPathToHandle(const char *aPathString, PropertyPathHandle & aHandle) const
Considerando a representação de uma string de um caminho WDM, leia as tags relevantes e forneça o identificador de caminho equivalente.
MatchesProfileId(uint32_t aProfileId) const
bool
Retorna verdadeiro se o profileId transmitido corresponder ao armazenado no esquema.
RetrieveData(PropertyPathHandle aHandle, uint64_t aTagToWrite, nl::Weave::TLV::TLVWriter & aWriter, IGetDataDelegate *aDelegate, IDirtyPathCut *apDirtyPathCut) const
Dado um identificador de caminho e uma posição de gravação no elemento de dados correspondente, extraia dados de folha da origem e grave-os no buffer apontado pelo gravador de maneira compatível com o 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
Dado um identificador de caminho e um leitor posicionado no elemento de dados correspondente, processe o buffer de dados apontado pelo leitor e armazene-o no sink invocando a chamada SetLeafData sempre que um item de dados de folha for encontrado.

Classes

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

Estruturas

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

A estrutura principal que contém as informações do esquema.

Atributos estáticos públicos

kHandleTableOffset

const uint32_t kHandleTableOffset = 2

Atributos públicos

mSchema

const Schema mSchema

Funções públicas

FindLowestCommonAncestor

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

Com base em dois identificadores de propriedade, calcule o identificador mais baixo que serve como pai para ambos.

Além disso, retorne as duas ramificações filhas que contêm cada uma das duas alças (mesmo que sejam iguais).

Detalhes
Valores de retorno
PropertyPathHandle
Processar para o pai mais baixo.

GetChildHandle

PropertyPathHandle GetChildHandle(
  PropertyPathHandle aParentHandle,
  uint8_t aContextTag
) const 

GetDepth

int32_t GetDepth(
  PropertyPathHandle aHandle
) const 

Calcula a profundidade na árvore de esquema de um determinado identificador.

Detalhes
Valores de retorno
int32_t
A profundidade na árvore

GetDictionaryItemHandle

PropertyPathHandle GetDictionaryItemHandle(
  PropertyPathHandle aParentHandle,
  uint16_t aDictionaryKey
) const 

GetFirstChild

PropertyPathHandle GetFirstChild(
  PropertyPathHandle aParentHandle
) const 

Retorna o primeiro identificador filho associado a um pai específico.

Detalhes
Valores de retorno
PropertyPathHandle
Alça do primeiro filho.

GetHighestForwardVersion

SchemaVersion GetHighestForwardVersion(
  SchemaVersion aVersion
) const 

Dada uma versão do esquema de dados fornecida, ele vai retornar a versão mais recente do esquema compatível.

GetLowestCompatibleVersion

SchemaVersion GetLowestCompatibleVersion(
  SchemaVersion aVersion
) const 

Dada uma versão do esquema de dados fornecida, ele vai retornar a versão mínima compatível do esquema.

GetMap

const PropertyInfo * GetMap(
  PropertyPathHandle aHandle
) const 

Retorna um ponteiro para a estrutura PropertyInfo que descreve um identificador de caminho específico.

Detalhes
Valores de retorno
PropertyInfo*

GetMaxVersion

SchemaVersion GetMaxVersion() const 

GetMinVersion

SchemaVersion GetMinVersion() const 

GetNextChild

PropertyPathHandle GetNextChild(
  PropertyPathHandle aParentId,
  PropertyPathHandle aChildHandle
) const 

Dado um identificador de uma criança existente, retorna o próximo identificador associado a um pai específico.

Detalhes
Valores de retorno
PropertyPathHandle
Identificador da próxima criança.

GetParent

PropertyPathHandle GetParent(
  PropertyPathHandle aHandle
) const 

Retorna o identificador pai de um determinado identificador de caminho filho.

As chaves do dicionário no identificador são preservadas no caso em que o identificador pai também é um elemento de dicionário.

Detalhes
Valores de retorno
PropertyPathHandle
Identificador do pai.

GetProfileId

uint32_t GetProfileId(
  void
) const 

Retorna o ID do perfil do atributo associado.

Detalhes
Valores de retorno
Trait
ID do perfil

GetRelativePathTags

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

Converte um PropertyPathHandle em uma matriz de tags de contexto.

Detalhes
Parâmetros
[in] aCandidateHandle
O PropertyPathHandle a ser convertido.
[in] aTags
Ponteiro para a matriz de saída.
[in] aTagsSize
Tamanho da matriz de aTags, em número de elementos.
[out] aNumTags
O número de tags gravadas em aTags
Retornos
WEAVE_NO_ERROR em caso de sucesso; WEAVE_ERROR_NO_MEMORY se aTags for muito pequena para armazenar o caminho completo.

GetTag

uint64_t GetTag(
  PropertyPathHandle aHandle
) const 

Retorna a tag associada a um identificador de caminho.

Se for um elemento de dicionário, essa função vai retornar a ProfileTag. Caso contrário, ele retorna tags de contexto.

Detalhes
Valores de retorno
uint64_t

GetVersionIntersection

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

Dada uma faixa de versões, essa função verifica se há uma interseção de compatibilidade entre ela e o que é compatível com o esquema que está por trás desse mecanismo de esquema.

Se houver uma interseção, a função vai retornar verdadeiro e atualizar o argumento aIntersection transmitido para refletir os resultados desse teste de interseção.

IsDictionary

bool IsDictionary(
  PropertyPathHandle aHandle
) const 

Retorna verdadeiro se o identificador for um dicionário (e não em um dicionário). Consulte o método abaixo.

Detalhes
Valores de retorno
bool

IsEphemeral

bool IsEphemeral(
  PropertyPathHandle aHandle
) const 

IsInDictionary

bool IsInDictionary(
  PropertyPathHandle aHandle,
  PropertyPathHandle & aDictionaryItemHandle
) const 

Retorna verdadeiro se o identificador estiver dentro de um dicionário (um elemento de dicionário).

Um usuário transmitido em handle (aDictionaryItemHandle) é atualizado para apontar para o handle do elemento de dicionário mais importante no dicionário.

Detalhes
Valores de retorno
bool

IsLeaf

bool IsLeaf(
  PropertyPathHandle aPropertyHandle
) const 

Retorna verdadeiro se o identificador se refere a um nó de folha na árvore de esquema.

Detalhes
Valores de retorno
bool

IsNullable

bool IsNullable(
  PropertyPathHandle aHandle
) const 

IsOptional

bool IsOptional(
  PropertyPathHandle aHandle
) const 

IsParent

bool IsParent(
  PropertyPathHandle aChildHandle,
  PropertyPathHandle aParentHandle
) const 

Verifica se um identificador é filho de outro.

Pode ser um pai indireto.

Detalhes
Valores de retorno
bool

MapHandleToPath

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

Converta o identificador de caminho em um caminho TLV.

Detalhes
Valores de retorno
WEAVE_NO_ERROR
Se a operação for bem-sucedida.
other
Não foi possível converter o identificador em um caminho TLV.

MapPathToHandle

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

Dado um leitor posicionado na raiz de um elemento de caminho do WDM, leia as tags relevantes e forneça o identificador de caminho equivalente.

Detalhes
Valores de retorno
WEAVE_NO_ERROR
Se tiver sucesso.
WEAVE_ERROR_TLV_TAG_NOT_FOUND
Se não for possível encontrar um identificador correspondente devido a um caminho malformado/especificado incorretamente.

MapPathToHandle

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

Considerando a representação de uma string de um caminho WDM, leia as tags relevantes e forneça o identificador de caminho equivalente.

O caminho do WDM é representado como uma string usando as seguintes regras:

  • as tags são separadas por /
  • o caminho PRECISA começar com uma / inicial e NÃO PODE conter uma barra final.
  • As tags numéricas no caminho do WDM precisam ser codificadas usando a biblioteca C padrão para codificação de números inteiros em strings. Ou seja, a codificação decimal (padrão) não pode conter um 0 inicial, a codificação hexadecimal precisa começar com 0x e a codificação octal precisa conter um 0 inicial.

Detalhes
Valores de retorno
WEAVE_NO_ERROR
Se tiver sucesso.
WEAVE_ERROR_TLV_TAG_NOT_FOUND
Se não for possível encontrar um identificador correspondente.
WEAVE_ERROR_INVALID_ARGUMENT
Se uma string de caminho estiver incorreta

MatchesProfileId

bool MatchesProfileId(
  uint32_t aProfileId
) const 

Retorna verdadeiro se o profileId transmitido corresponder ao armazenado no esquema.

Detalhes
Valores de retorno
bool

RetrieveData

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

Dado um identificador de caminho e uma posição de gravação no elemento de dados correspondente, extraia dados de folha da origem e grave-os no buffer apontado pelo gravador de maneira compatível com o esquema.

Detalhes
Valores de retorno
WEAVE_NO_ERROR
Se tiver sucesso.
other
Ocorreram erros ao gravar os dados.

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 

Com um identificador de caminho e um leitor posicionado no elemento de dados correspondente, processe o buffer de dados para o qual o leitor aponta e armazene-o no coletor invocando a chamada SetLeafData sempre que um item de dados de folha for encontrado.

Detalhes
Valores de retorno
WEAVE_NO_ERROR
Se tiver sucesso.
other
Erros encontrados ao analisar/processar os dados.