nl:: Weave:: Profiles:: DataManagement_Current:: TraitSchemaEngine
#include <src/lib/profiles/data-management/Current/TraitData.h>
Die Schema-Engine verwendet Schemainformationen, die mit einem bestimmten Merkmal verknüpft sind, und bietet Funktionen, um diese Informationen zu parsen und in eine von WDM-Geräten verwendbare Form zu übertragen.
Zusammenfassung
Dazu gehören die Konvertierung von PathHandles in WDM-Pfade (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, die ausreichend beschrieben sind, um ein generisches Parsen bzw. Zusammenstellen von WDM-Pfaden/-Daten für ein bestimmtes Merkmal zu ermöglichen. Diese Tabellen liefern die endgültige Ausgabe von „code-gen“ (Der Begriff selbst ist angesichts des Fehlens eines generierten Codes :P etwas irreführend.)
Ö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
|
Berechnen Sie bei zwei Eigenschafts-Handles den niedrigsten Handle, der beiden als übergeordnetes Element dient.
|
GetChildHandle(PropertyPathHandle aParentHandle, uint8_t aContextTag) const
|
|
GetDepth(PropertyPathHandle aHandle) const
|
int32_t
Berechnet die Tiefe in der Schemastruktur für einen bestimmten Handle.
|
GetDictionaryItemHandle(PropertyPathHandle aParentHandle, uint16_t aDictionaryKey) const
|
|
GetFirstChild(PropertyPathHandle aParentHandle) const
|
Gibt das erste untergeordnete Handle zurück, das mit einem bestimmten übergeordneten Handle verknüpft ist.
|
GetHighestForwardVersion(SchemaVersion aVersion) const
|
SchemaVersion
Bei einer angegebenen Datenschemaversion wird die höchste vorwärtskompatible Schemaversion zurückgegeben.
|
GetLowestCompatibleVersion(SchemaVersion aVersion) const
|
SchemaVersion
Bei einer angegebenen Datenschemaversion wird die mindestens kompatible Schemaversion zurückgegeben.
|
GetMap(PropertyPathHandle aHandle) const
|
const PropertyInfo *
Gibt einen Zeiger an die PropertyInfo-Struktur zurück, die einen bestimmten Pfad-Handle beschreibt.
|
GetMaxVersion() const
|
SchemaVersion
|
GetMinVersion() const
|
SchemaVersion
|
GetNextChild(PropertyPathHandle aParentId, PropertyPathHandle aChildHandle) const
|
Bei einem Handle für ein vorhandenes untergeordnetes Element wird das nächste untergeordnete Handle zurückgegeben, das mit einem bestimmten übergeordneten Handle 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 ein PropertyPathHandle in ein Array von Kontext-Tags 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 eine Kompatibilitätsüberschneidung zwischen diesem und den Inhalten gibt, die von dem Schema unterstützt werden, das diese Schema-Engine stützt.
|
IsDictionary(PropertyPathHandle aHandle) const
|
bool
Gibt "true" zurück, wenn es sich bei dem Handle um ein Wörterbuch handelt (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 Ziehpunkt in einem Wörterbuch (einem Wörterbuchelement) befindet.
|
IsLeaf(PropertyPathHandle aPropertyHandle) const
|
bool
Gibt "true" zurück, wenn das Handle auf einen Blattknoten im Schemabaum verweist.
|
IsNullable(PropertyPathHandle aHandle) const
|
bool
|
IsOptional(PropertyPathHandle aHandle) const
|
bool
|
IsParent(PropertyPathHandle aChildHandle, PropertyPathHandle aParentHandle) const
|
bool
Prüft, ob ein bestimmter Alias einem anderen Alias untergeordnet ist.
|
MapHandleToPath(PropertyPathHandle aHandle, nl::Weave::TLV::TLVWriter & aPathWriter) const
|
Konvertieren Sie das Pfad-Handle in einen TLV-Pfad.
|
MapPathToHandle(nl::Weave::TLV::TLVReader & aPathReader, PropertyPathHandle & aHandle) const
|
Wenn sich ein Leser am Stamm eines WDM-Pfadelements befindet, lesen Sie die relevanten Tags vor und geben Sie das entsprechende Pfad-Handle an.
|
MapPathToHandle(const char *aPathString, PropertyPathHandle & aHandle) const
|
Bei einer Stringdarstellung eines WDM-Pfads werden die relevanten Tags ausgelesen und das äquivalente Pfad-Handle bereitgestellt.
|
MatchesProfileId(uint32_t aProfileId) const
|
bool
Gibt "true" zurück, wenn die in "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 bei einem Pfad-Handle und einer Schreiberposition für das entsprechende Datenelement Blattdaten aus der Quelle ab und schreiben Sie sie auf schemakonforme Weise in den Zwischenspeicher, auf den der Autor 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 sich auf dem entsprechenden Datenelement befindet, wird der Datenpuffer, auf den der Reader verweist, verarbeitet und in der Senke gespeichert, indem bei jedem Auftreten eines Blattdatenelements der SetLeafData-Aufruf aufgerufen wird.
|
Klassen |
|
---|---|
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
Berechnen Sie bei zwei Eigenschafts-Handles den niedrigsten Handle, der beiden als übergeordnetes Element dient.
Außerdem werden die beiden untergeordneten Zweige zurückgegeben, die jeden der beiden Handles 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 das erste untergeordnete Handle zurück, das mit einem bestimmten übergeordneten Handle verknüpft ist.
Details | |||
---|---|---|---|
Rückgabewerte |
|
GetHighestForwardVersion
SchemaVersion GetHighestForwardVersion( SchemaVersion aVersion ) const
Bei einer angegebenen Datenschemaversion wird die höchste vorwärtskompatible Schemaversion zurückgegeben.
GetLowestCompatibleVersion
SchemaVersion GetLowestCompatibleVersion( SchemaVersion aVersion ) const
Bei einer angegebenen Datenschemaversion wird die mindestens kompatible Schemaversion zurückgegeben.
GetMap
const PropertyInfo * GetMap( PropertyPathHandle aHandle ) const
Gibt einen Zeiger an die PropertyInfo-Struktur zurück, die einen bestimmten Pfad-Handle beschreibt.
Details | |||
---|---|---|---|
Rückgabewerte |
|
GetMaxVersion
SchemaVersion GetMaxVersion() const
GetMinVersion
SchemaVersion GetMinVersion() const
GetNextChild
PropertyPathHandle GetNextChild( PropertyPathHandle aParentId, PropertyPathHandle aChildHandle ) const
Bei einem Handle für ein vorhandenes untergeordnetes Element wird das nächste untergeordnete Handle zurückgegeben, das mit einem bestimmten übergeordneten Handle verknüpft ist.
Details | |||
---|---|---|---|
Rückgabewerte |
|
GetParent
PropertyPathHandle GetParent( PropertyPathHandle aHandle ) const
Gibt das übergeordnete Handle eines bestimmten untergeordneten Pfad-Handles zurück.
Wörterbuchschlüssel im Handle werden beibehalten, 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 ein PropertyPathHandle in ein Array von Kontext-Tags um.
Details | |||||||||
---|---|---|---|---|---|---|---|---|---|
Parameter |
|
||||||||
Rückgabe |
WEAVE_NO_ERROR im Falle eines Erfolgs; 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 Wörterbuchelement 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 eine Kompatibilitätsüberschneidung zwischen diesem und den Inhalten gibt, die von dem Schema unterstützt werden, das diese Schema-Engine stü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 es sich bei dem Handle um ein Wörterbuch handelt 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 Ziehpunkt in einem Wörterbuch (einem Wörterbuchelement) befindet.
Ein Nutzer, der im Handle (aDictionaryItemHandle) übergeben wurde, wird so aktualisiert, dass er auf den obersten Handle des Wörterbuchelements innerhalb des Wörterbuchs verweist.
Details | |||
---|---|---|---|
Rückgabewerte |
|
IsLeaf
bool IsLeaf( PropertyPathHandle aPropertyHandle ) const
Gibt „true“ zurück, wenn das 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
Prüft, ob ein bestimmter Alias einem anderen Alias untergeordnet ist.
Dies kann ein indirektes übergeordnetes Element 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 Leser am Stamm eines WDM-Pfadelements befindet, lesen Sie die relevanten Tags vor und geben Sie das entsprechende Pfad-Handle an.
Details | |||||
---|---|---|---|---|---|
Rückgabewerte |
|
MapPathToHandle
WEAVE_ERROR MapPathToHandle( const char *aPathString, PropertyPathHandle & aHandle ) const
Bei einer Stringdarstellung eines WDM-Pfads werden die relevanten Tags ausgelesen und das äquivalente Pfad-Handle bereitgestellt.
Der WDM-Pfad wird anhand der folgenden Regeln als String dargestellt:
- Tags werden durch
/
getrennt. - der Pfad MUSS mit einem führenden
/
beginnen und DARF KEINEN abschließenden Schrägstrich enthalten. - Numerische Tags im WDM-Pfad MÜSSEN mithilfe der Standard-C-Bibliothek für die Codierung von Ganzzahlen zu Zeichenfolgen codiert werden. Die Dezimalcodierung (Standardeinstellung) DARF KEINE führende 0 enthalten, eine hexadezimale Codierung MUSS mit
0x
beginnen und die Oktalcodierung MUSS eine vorangestellte0
enthalten.
Details | |||||||
---|---|---|---|---|---|---|---|
Rückgabewerte |
|
MatchesProfileId
bool MatchesProfileId( uint32_t aProfileId ) const
Gibt "true" zurück, wenn die in "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 bei einem Pfad-Handle und einer Schreiberposition für das entsprechende Datenelement Blattdaten aus der Quelle ab und schreiben Sie sie auf schemakonforme Weise in den Zwischenspeicher, auf den der Autor 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 sich auf dem entsprechenden Datenelement befindet, wird der Datenpuffer, auf den der Reader verweist, verarbeitet und in der Senke gespeichert, indem bei jedem Auftreten eines Blattdatenelements der SetLeafData-Aufruf aufgerufen wird.
Details | |||||
---|---|---|---|---|---|
Rückgabewerte |
|