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:: |
|
nl:: |
Structs |
|
---|---|
nl:: |
|
nl:: |
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 |
|
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 |
|
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 |
|
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 |
|
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 |
|
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 |
|
GetProfileId
uint32_t GetProfileId( void ) const
Renvoie l'ID de profil de la caractéristique associée.
Détails | |||
---|---|---|---|
Valeurs de retour |
|
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 |
|
||||||||
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 |
|
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 |
|
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 |
|
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 |
|
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 |
|
MapHandleToPath
WEAVE_ERROR MapHandleToPath( PropertyPathHandle aHandle, nl::Weave::TLV::TLVWriter & aPathWriter ) const
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 |
|
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éfixe0
.
Détails | |||||||
---|---|---|---|---|---|---|---|
Valeurs de retour |
|
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 |
|
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 |
|
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 |
|