nl:: Weave:: Profiles:: DataManagement_Current:: TraitSchemaEngine
#include <src/lib/profiles/data-management/Current/TraitData.h>
Die Schema-Engine nimmt Schemainformationen, die mit einem bestimmten Merkmal verknüpft sind, und bietet Funktionen zum Parsen und Übersetzen dieser Informationen in ein Formular, das von der WDM-Maschine verwendet werden kann.
Zusammenfassung
Dazu gehören das Konvertieren von PathHandles- in WDM-Pfaden (und umgekehrt), Methoden zum Interpretieren/Abfragen des Schemas selbst und Methoden zum Lesen/Schreiben von Daten in TLV mit einem Handle.
Das Schema selbst wird in tabellarischer Form gespeichert und ausreichend beschrieben, um ein generisches Parsen/Zusammensetzen von WDM-Pfaden und ‐Daten für ein bestimmtes Merkmal zu ermöglichen. Diese Tabellen sind die letztendliche Ausgabe von "code-gen" (der Begriff selbst ist etwas irreführend, da kein generierter Code vorhanden ist :P).
Öffentliche statische Attribute |
|
---|---|
kHandleTableOffset = 2
|
const uint32_t
|
Öffentliche Attribute |
|
---|---|
mSchema
|
const Schema
|
Öffentliche Funktionen |
|
---|---|
FindLowestCommonAncestor(PropertyPathHandle aHandle1, PropertyPathHandle aHandle2, PropertyPathHandle *aHandle1BranchChild, PropertyPathHandle *aHandle2BranchChild) const
|
Berechne bei zwei Property-Handles den niedrigsten Handle, der beiden Aliassen als übergeordnetes Element dient.
|
GetChildHandle(PropertyPathHandle aParentHandle, uint8_t aContextTag) const
|
|
GetDepth(PropertyPathHandle aHandle) const
|
int32_t
Berechnet die Tiefe im Schemabaum für einen bestimmten Handle.
|
GetDictionaryItemHandle(PropertyPathHandle aParentHandle, uint16_t aDictionaryKey) const
|
|
GetFirstChild(PropertyPathHandle aParentHandle) const
|
Gibt den ersten untergeordneten Handle zurück, der mit einem bestimmten übergeordneten Element verknüpft ist.
|
GetHighestForwardVersion(SchemaVersion aVersion) const
|
SchemaVersion
Bei einer bereitgestellten Datenschemaversion wird die höchste aufwärtskompatible Schemaversion zurückgegeben.
|
GetLowestCompatibleVersion(SchemaVersion aVersion) const
|
SchemaVersion
Bei einer angegebenen Datenschemaversion wird die niedrigste kompatible Schemaversion zurückgegeben.
|
GetMap(PropertyPathHandle aHandle) const
|
const PropertyInfo *
Gibt einen Verweis auf die PropertyInfo-Struktur zurück, die ein bestimmtes Pfad-Handle beschreibt.
|
GetMaxVersion() const
|
SchemaVersion
|
GetMinVersion() const
|
SchemaVersion
|
GetNextChild(PropertyPathHandle aParentId, PropertyPathHandle aChildHandle) const
|
Gibt bei einem Handle auf ein vorhandenes untergeordnetes Element das nächste untergeordnete Handle zurück, das mit einem bestimmten übergeordneten Element verknüpft ist.
|
GetParent(PropertyPathHandle aHandle) const
|
Gibt das übergeordnete Handle eines bestimmten untergeordneten Pfad-Handles zurück
|
GetProfileId(void) const
|
uint32_t
Gibt die Profil-ID des verknüpften Merkmals zurück
|
GetRelativePathTags(const PropertyPathHandle aCandidateHandle, uint64_t *aTags, const uint32_t aTagsSize, uint32_t & aNumTags) const
|
Wandelt einen PropertyPathHandle in ein Array von Kontexttags um.
|
GetTag(PropertyPathHandle aHandle) const
|
uint64_t
Gibt das Tag zurück, das mit einem Pfad-Handle verknüpft ist.
|
GetVersionIntersection(SchemaVersionRange & aVersion, SchemaVersionRange & aIntersection) const
|
bool
Bei einem bestimmten Versionsbereich prüft diese Funktion, ob es einen Kompatibilitätsüberschneidungstyp zwischen dem Versionsbereich und dem gibt, was von dem Schema unterstützt wird, das diese Schema-Engine unterstützt.
|
IsDictionary(PropertyPathHandle aHandle) const
|
bool
Gibt „true“ zurück, wenn der Handle ein Wörterbuch ist (und nicht in einem Wörterbuch). Siehe Methode unten.
|
IsEphemeral(PropertyPathHandle aHandle) const
|
bool
|
IsInDictionary(PropertyPathHandle aHandle, PropertyPathHandle & aDictionaryItemHandle) const
|
bool
Gibt „true“ zurück, wenn sich der Handle in einem Wörterbuch (einem Wörterbuchelement) befindet.
|
IsLeaf(PropertyPathHandle aPropertyHandle) const
|
bool
Gibt „true“ zurück, wenn der Handle auf einen Blattknoten im Schemabaum verweist.
|
IsNullable(PropertyPathHandle aHandle) const
|
bool
|
IsOptional(PropertyPathHandle aHandle) const
|
bool
|
IsParent(PropertyPathHandle aChildHandle, PropertyPathHandle aParentHandle) const
|
bool
Überprüft, ob ein bestimmter Alias einem anderen untergeordnet ist.
|
MapHandleToPath(PropertyPathHandle aHandle, nl::Weave::TLV::TLVWriter & aPathWriter) const
|
Wandeln Sie das Pfad-Handle in einen TLV-Pfad um.
|
MapPathToHandle(nl::Weave::TLV::TLVReader & aPathReader, PropertyPathHandle & aHandle) const
|
Wenn sich ein Reader im Stamm eines WDM-Pfadelements befindet, lesen Sie die relevanten Tags aus und geben Sie den entsprechenden Pfad-Handle an.
|
MapPathToHandle(const char *aPathString, PropertyPathHandle & aHandle) const
|
Bei der Darstellung eines WDM-Pfads als String werden die relevanten Tags ausgelesen und der entsprechende Pfad-Handle bereitgestellt.
|
MatchesProfileId(uint32_t aProfileId) const
|
bool
Gibt "true" zurück, wenn die in der Funktion "profileId" übergebene ID mit der im Schema gespeicherten übereinstimmt.
|
RetrieveData(PropertyPathHandle aHandle, uint64_t aTagToWrite, nl::Weave::TLV::TLVWriter & aWriter, IGetDataDelegate *aDelegate, IDirtyPathCut *apDirtyPathCut) const
|
Rufen Sie mit einem Pfad-Handle und einer Schreibposition im entsprechenden Datenelement Blattdaten aus der Quelle ab und schreiben Sie sie schematisch in den Zwischenspeicher, auf den der Schreiber verweist.
|
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
|
Bei einem Pfad-Handle und einem Reader, der auf dem entsprechenden Datenelement positioniert ist, wird der Datenpuffer, auf den der Leser zeigt, verarbeitet und in der Senke gespeichert, indem der SetLeafData-Aufruf immer dann aufgerufen wird, wenn ein Blatt-Datenelement gefunden wird.
|
Kurse |
|
---|---|
nl:: |
|
nl:: |
Strukturen |
|
---|---|
nl:: |
|
nl:: |
Die Hauptschemastruktur, die die Schemainformationen enthält. |
Öffentliche statische Attribute
kHandleTableOffset
const uint32_t kHandleTableOffset = 2
Öffentliche Attribute
mSchema
const Schema mSchema
Öffentliche Funktionen
FindLowestCommonAncestor
PropertyPathHandle FindLowestCommonAncestor( PropertyPathHandle aHandle1, PropertyPathHandle aHandle2, PropertyPathHandle *aHandle1BranchChild, PropertyPathHandle *aHandle2BranchChild ) const
Berechne bei zwei Property-Handles den niedrigsten Handle, der beiden Aliassen als übergeordnetes Element dient.
Geben Sie außerdem die beiden untergeordneten Zweige zurück, die beide Ziehpunkte enthalten (auch wenn sie identisch sind).
Details | |||
---|---|---|---|
Rückgabewerte |
|
GetChildHandle
PropertyPathHandle GetChildHandle( PropertyPathHandle aParentHandle, uint8_t aContextTag ) const
GetDepth
int32_t GetDepth( PropertyPathHandle aHandle ) const
Berechnet die Tiefe im Schemabaum für einen bestimmten Handle.
Details | |||
---|---|---|---|
Rückgabewerte |
|
GetDictionaryItemHandle
PropertyPathHandle GetDictionaryItemHandle( PropertyPathHandle aParentHandle, uint16_t aDictionaryKey ) const
GetFirstChild
PropertyPathHandle GetFirstChild( PropertyPathHandle aParentHandle ) const
Gibt den ersten untergeordneten Handle zurück, der mit einem bestimmten übergeordneten Element verknüpft ist.
Details | |||
---|---|---|---|
Rückgabewerte |
|
GetHighestForwardVersion
SchemaVersion GetHighestForwardVersion( SchemaVersion aVersion ) const
Bei einer bereitgestellten Datenschemaversion wird die höchste aufwärtskompatible Schemaversion zurückgegeben.
GetLowestCompatibleVersion
SchemaVersion GetLowestCompatibleVersion( SchemaVersion aVersion ) const
Bei einer angegebenen Datenschemaversion wird die niedrigste kompatible Schemaversion zurückgegeben.
GetMap
const PropertyInfo * GetMap( PropertyPathHandle aHandle ) const
Gibt einen Verweis auf die PropertyInfo-Struktur zurück, die ein bestimmtes Pfad-Handle beschreibt.
Details | |||
---|---|---|---|
Rückgabewerte |
|
GetMaxVersion
SchemaVersion GetMaxVersion() const
GetMinVersion
SchemaVersion GetMinVersion() const
GetNextChild
PropertyPathHandle GetNextChild( PropertyPathHandle aParentId, PropertyPathHandle aChildHandle ) const
Gibt bei einem Handle auf ein vorhandenes untergeordnetes Element das nächste untergeordnete Handle zurück, das mit einem bestimmten übergeordneten Element verknüpft ist.
Details | |||
---|---|---|---|
Rückgabewerte |
|
GetParent
PropertyPathHandle GetParent( PropertyPathHandle aHandle ) const
Gibt das übergeordnete Handle eines bestimmten untergeordneten Pfad-Handles zurück
Die Wörterbuchschlüssel im Handle bleiben erhalten, wenn das übergeordnete Handle auch ein Wörterbuchelement ist.
Details | |||
---|---|---|---|
Rückgabewerte |
|
GetProfileId
uint32_t GetProfileId( void ) const
Gibt die Profil-ID des verknüpften Merkmals zurück
Details | |||
---|---|---|---|
Rückgabewerte |
|
GetRelativePathTags
WEAVE_ERROR GetRelativePathTags( const PropertyPathHandle aCandidateHandle, uint64_t *aTags, const uint32_t aTagsSize, uint32_t & aNumTags ) const
Wandelt einen PropertyPathHandle in ein Array von Kontexttags um.
Details | |||||||||
---|---|---|---|---|---|---|---|---|---|
Parameter |
|
||||||||
Rückgabe |
WEAVE_NO_ERROR bei Erfolg; WEAVE_ERROR_NO_MEMORY wenn aTags zu klein ist, um den vollständigen Pfad zu speichern.
|
GetTag
uint64_t GetTag( PropertyPathHandle aHandle ) const
Gibt das Tag zurück, das mit einem Pfad-Handle verknüpft ist.
Wenn es sich um ein Dictionary-Element handelt, gibt diese Funktion das ProfileTag zurück. Andernfalls werden Kontext-Tags zurückgegeben.
Details | |||
---|---|---|---|
Rückgabewerte |
|
GetVersionIntersection
bool GetVersionIntersection( SchemaVersionRange & aVersion, SchemaVersionRange & aIntersection ) const
Bei einem bestimmten Versionsbereich prüft diese Funktion, ob es einen Kompatibilitätsüberschneidungstyp zwischen dem Versionsbereich und dem gibt, was von dem Schema unterstützt wird, das diese Schema-Engine unterstützt.
Wenn es eine Schnittmenge gibt, gibt die Funktion "true" zurück und aktualisiert das übergebene Argument aIntersection entsprechend.
IsDictionary
bool IsDictionary( PropertyPathHandle aHandle ) const
Gibt „true“ zurück, wenn der Handle ein Wörterbuch ist (und nicht in einem Wörterbuch). Siehe Methode unten.
Details | |||
---|---|---|---|
Rückgabewerte |
|
IsEphemeral
bool IsEphemeral( PropertyPathHandle aHandle ) const
IsInDictionary
bool IsInDictionary( PropertyPathHandle aHandle, PropertyPathHandle & aDictionaryItemHandle ) const
Gibt „true“ zurück, wenn sich der Handle in einem Wörterbuch (einem Wörterbuchelement) befindet.
Ein von einem Nutzer übergebener Handle (aDictionaryItemHandle) wird so aktualisiert, dass er auf den obersten Handle des Wörterbuchelements im Wörterbuch verweist.
Details | |||
---|---|---|---|
Rückgabewerte |
|
IsLeaf
bool IsLeaf( PropertyPathHandle aPropertyHandle ) const
Gibt „true“ zurück, wenn der Handle auf einen Blattknoten im Schemabaum verweist.
Details | |||
---|---|---|---|
Rückgabewerte |
|
IsNullable
bool IsNullable( PropertyPathHandle aHandle ) const
IsOptional
bool IsOptional( PropertyPathHandle aHandle ) const
IsParent
bool IsParent( PropertyPathHandle aChildHandle, PropertyPathHandle aParentHandle ) const
Überprüft, ob ein bestimmter Alias einem anderen untergeordnet ist.
Das kann eine indirekte übergeordnete Rolle sein.
Details | |||
---|---|---|---|
Rückgabewerte |
|
MapHandleToPath
WEAVE_ERROR MapHandleToPath( PropertyPathHandle aHandle, nl::Weave::TLV::TLVWriter & aPathWriter ) const
MapPathToHandle
WEAVE_ERROR MapPathToHandle( nl::Weave::TLV::TLVReader & aPathReader, PropertyPathHandle & aHandle ) const
Wenn sich ein Reader im Stamm eines WDM-Pfadelements befindet, lesen Sie die relevanten Tags aus und geben Sie den entsprechenden Pfad-Handle an.
Details | |||||
---|---|---|---|---|---|
Rückgabewerte |
|
MapPathToHandle
WEAVE_ERROR MapPathToHandle( const char *aPathString, PropertyPathHandle & aHandle ) const
Bei der Darstellung eines WDM-Pfads als String werden die relevanten Tags ausgelesen und der entsprechende Pfad-Handle bereitgestellt.
Der WDM-Pfad wird als String mit den folgenden Regeln dargestellt:
- Tags werden durch
/
getrennt - Der Pfad MUSS mit einem vorangestellten
/
beginnen und DARF KEINEN Schrägstrich enthalten - Numerische Tags im WDM-Pfad MÜSSEN mit der Standard-C-Bibliothek für die Ganzzahl-zu-String-Codierung codiert werden. Das heißt, die Dezimal-Codierung (Standardeinstellung) DARF KEINE führende 0 enthalten, eine hexadezimale Codierung MUSS mit
0x
beginnen und die Oktal-Codierung MUSS einen führenden0
enthalten.
Details | |||||||
---|---|---|---|---|---|---|---|
Rückgabewerte |
|
MatchesProfileId
bool MatchesProfileId( uint32_t aProfileId ) const
Gibt "true" zurück, wenn die in der Funktion "profileId" übergebene ID mit der im Schema gespeicherten übereinstimmt.
Details | |||
---|---|---|---|
Rückgabewerte |
|
RetrieveData
WEAVE_ERROR RetrieveData( PropertyPathHandle aHandle, uint64_t aTagToWrite, nl::Weave::TLV::TLVWriter & aWriter, IGetDataDelegate *aDelegate, IDirtyPathCut *apDirtyPathCut ) const
Rufen Sie mit einem Pfad-Handle und einer Schreibposition im entsprechenden Datenelement Blattdaten aus der Quelle ab und schreiben Sie sie schematisch in den Zwischenspeicher, auf den der Schreiber verweist.
Details | |||||
---|---|---|---|---|---|
Rückgabewerte |
|
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
Bei einem Pfad-Handle und einem Reader, der auf dem entsprechenden Datenelement positioniert ist, wird der Datenpuffer, auf den der Leser zeigt, verarbeitet und in der Senke gespeichert, indem der SetLeafData-Aufruf immer dann aufgerufen wird, wenn ein Blatt-Datenelement gefunden wird.
Details | |||||
---|---|---|---|---|---|
Rückgabewerte |
|