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

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

O mecanismo de esquema usa as informações do esquema associado a uma característica específica e fornece recursos para analisar e traduzir esse esquema para uma forma utilizável pelo maquinário WDM.

Resumo

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

O próprio esquema é armazenado em formato de tabela, descrito o suficiente para permitir a análise/composição genérica de caminhos/dados do WDM para qualquer característica. Essas tabelas são quais serão as saídas finais de 'code-gen' (o termo em si é enganoso, devido à 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 duas alças de propriedade, calcule a alça mais baixa que serve como pai para ambas.
GetChildHandle(PropertyPathHandle aParentHandle, uint8_t aContextTag) const
GetDepth(PropertyPathHandle aHandle) const
int32_t
Calcule a profundidade na árvore de esquemas de um determinado identificador.
GetDictionaryItemHandle(PropertyPathHandle aParentHandle, uint16_t aDictionaryKey) const
GetFirstChild(PropertyPathHandle aParentHandle) const
Retorna o primeiro identificador associado a um pai específico.
GetHighestForwardVersion(SchemaVersion aVersion) const
SchemaVersion
Com uma versão de esquema de dados fornecida, será retornada a versão de esquema compatível mais recente.
GetLowestCompatibleVersion(SchemaVersion aVersion) const
SchemaVersion
Com uma versão fornecida do esquema de dados, será retornada a versão mínima compatível.
GetMap(PropertyPathHandle aHandle) const
const PropertyInfo *
Retorna um ponteiro para a estrutura PropertyInfo descrevendo um identificador de caminho específico.
GetMaxVersion() const
SchemaVersion
GetMinVersion() const
SchemaVersion
GetNextChild(PropertyPathHandle aParentId, PropertyPathHandle aChildHandle) const
Dado um identificador para um filho existente, retorna o próximo identificador filho 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 do traço associado.
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
Com um intervalo de versões, essa função verifica se há uma interseção de compatibilidade entre esse e o que é compatível com o esquema que está apoiando esse mecanismo de esquema.
IsDictionary(PropertyPathHandle aHandle) const
bool
Retorna verdadeiro se o identificador for um dicionário (e não em um dicionário – consulte o método abaixo).
IsEphemeral(PropertyPathHandle aHandle) const
bool
IsInDictionary(PropertyPathHandle aHandle, PropertyPathHandle & aDictionaryItemHandle) const
bool
Retorna verdadeiro se o identificador estiver dentro de um dicionário (um elemento de dicionário).
IsLeaf(PropertyPathHandle aPropertyHandle) const
bool
Retornará "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 determinado identificador é filho de outro identificador.
MapHandleToPath(PropertyPathHandle aHandle, nl::Weave::TLV::TLVWriter & aPathWriter) const
Converta o identificador de caminho para um caminho TLV.
MapPathToHandle(nl::Weave::TLV::TLVReader & aPathReader, PropertyPathHandle & aHandle) const
Dado um leitor posicionado na raiz de um elemento de caminho WDM, leia as tags relevantes e forneça o identificador de caminho equivalente.
MapPathToHandle(const char *aPathString, PropertyPathHandle & aHandle) const
Dada uma representação de 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 perfil transmitido no ID de correspondência corresponder ao armazenado no esquema.
RetrieveData(PropertyPathHandle aHandle, uint64_t aTagToWrite, nl::Weave::TLV::TLVWriter & aWriter, IGetDataDelegate *aDelegate, IDirtyPathCut *apDirtyPathCut) const
Com um identificador de caminho e uma posição de gravador no elemento de dados correspondente, recupere 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
Com 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 coletor invocando a chamada SetLeafData sempre que um item de dados de folha for encontrado.

Classes

nl::Weave::Perfis::DataManagement_Current::TraitSchemaEngine::IGetDataDelegate
nl::Weave::Perfis::DataManagement_Current::TraitSchemaEngine::ISetDataDelegate

Estruturas

nl::Weave::Profiles::DataManagement_Current::TraitSchemaEngine::PropertyInfo
nl::Weave::Perfis::DataManagement_Current::TraitSchemaEngine::Esquema

A estrutura de esquema principal que hospeda 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 (em inglês)

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

Com duas alças de propriedade, calcule a alça mais baixa que serve como pai para ambas.

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

Detalhes
Valores de retorno
PropertyPathHandle
Processar o pai menor.

GetChildHandle

PropertyPathHandle GetChildHandle(
  PropertyPathHandle aParentHandle,
  uint8_t aContextTag
) const 

Profundidade

int32_t GetDepth(
  PropertyPathHandle aHandle
) const 

Calcule a profundidade na árvore de esquemas de um determinado identificador.

Detalhes
Valores de retorno
int32_t
A profundidade da árvore

GetDictionaryItemHandle

PropertyPathHandle GetDictionaryItemHandle(
  PropertyPathHandle aParentHandle,
  uint16_t aDictionaryKey
) const 

GetFirstChild

PropertyPathHandle GetFirstChild(
  PropertyPathHandle aParentHandle
) const 

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

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

GetHighestForwardVersion

SchemaVersion GetHighestForwardVersion(
  SchemaVersion aVersion
) const 

Com uma versão de esquema de dados fornecida, será retornada a versão de esquema compatível mais recente.

GetLowestCompatibilityVersion

SchemaVersion GetLowestCompatibleVersion(
  SchemaVersion aVersion
) const 

Com uma versão fornecida do esquema de dados, será retornada a versão mínima compatível.

GetMap

const PropertyInfo * GetMap(
  PropertyPathHandle aHandle
) const 

Retorna um ponteiro para a estrutura PropertyInfo descrevendo 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 para um filho existente, retorna o próximo identificador filho associado a um pai específico.

Detalhes
Valores de retorno
PropertyPathHandle
Identificador do próximo filho.

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.

Código do perfil

uint32_t GetProfileId(
  void
) const 

Retorna o ID do perfil do traço 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
Retorna
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 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 

Com um intervalo de versões, essa função verifica se há uma interseção de compatibilidade entre esse e o que é compatível com o esquema que está apoiando esse mecanismo de esquema.

Se houver um cruzamento, a função retornará "true" e atualizará o argumento aIntersection transmitido para refletir os resultados desse teste.

Dicionário isis

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

Temporário

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 no handle (aDictionaryItemHandle) é atualizado para apontar para o gerenciador de elementos do dicionário mais importante no dicionário.

Detalhes
Valores de retorno
bool

Folha

bool IsLeaf(
  PropertyPathHandle aPropertyHandle
) const 

Retornará "true" se o identificador se referir a um nó de folha na árvore de esquema.

Detalhes
Valores de retorno
bool

IsNullável

bool IsNullable(
  PropertyPathHandle aHandle
) const 

IsOptional

bool IsOptional(
  PropertyPathHandle aHandle
) const 

Pai

bool IsParent(
  PropertyPathHandle aChildHandle,
  PropertyPathHandle aParentHandle
) const 

Verifica se um determinado identificador é filho de outro identificador.

Pode ser um elemento pai indireto.

Detalhes
Valores de retorno
bool

MapHandleToPath

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

Converta o identificador de caminho para um caminho TLV.

Detalhes
Valores de retorno
WEAVE_NO_ERROR
Em caso de sucesso.
other
Não foi possível converter o identificador para 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 WDM, leia as tags relevantes e forneça o identificador de caminho equivalente.

Detalhes
Valores de retorno
WEAVE_NO_ERROR
Em caso de sucesso.
WEAVE_ERROR_TLV_TAG_NOT_FOUND
Caso um identificador correspondente não tenha sido encontrado devido a um caminho especificado incorretamente ou incorretamente.

MapPathToHandle

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

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

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

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

Detalhes
Valores de retorno
WEAVE_NO_ERROR
Em caso de sucesso.
WEAVE_ERROR_TLV_TAG_NOT_FOUND
Se uma alça correspondente não for encontrada,
WEAVE_ERROR_INVALID_ARGUMENT
Se uma string de caminho estiver incorreta

MatchesProfileId

bool MatchesProfileId(
  uint32_t aProfileId
) const 

Retorna verdadeiro se o perfil transmitido no ID de correspondência corresponder ao armazenado no esquema.

Detalhes
Valores de retorno
bool

RecuperarDados

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

Com um identificador de caminho e uma posição de gravador no elemento de dados correspondente, recupere 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
Em caso de 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 

Dados de loja

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 apontado pelo leitor 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
Em caso de sucesso.
other
Ocorreram erros ao analisar/processar os dados.