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

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

O mecanismo de esquema recebe informações associadas a uma característica específica e fornece instalações para analisar e traduzir isso em um formulário que possa ser utilizado pelo mecanismo WDM.

Resumo

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

O esquema em si é armazenado em formato tabular, descrito o suficiente para permitir a análise/composição genérica de caminhos/dados do WDM para qualquer característica. Estas tabelas são o resultado final de "code-gen" (o termo em si é um pouco enganoso devido à ausência de 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
Dado 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
Calcule a profundidade na árvore de esquema de um identificador específico.
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
Dada a versão do esquema de dados fornecida, ela retornará a versão de esquema compatível mais alta com antecedência.
GetLowestCompatibleVersion(SchemaVersion aVersion) const
SchemaVersion
Dada a versão do esquema de dados fornecida, ela retornará a versão mínima compatível do esquema.
GetMap(PropertyPathHandle aHandle) const
const PropertyInfo *
Retorna um ponteiro para a estrutura PropertyInfo que descreve um manipulador de caminho específico.
GetMaxVersion() const
SchemaVersion
GetMinVersion() const
SchemaVersion
GetNextChild(PropertyPathHandle aParentId, PropertyPathHandle aChildHandle) const
Dado um handle para um filho existente, retorna o próximo handle filho associado a um pai específico.
GetParent(PropertyPathHandle aHandle) const
Retorna o handle pai de um determinado handle 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
Dado um intervalo de versão, essa função verifica se há uma interseção de compatibilidade entre ele e o que é compatível com o esquema que faz o backup desse mecanismo de esquema.
IsDictionary(PropertyPathHandle aHandle) const
bool
Retorna verdadeiro se o identificador for um dicionário (e não um dicionário – veja 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
Retorna verdadeiro 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.
MapHandleToPath(PropertyPathHandle aHandle, nl::Weave::TLV::TLVWriter & aPathWriter) const
Converta o identificador 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 a representação de string de um caminho WDM, leia as tags relevantes e informe 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
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.

Aulas

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 do esquema que armazena 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 

Dado 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 um dos dois identificadores (mesmo que sejam iguais).

Detalhes
Valores de retorno
PropertyPathHandle
Use o elemento pai de nível mais baixo.

GetChildHandle

PropertyPathHandle GetChildHandle(
  PropertyPathHandle aParentHandle,
  uint8_t aContextTag
) const 

GetDepth

int32_t GetDepth(
  PropertyPathHandle aHandle
) const 

Calcule a profundidade na árvore de esquema de um identificador específico.

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
Identificador do primeiro filho.

GetHighestForwardVersion

SchemaVersion GetHighestForwardVersion(
  SchemaVersion aVersion
) const 

Dada a versão do esquema de dados fornecida, ela retornará a versão de esquema compatível mais alta com antecedência.

GetLowestCompatibleVersion

SchemaVersion GetLowestCompatibleVersion(
  SchemaVersion aVersion
) const 

Dada a versão do esquema de dados fornecida, ela 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 manipulador 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 handle para um filho existente, retorna o próximo handle 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 handle pai de um determinado handle de caminho filho.

As chaves de 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 da característica associada.

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 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, retorna tags de contexto.

Detalhes
Valores de retorno
uint64_t

GetVersionIntersection

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

Dado um intervalo de versão, essa função verifica se há uma interseção de compatibilidade entre ele e o que é compatível com o esquema que faz o backup desse mecanismo de esquema.

Se houver uma interseção, a função retornará "true" e atualizará o argumento aIntersection transmitido para refletir o resultado desse teste de interseção.

IsDictionary

bool IsDictionary(
  PropertyPathHandle aHandle
) const 

Retorna verdadeiro se o identificador for um dicionário (e não um dicionário – veja 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 no handle (aDictionaryItemHandle) é atualizado para apontar para o identificador do elemento do dicionário mais acima dentro do dicionário.

Detalhes
Valores de retorno
bool

IsLeaf

bool IsLeaf(
  PropertyPathHandle aPropertyHandle
) const 

Retorna verdadeiro se o identificador se referir 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 determinado 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 para um caminho TLV.

Detalhes
Valores de retorno
WEAVE_NO_ERROR
Se der certo.
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
Se der certo.
WEAVE_ERROR_TLV_TAG_NOT_FOUND
Se um identificador correspondente não for encontrado devido a um caminho incorreto/especificado incorretamente.

MapPathToHandle

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

Dada a representação de string de um caminho WDM, leia as tags relevantes e informe 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 / à esquerda e NÃO pode conter uma barra à direita
  • as tags numéricas no caminho WDM PRECISAM ser codificadas usando a biblioteca C padrão para a codificação de números inteiros para string, ou seja, a codificação decimal (padrão) NÃO PODE conter um 0 inicial, uma 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 der certo.
WEAVE_ERROR_TLV_TAG_NOT_FOUND
Se um identificador correspondente não for encontrado.
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 

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
Se der certo.
other
Erros encontrados 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 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
Se der certo.
other
Ocorreram erros ao analisar/processar os dados.