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

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

Le moteur de schémas utilise les informations de schéma associées à une caractéristique particulière, qu'il fournit 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), de méthodes pour interpréter/interroger le schéma lui-même et de méthodes pour faciliter la lecture/l'écriture de données vers/depuis TLV à partir d'un handle.

Le schéma lui-même est stocké sous forme de tableau et suffisamment décrit pour permettre une analyse/composition générique de chemins/données WDM pour une caractéristique donnée. Ces tables constituent ce qui sera le résultat final de "code-gen" (le terme lui-même étant quelque peu trompeur compte tenu de 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
Pour 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 d'un handle donné dans l'arborescence de schémas.
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, elle renvoie la version de schéma compatible avec le transfert le plus élevé.
GetLowestCompatibleVersion(SchemaVersion aVersion) const
SchemaVersion
Pour une version de schéma de données fournie, elle renvoie la version de schéma minimale compatible.
GetMap(PropertyPathHandle aHandle) const
const PropertyInfo *
Renvoie un pointeur vers la structure PropertyInfo décrivant un handle de chemin particulier.
GetMaxVersion() const
SchemaVersion
GetMinVersion() const
SchemaVersion
GetNextChild(PropertyPathHandle aParentId, PropertyPathHandle aChildHandle) const
Renvoie le handle enfant suivant associé à un parent particulier.
GetParent(PropertyPathHandle aHandle) const
Renvoie le handle parent d'un handle de chemin 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 un tableau de tags 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
À partir d'une plage de versions, cette fonction vérifie s'il existe une intersection de compatibilité entre celle-ci et les fonctionnalités compatibles avec le schéma sur lequel repose 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 l'identifiant 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 feuille de l'arborescence de schémas.
IsNullable(PropertyPathHandle aHandle) const
bool
IsOptional(PropertyPathHandle aHandle) const
bool
IsParent(PropertyPathHandle aChildHandle, PropertyPathHandle aParentHandle) const
bool
Vérifie si un identifiant donné est l'enfant d'un autre identifiant.
MapHandleToPath(PropertyPathHandle aHandle, nl::Weave::TLV::TLVWriter & aPathWriter) const
Convertissez le handle de chemin en un chemin TLV.
MapPathToHandle(nl::Weave::TLV::TLVReader & aPathReader, PropertyPathHandle & aHandle) const
Pour un lecteur placé à la racine d'un élément de chemin WDM, lisez les balises pertinentes et fournissez l'identifiant de chemin équivalent.
MapPathToHandle(const char *aPathString, PropertyPathHandle & aHandle) const
À partir de la représentation sous forme de chaîne d'un chemin WDM, lisez les tags correspondants et fournissez le gestionnaire équivalent.
MatchesProfileId(uint32_t aProfileId) const
bool
Renvoie la valeur "true" si l'ID de profil transmis correspond à celui stocké dans le schéma.
RetrieveData(PropertyPathHandle aHandle, uint64_t aTagToWrite, nl::Weave::TLV::TLVWriter & aWriter, IGetDataDelegate *aDelegate, IDirtyPathCut *apDirtyPathCut) const
À l'aide d'une poignée de chemin d'accès et d'une position d'écriture sur l'élément de données correspondant, récupérez les données feuilles de la source et écrivez-les dans le tampon indiqué par 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
À l'aide d'un handle de chemin et d'un lecteur positionné sur l'élément de données correspondant, traitez le tampon de données vers lequel pointe 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 de schéma principale qui héberge les informations de 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 

Pour 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 qui contiennent chacun des deux identifiants (même s'ils sont identiques).

Détails
Valeurs de retour
PropertyPathHandle
Gérer sur le parent le plus bas.

GetChildHandle

PropertyPathHandle GetChildHandle(
  PropertyPathHandle aParentHandle,
  uint8_t aContextTag
) const 

GetDepth

int32_t GetDepth(
  PropertyPathHandle aHandle
) const 

Calculez la profondeur d'un handle donné dans l'arborescence de schémas.

Détails
Valeurs de retour
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 de retour
PropertyPathHandle
Identifiant du premier enfant.

GetHighestForwardVersion

SchemaVersion GetHighestForwardVersion(
  SchemaVersion aVersion
) const 

Pour une version de schéma de données fournie, elle renvoie la version de schéma compatible avec le transfert le plus élevé.

GetLowestCompatibleVersion

SchemaVersion GetLowestCompatibleVersion(
  SchemaVersion aVersion
) const 

Pour une version de schéma de données fournie, elle renvoie la version de schéma minimale compatible.

GetMap

const PropertyInfo * GetMap(
  PropertyPathHandle aHandle
) const 

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

Détails
Valeurs de retour
PropertyInfo*

GetMaxVersion

SchemaVersion GetMaxVersion() const 

GetMinVersion

SchemaVersion GetMinVersion() const 

GetNextChild

PropertyPathHandle GetNextChild(
  PropertyPathHandle aParentId,
  PropertyPathHandle aChildHandle
) const 

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

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

GetParent

PropertyPathHandle GetParent(
  PropertyPathHandle aHandle
) const 

Renvoie le handle parent d'un handle de chemin enfant donné.

Les clés de dictionnaire de l'identifiant sont conservées dans le cas où l'identifiant parent est également un élément de dictionnaire.

Détails
Valeurs de retour
PropertyPathHandle
Identifiant du parent.

GetProfileId

uint32_t GetProfileId(
  void
) const 

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

Détails
Valeurs de retour
Trait
ID de 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 tags 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
Le nombre de tags écrits dans les aTags
Renvoie
WEAVE_NO_ERROR en cas de réussite ; WEAVE_ERROR_NO_MEMORY si l'élément 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 handle de chemin d'accès.

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

Détails
Valeurs de retour
uint64_t

GetVersionIntersection

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

À partir d'une plage de versions, cette fonction vérifie s'il existe une intersection de compatibilité entre celle-ci et les fonctionnalités compatibles avec le schéma sur lequel repose ce moteur de schéma.

S'il y a une intersection, la fonction renvoie "true" et met à jour l'argument aIntersection transmis pour refléter les résultats de ce 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 de retour
bool

IsEphemeral

bool IsEphemeral(
  PropertyPathHandle aHandle
) const 

IsInDictionary

bool IsInDictionary(
  PropertyPathHandle aHandle,
  PropertyPathHandle & aDictionaryItemHandle
) const 

Renvoie la valeur "true" si l'identifiant 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 de l'élément de dictionnaire supérieur dans le dictionnaire.

Détails
Valeurs de retour
bool

IsLeaf

bool IsLeaf(
  PropertyPathHandle aPropertyHandle
) const 

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

Détails
Valeurs de retour
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 l'enfant d'un autre identifiant.

Il peut s'agir d'un parent indirect.

Détails
Valeurs de retour
bool

MapHandleToPath

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

Convertissez le handle de chemin en un chemin TLV.

Détails
Valeurs de retour
WEAVE_NO_ERROR
Pour la réussite.
other
Impossible de convertir le handle en chemin TLV

MapPathToHandle

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

Pour un lecteur placé à la racine d'un élément de chemin WDM, lisez les balises pertinentes et fournissez l'identifiant de chemin équivalent.

Détails
Valeurs de retour
WEAVE_NO_ERROR
Pour la réussite.
WEAVE_ERROR_TLV_TAG_NOT_FOUND
Si aucun identifiant correspondant n'a été trouvé en raison d'un chemin d'accès incorrect ou mal spécifié.

MapPathToHandle

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

À partir de la représentation sous forme de chaîne d'un chemin WDM, lisez les tags correspondants et fournissez le gestionnaire équivalent.

Le chemin d'accès WDM est représenté par une chaîne selon les règles suivantes:

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

Détails
Valeurs de retour
WEAVE_NO_ERROR
Pour la réussite.
WEAVE_ERROR_TLV_TAG_NOT_FOUND
Si aucun identifiant correspondant n'a été trouvé.
WEAVE_ERROR_INVALID_ARGUMENT
Si le format d'une chaîne de chemin d'accès est incorrect

MatchesProfileId

bool MatchesProfileId(
  uint32_t aProfileId
) const 

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

Détails
Valeurs de retour
bool

RetrieveData

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

À l'aide d'une poignée de chemin d'accès et d'une position d'écriture sur l'élément de données correspondant, récupérez les données feuilles de la source et écrivez-les dans le tampon indiqué par le rédacteur, de manière conforme au schéma.

Détails
Valeurs de retour
WEAVE_NO_ERROR
Pour la réussite.
other
Des erreurs sont survenues 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 

À l'aide d'un handle de chemin et d'un lecteur positionné sur l'élément de données correspondant, traitez le tampon de données vers lequel pointe 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 de retour
WEAVE_NO_ERROR
Pour la réussite.
other
Des erreurs sont survenues lors de l'analyse ou du traitement des données.