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

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

Le moteur de schéma extrait les informations de schéma associées à une caractéristique particulière et fournit des installations pour les analyser et les traduire dans un format utilisable par les machines WDM.

Résumé

Cela inclut la conversion de PathHandles en chemins WDM (et inversement), des méthodes permettant d'interpréter/d'interroger le schéma lui-même et des méthodes permettant de lire/d'écrire des données vers/à partir de TLV à partir d'un handle.

Le schéma lui-même est stocké sous forme tabulaire, suffisamment décrit pour permettre une analyse/composition générique des chemins/données WDM pour toute caractéristique donnée. Ces tables constituent le résultat final de "code-gen" (le terme lui-même étant quelque peu trompeur étant donné l'absence de code généré :P).

Attributs statiques publics

kHandleTableOffset = 2
const uint32_t

Attributs publics

mSchema
const Schema

Fonctions publiques

FindLowestCommonAncestor(PropertyPathHandle aHandle1, PropertyPathHandle aHandle2, PropertyPathHandle *aHandle1BranchChild, PropertyPathHandle *aHandle2BranchChild) const
Étant donné les deux identifiants de propriété, calculez le handle le plus bas qui servira de parent à ces deux identifiants.
GetChildHandle(PropertyPathHandle aParentHandle, uint8_t aContextTag) const
GetDepth(PropertyPathHandle aHandle) const
int32_t
Calculez la profondeur dans l'arborescence de schéma pour un handle donné.
GetDictionaryItemHandle(PropertyPathHandle aParentHandle, uint16_t aDictionaryKey) const
GetFirstChild(PropertyPathHandle aParentHandle) const
Renvoie le premier handle enfant associé à un parent particulier.
GetHighestForwardVersion(SchemaVersion aVersion) const
SchemaVersion
Pour une version de schéma de données fournie, la version de schéma la plus compatible est renvoyée.
GetLowestCompatibleVersion(SchemaVersion aVersion) const
SchemaVersion
Cette méthode renvoie la version minimale compatible du schéma de données fourni.
GetMap(PropertyPathHandle aHandle) const
const PropertyInfo *
Renvoie un pointeur vers la structure PropertyInfo décrivant un gestionnaire de chemin d'accès particulier.
GetMaxVersion() const
SchemaVersion
GetMinVersion() const
SchemaVersion
GetNextChild(PropertyPathHandle aParentId, PropertyPathHandle aChildHandle) const
Avec un handle fourni à un enfant existant, renvoie le handle enfant suivant associé à un parent particulier.
GetParent(PropertyPathHandle aHandle) const
Renvoie le handle parent d'un handle de chemin d'accès enfant donné.
GetProfileId(void) const
uint32_t
Renvoie l'ID de profil de la caractéristique associée.
GetRelativePathTags(const PropertyPathHandle aCandidateHandle, uint64_t *aTags, const uint32_t aTagsSize, uint32_t & aNumTags) const
Convertit un PropertyPathHandle en tableau de balises de contexte.
GetTag(PropertyPathHandle aHandle) const
uint64_t
Renvoie la balise associée à un handle de chemin d'accès.
GetVersionIntersection(SchemaVersionRange & aVersion, SchemaVersionRange & aIntersection) const
bool
Pour une plage de versions donnée, cette fonction vérifie s'il existe une intersection de compatibilité entre celle-ci et ce qui est compatible avec le schéma qui sauvegarde ce moteur de schéma.
IsDictionary(PropertyPathHandle aHandle) const
bool
Renvoie la valeur "true" si le handle est un dictionnaire (et non dans un dictionnaire, voir la méthode ci-dessous).
IsEphemeral(PropertyPathHandle aHandle) const
bool
IsInDictionary(PropertyPathHandle aHandle, PropertyPathHandle & aDictionaryItemHandle) const
bool
Renvoie la valeur "true" si la poignée se trouve à l'intérieur d'un dictionnaire (un élément de dictionnaire).
IsLeaf(PropertyPathHandle aPropertyHandle) const
bool
Renvoie la valeur "true" si le handle fait référence à un nœud de feuille dans l'arborescence du schéma.
IsNullable(PropertyPathHandle aHandle) const
bool
IsOptional(PropertyPathHandle aHandle) const
bool
IsParent(PropertyPathHandle aChildHandle, PropertyPathHandle aParentHandle) const
bool
Vérifie si un identifiant donné est un enfant d'un autre identifiant.
MapHandleToPath(PropertyPathHandle aHandle, nl::Weave::TLV::TLVWriter & aPathWriter) const
Convertissez la poignée de chemin d'accès en chemin TLV.
MapPathToHandle(nl::Weave::TLV::TLVReader & aPathReader, PropertyPathHandle & aHandle) const
Étant donné un lecteur positionné à la racine d'un élément de chemin d'accès WDM, lisez les balises pertinentes et fournissez le handle de chemin d'accès équivalent.
MapPathToHandle(const char *aPathString, PropertyPathHandle & aHandle) const
À partir d'une représentation de chaîne d'un chemin WDM, lisez les balises pertinentes et fournissez le gestionnaire de chemin d'accès équivalent.
MatchesProfileId(uint32_t aProfileId) const
bool
Renvoie la valeur "true" si le profileId transmis correspond à celui stocké dans le schéma.
RetrieveData(PropertyPathHandle aHandle, uint64_t aTagToWrite, nl::Weave::TLV::TLVWriter & aWriter, IGetDataDelegate *aDelegate, IDirtyPathCut *apDirtyPathCut) const
À partir d'un handle de chemin d'accès et d'une position de rédacteur sur l'élément de données correspondant, récupérez les données feuilles de la source et écrivez-les dans le tampon vers lequel pointe le rédacteur, de manière conforme au schéma.
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
À partir d'un handle de chemin d'accès et d'un lecteur placé sur l'élément de données correspondant, traitez le tampon de données indiqué par le lecteur et stockez-le dans le récepteur en appelant l'appel SetLeafData chaque fois qu'un élément de données feuille est rencontré.

Classes

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

Structure du schéma principale qui héberge les informations du schéma.

Attributs statiques publics

kHandleTableOffset

const uint32_t kHandleTableOffset = 2

Attributs publics

mSchema

const Schema mSchema

Fonctions publiques

FindLowestCommonAncestor

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

Étant donné les deux identifiants de propriété, calculez le handle le plus bas qui servira de parent à ces deux identifiants.

De plus, renvoyez les deux branches enfants contenant chacune des deux poignées (même si elles sont identiques).

Détails
Valeurs renvoyées
PropertyPathHandle
Poignée du parent le plus bas.

GetChildHandle

PropertyPathHandle GetChildHandle(
  PropertyPathHandle aParentHandle,
  uint8_t aContextTag
) const 

GetDepth

int32_t GetDepth(
  PropertyPathHandle aHandle
) const 

Calculez la profondeur dans l'arborescence du schéma pour un handle donné.

Détails
Valeurs renvoyées
int32_t
La profondeur dans l'arbre

GetDictionaryItemHandle

PropertyPathHandle GetDictionaryItemHandle(
  PropertyPathHandle aParentHandle,
  uint16_t aDictionaryKey
) const 

GetFirstChild

PropertyPathHandle GetFirstChild(
  PropertyPathHandle aParentHandle
) const 

Renvoie le premier handle enfant associé à un parent particulier.

Détails
Valeurs renvoyées
PropertyPathHandle
Identifiant du premier enfant.

GetHighestForwardVersion

SchemaVersion GetHighestForwardVersion(
  SchemaVersion aVersion
) const 

Pour une version de schéma de données fournie, cette méthode renvoie la version de schéma la plus compatible avec les versions ultérieures.

GetLowestCompatibleVersion

SchemaVersion GetLowestCompatibleVersion(
  SchemaVersion aVersion
) const 

Cette méthode renvoie la version minimale compatible du schéma de données fournie.

GetMap

const PropertyInfo * GetMap(
  PropertyPathHandle aHandle
) const 

Renvoie un pointeur vers la structure PropertyInfo décrivant un handle de chemin particulier.

Détails
Valeurs renvoyées
PropertyInfo*

GetMaxVersion

SchemaVersion GetMaxVersion() const 

GetMinVersion

SchemaVersion GetMinVersion() const 

GetNextChild

PropertyPathHandle GetNextChild(
  PropertyPathHandle aParentId,
  PropertyPathHandle aChildHandle
) const 

Avec un handle fourni à un enfant existant, renvoie le handle enfant suivant associé à un parent particulier.

Détails
Valeurs renvoyées
PropertyPathHandle
Identifiant de l'enfant suivant.

GetParent

PropertyPathHandle GetParent(
  PropertyPathHandle aHandle
) const 

Renvoie le conteneur parent d'un conteneur de chemin d'accès enfant donné.

Les clés du dictionnaire dans la poignée sont conservées si le handle parent est également un élément du dictionnaire.

Détails
Valeurs renvoyées
PropertyPathHandle
Identifiant du parent.

GetProfileId

uint32_t GetProfileId(
  void
) const 

Renvoie l'ID de profil de la caractéristique associée.

Détails
Valeurs renvoyées
Trait
ID du profil

GetRelativePathTags

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

Convertit un PropertyPathHandle en un tableau de balises de contexte.

Détails
Paramètres
[in] aCandidateHandle
PropertyPathHandle à convertir.
[in] aTags
Pointeur vers le tableau de sortie.
[in] aTagsSize
Taille du tableau aTags, en nombre d'éléments.
[out] aNumTags
Nombre de balises écrites dans aTags
Renvoie
WEAVE_NO_ERROR en cas de réussite ; WEAVE_ERROR_NO_MEMORY si aTags est trop petit pour stocker le chemin d'accès complet.

GetTag

uint64_t GetTag(
  PropertyPathHandle aHandle
) const 

Renvoie la balise associée à un gestionnaire de chemin d'accès.

S'il s'agit d'un élément de dictionnaire, cette fonction renvoie la ProfileTag. Sinon, il renvoie des balises de contexte.

Détails
Valeurs renvoyées
uint64_t

GetVersionIntersection

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

Cette fonction vérifie, pour une plage de versions donnée, s'il existe une intersection de compatibilité entre celle-ci et ce qui est compatible avec le schéma qui sous-tend ce moteur de schéma.

S'il existe une intersection, la fonction renvoie la valeur "true" et met à jour l'argument aIntersection transmis pour refléter les résultats du test d'intersection.

IsDictionary

bool IsDictionary(
  PropertyPathHandle aHandle
) const 

Renvoie la valeur "true" si le handle est un dictionnaire (et non dans un dictionnaire, voir la méthode ci-dessous).

Détails
Valeurs renvoyées
bool

IsEphemeral

bool IsEphemeral(
  PropertyPathHandle aHandle
) const 

IsInDictionary

bool IsInDictionary(
  PropertyPathHandle aHandle,
  PropertyPathHandle & aDictionaryItemHandle
) const 

Renvoie la valeur "true" si la poignée se trouve à l'intérieur d'un dictionnaire (un élément de dictionnaire).

Un utilisateur transmis dans l'identifiant (aDictionaryItemHandle) est mis à jour pour pointer vers le handle d'élément de dictionnaire le plus élevé dans le dictionnaire.

Détails
Valeurs renvoyées
bool

IsLeaf

bool IsLeaf(
  PropertyPathHandle aPropertyHandle
) const 

Renvoie la valeur "true" si le handle fait référence à un nœud feuille dans l'arborescence du schéma.

Détails
Valeurs renvoyées
bool

IsNullable

bool IsNullable(
  PropertyPathHandle aHandle
) const 

IsOptional

bool IsOptional(
  PropertyPathHandle aHandle
) const 

IsParent

bool IsParent(
  PropertyPathHandle aChildHandle,
  PropertyPathHandle aParentHandle
) const 

Vérifie si un identifiant donné est un enfant d'un autre identifiant.

Il peut s'agir d'un parent indirect.

Détails
Valeurs renvoyées
bool

MapHandleToPath

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

Convertissez la poignée de chemin en chemin TLV.

Détails
Valeurs renvoyées
WEAVE_NO_ERROR
En cas de réussite.
other
Impossible de convertir le handle en chemin d'accès TLV

MapPathToHandle

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

Étant donné un lecteur positionné à la racine d'un élément de chemin d'accès WDM, lisez les balises pertinentes et fournissez le gestionnaire de chemin d'accès équivalent.

Détails
Valeurs renvoyées
WEAVE_NO_ERROR
En cas de réussite.
WEAVE_ERROR_TLV_TAG_NOT_FOUND
Impossible de trouver l'identifiant correspondant en raison d'un chemin d'accès incorrect ou incorrect.

MapPathToHandle

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

À partir d'une représentation de chaîne d'un chemin WDM, lisez les balises pertinentes et fournissez le gestionnaire de chemin d'accès équivalent.

Le chemin WDM est représenté sous forme de chaîne en appliquant les règles suivantes :

  • Les tags sont séparés par /.
  • le chemin DOIT commencer par un / de début et NE DOIT PAS contenir de barre oblique finale
  • Les tags numériques du chemin WDM DOIVENT être encodés à l'aide de la bibliothèque C standard pour l'encodage entier en chaîne, c'est-à-dire que l'encodage décimal (par défaut) NE DOIT PAS contenir de zéro au début, un encodage hexadécimal DOIT commencer par 0x et l'encodage octal DOIT contenir un 0 au début.

Détails
Valeurs renvoyées
WEAVE_NO_ERROR
En cas de réussite.
WEAVE_ERROR_TLV_TAG_NOT_FOUND
Si aucun contrôleur correspondant n'a été trouvé.
WEAVE_ERROR_INVALID_ARGUMENT
Si une chaîne de chemin d'accès n'est pas valide

MatchesProfileId

bool MatchesProfileId(
  uint32_t aProfileId
) const 

Renvoie la valeur "true" si l'ID profilId transmis correspond à celui stocké dans le schéma.

Détails
Valeurs renvoyées
bool

RetrieveData

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

Étant donné un gestionnaire de chemin d'accès et une position d'écriture sur l'élément de données correspondant, récupérez les données de feuille de la source et écrivez-les dans le tampon pointé par l'écrivain de manière conforme au schéma.

Détails
Valeurs renvoyées
WEAVE_NO_ERROR
En cas de réussite.
other
Des erreurs se sont produites lors de l'écriture des données.

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 

À partir d'un handle de chemin d'accès et d'un lecteur placé sur l'élément de données correspondant, traitez le tampon de données indiqué par le lecteur et stockez-le dans le récepteur en appelant l'appel SetLeafData chaque fois qu'un élément de données feuille est rencontré.

Détails
Valeurs renvoyées
WEAVE_NO_ERROR
En cas de réussite.
other
Des erreurs sont survenues lors de l'analyse ou du traitement des données.