nl:: Weave:: Profile:: DataManagement_Current:: TraitSchemaEngine
#include <src/lib/profiles/data-management/Current/TraitData.h>
Die Schema-Engine verwendet Schemainformationen, die mit einer bestimmten Eigenschaft verknüpft sind. Sie bietet Funktionen zum Parsen und Übersetzen der Daten in eine Form, die von den WDM-Maschinen verwendet werden kann.
Fazit
Dazu gehören die Konvertierung von Pfadgriffen in WDM-Pfade (und umgekehrt), Methoden zur Interpretation/Abfrage der Schemas selbst und der Methoden zum Lesen/Schreiben von Daten in/aus TLV bei einem Handle.
Das Schema selbst wird in Tabellenform gespeichert. Es ist ausreichend beschrieben, um WDR-Pfade/-Daten für beliebige Eigenschaften zu parsen/zusammenzustellen. Diese Tabellen sind die mögliche Ausgabe von 'code-gen' (Der Begriff selbst ist etwas irreführend, wenn 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
|
Bestimmen Sie bei beiden Property-Handles den niedrigsten Handle, der beiden Handles als übergeordnetes Element dient.
|
GetChildHandle(PropertyPathHandle aParentHandle, uint8_t aContextTag) const
|
|
GetDepth(PropertyPathHandle aHandle) const
|
int32_t
Berechne die Tiefe im Schemabaum für einen bestimmten Handle.
|
GetDictionaryItemHandle(PropertyPathHandle aParentHandle, uint16_t aDictionaryKey) const
|
|
GetFirstChild(PropertyPathHandle aParentHandle) const
|
Gibt den ersten untergeordneten Alias zurück, der mit einem bestimmten übergeordneten Element 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 minimale kompatible Schemaversion zurückgegeben.
|
GetMap(PropertyPathHandle aHandle) const
|
const PropertyInfo *
Gibt einen Zeiger auf die PropertyInfo-Struktur zurück, die einen bestimmten Pfad-Handle beschreibt.
|
GetMaxVersion() const
|
SchemaVersion
|
GetMinVersion() const
|
SchemaVersion
|
GetNextChild(PropertyPathHandle aParentId, PropertyPathHandle aChildHandle) const
|
Gibt einen Handle für ein vorhandenes untergeordnetes Element zurück, gibt das nächste untergeordnete Handle zurück, das einem bestimmten übergeordneten Element zugeordnet 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 der zugehörigen Eigenschaft zurück
|
GetRelativePathTags(const PropertyPathHandle aCandidateHandle, uint64_t *aTags, const uint32_t aTagsSize, uint32_t & aNumTags) const
|
Konvertiert einen PropertyPathHandle in ein Array von Kontext-Tags.
|
GetTag(PropertyPathHandle aHandle) const
|
uint64_t
Gibt das mit einem Pfadgriff verknüpfte Tag zurück.
|
GetVersionIntersection(SchemaVersionRange & aVersion, SchemaVersionRange & aIntersection) const
|
bool
Bei einem bestimmten Versionsbereich prüft diese Funktion, ob es einen Kompatibilitätsknoten zwischen dem und dem gibt, was vom Schema unterstützt wird, das diese Schema-Engine unterstützt.
|
IsDictionary(PropertyPathHandle aHandle) const
|
bool
Gibt „true“ zurück, wenn der Handle zum Wörterbuch gehört (und nicht in einem Wörterbuch, siehe nachfolgende Methode).
|
IsEphemeral(PropertyPathHandle aHandle) const
|
bool
|
IsInDictionary(PropertyPathHandle aHandle, PropertyPathHandle & aDictionaryItemHandle) const
|
bool
Gibt „true“ zurück, wenn der Handle innerhalb eines Wörterbuchs (ein Wörterbuchelement) ist.
|
IsLeaf(PropertyPathHandle aPropertyHandle) const
|
bool
Gibt „true“ zurück, wenn der Ziehpunkt auf einen Blattknoten in der Schemastruktur verweist.
|
IsNullable(PropertyPathHandle aHandle) const
|
bool
|
IsOptional(PropertyPathHandle aHandle) const
|
bool
|
IsParent(PropertyPathHandle aChildHandle, PropertyPathHandle aParentHandle) const
|
bool
Prüft, ob ein bestimmter Handle einem anderen Handle untergeordnet ist.
|
MapHandleToPath(PropertyPathHandle aHandle, nl::Weave::TLV::TLVWriter & aPathWriter) const
|
Konvertieren Sie den Pfad-Handle in einen TLV-Pfad.
|
MapPathToHandle(nl::Weave::TLV::TLVReader & aPathReader, PropertyPathHandle & aHandle) const
|
Wenn ein Leser im Stammverzeichnis eines WDM-Pfadelements positioniert ist, lesen Sie die relevanten Tags und geben Sie den entsprechenden Pfadnamen an.
|
MapPathToHandle(const char *aPathString, PropertyPathHandle & aHandle) const
|
Bei einer Stringdarstellung eines WDM-Pfads werden die relevanten Tags vorgelesen und das entsprechende Handle angegeben.
|
MatchesProfileId(uint32_t aProfileId) const
|
bool
Gibt „true“ zurück, wenn die übergebene profileId 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 für das entsprechende Datenelement Blattdaten aus der Quelle ab und schreiben Sie sie in einem Schema, auf den der Autor verweist, auf Schema-Basis.
|
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 Leser, der sich auf dem entsprechenden Datenelement befindet, verarbeiten Sie den Datenzwischenspeicher, auf den der Leser verweist, und speichern ihn in der Senke, indem der Aufruf „SetLeafData“ aufgerufen wird, sobald ein Blattdatenelement erkannt wird.
|
Klassen |
|
---|---|
nl:: |
|
nl:: |
Strebenklemmen |
|
---|---|
nl:: |
|
nl:: |
Die Hauptschemastruktur, in der die Schemainformationen gespeichert sind. |
Ö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
Bestimmen Sie bei beiden Property-Handles den niedrigsten Handle, der beiden Handles als übergeordnetes Element dient.
Zusätzlich sollten Sie die beiden untergeordneten Zweige zurückgeben, die jeden der beiden Handles enthalten (auch wenn sie identisch sind).
Details | |||
---|---|---|---|
Rückgabewerte |
|
GetChildHandle
PropertyPathHandle GetChildHandle( PropertyPathHandle aParentHandle, uint8_t aContextTag ) const
Tiefe
int32_t GetDepth( PropertyPathHandle aHandle ) const
Berechne 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 Alias zurück, der mit einem bestimmten übergeordneten Element 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 minimale kompatible Schemaversion zurückgegeben.
GetMap
const PropertyInfo * GetMap( PropertyPathHandle aHandle ) const
Gibt einen Zeiger auf die PropertyInfo-Struktur zurück, die einen bestimmten Pfad-Handle beschreibt.
Details | |||
---|---|---|---|
Rückgabewerte |
|
MaxMaxVersion
SchemaVersion GetMaxVersion() const
GetMinVersion
SchemaVersion GetMinVersion() const
GetNextChild
PropertyPathHandle GetNextChild( PropertyPathHandle aParentId, PropertyPathHandle aChildHandle ) const
Gibt einen Handle für ein vorhandenes untergeordnetes Element zurück, gibt das nächste untergeordnete Handle zurück, das einem bestimmten übergeordneten Element zugeordnet ist.
Details | |||
---|---|---|---|
Rückgabewerte |
|
Eltern abrufen
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 |
|
Profilprofil-ID
uint32_t GetProfileId( void ) const
Gibt die Profil-ID der zugehörigen Eigenschaft zurück
Details | |||
---|---|---|---|
Rückgabewerte |
|
GetRelativePfadTags
WEAVE_ERROR GetRelativePathTags( const PropertyPathHandle aCandidateHandle, uint64_t *aTags, const uint32_t aTagsSize, uint32_t & aNumTags ) const
Konvertiert einen PropertyPathHandle in ein Array von Kontext-Tags.
Details | |||||||||
---|---|---|---|---|---|---|---|---|---|
Parameter |
|
||||||||
Rückgabe |
WEAVE_NO_ERROR im Erfolgsfall; WEAVE_ERROR_NO_MEMORY, wenn aTags zu klein sind, um den vollständigen Pfad zu speichern.
|
GetTag
uint64_t GetTag( PropertyPathHandle aHandle ) const
Gibt das mit einem Pfadgriff verknüpfte Tag zurück.
Wenn es ein Wörterbuchelement ist, gibt diese Funktion das ProfilTag 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ätsknoten zwischen dem und dem gibt, was vom Schema unterstützt wird, das diese Schema-Engine unterstützt.
Wenn eine Überschneidung vorhanden ist, gibt die Funktion "true" zurück und aktualisiert das Argument "AIntersection", um die Ergebnisse dieses Überschneidungstests zu erfassen.
Logo: IsDictionary
bool IsDictionary( PropertyPathHandle aHandle ) const
Gibt „true“ zurück, wenn der Handle zum Wörterbuch gehört (und nicht in einem Wörterbuch, siehe nachfolgende Methode).
Details | |||
---|---|---|---|
Rückgabewerte |
|
Flüchtig
bool IsEphemeral( PropertyPathHandle aHandle ) const
Logo: IsInDictionary
bool IsInDictionary( PropertyPathHandle aHandle, PropertyPathHandle & aDictionaryItemHandle ) const
Gibt „true“ zurück, wenn der Handle innerhalb eines Wörterbuchs (ein Wörterbuchelement) ist.
Ein im Griff übergebener Nutzer (aDictionaryItemHandle) wird so aktualisiert, dass er auf das oberste Wörterbuchelement-Handle im Wörterbuch verweist.
Details | |||
---|---|---|---|
Rückgabewerte |
|
Isleaf
bool IsLeaf( PropertyPathHandle aPropertyHandle ) const
Gibt „true“ zurück, wenn der Ziehpunkt auf einen Blattknoten in der Schemastruktur verweist.
Details | |||
---|---|---|---|
Rückgabewerte |
|
Kann nicht festgelegt werden
bool IsNullable( PropertyPathHandle aHandle ) const
Ist optional
bool IsOptional( PropertyPathHandle aHandle ) const
Logo: IsParent
bool IsParent( PropertyPathHandle aChildHandle, PropertyPathHandle aParentHandle ) const
Prüft, ob ein bestimmter Handle einem anderen Handle untergeordnet ist.
Dies kann ein indirekter Elternteil 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 ein Leser im Stammverzeichnis eines WDM-Pfadelements positioniert ist, lesen Sie die relevanten Tags und geben Sie den entsprechenden Pfadnamen an.
Details | |||||
---|---|---|---|---|---|
Rückgabewerte |
|
MapPathToHandle
WEAVE_ERROR MapPathToHandle( const char *aPathString, PropertyPathHandle & aHandle ) const
Bei einer Stringdarstellung eines WDM-Pfads werden die relevanten Tags vorgelesen und das entsprechende Handle angegeben.
Der WDM-Pfad wird als String dargestellt. Dabei gelten folgende Regeln:
- Tags werden durch
/
getrennt. - Der Pfad MUSS mit einem führenden
/
beginnen und MUSS keinen abschließenden Schrägstrich enthalten. - Numerische Tags im WDM-Pfad müssen codiert werden. Verwenden Sie dazu die Standard-C-Bibliothek für die Ganzzahl-zu-String-Codierung, d. h., die Dezimalcodierung (Standard) muss NICHT eine führende 0 enthalten, eine hexadezimale Codierung muss mit
0x
beginnen und eine Oktalcodierung muss ein führendes0
-Element enthalten.
Details | |||||||
---|---|---|---|---|---|---|---|
Rückgabewerte |
|
Profilprofil-ID
bool MatchesProfileId( uint32_t aProfileId ) const
Gibt „true“ zurück, wenn die übergebene profileId mit der im Schema gespeicherten übereinstimmt.
Details | |||
---|---|---|---|
Rückgabewerte |
|
Daten abrufen
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 für das entsprechende Datenelement Blattdaten aus der Quelle ab und schreiben Sie sie in einem Schema, auf den der Autor verweist, auf Schema-Basis.
Details | |||||
---|---|---|---|---|---|
Rückgabewerte |
|
AbrufbareDataDataData-Daten
WEAVE_ERROR RetrieveUpdatableDictionaryData( PropertyPathHandle aHandle, uint64_t aTagToWrite, nl::Weave::TLV::TLVWriter & aWriter, IGetDataDelegate *aDelegate, PropertyPathHandle & aPropertyPathHandleOfDictItemToStartFrom ) const
Daten speichern
WEAVE_ERROR StoreData( PropertyPathHandle aHandle, nl::Weave::TLV::TLVReader & aReader, ISetDataDelegate *aDelegate, IPathFilter *aPathFilter ) const
Bei einem Pfad-Handle und einem Leser, der sich auf dem entsprechenden Datenelement befindet, verarbeiten Sie den Datenzwischenspeicher, auf den der Leser verweist, und speichern ihn in der Senke, indem der Aufruf „SetLeafData“ aufgerufen wird, sobald ein Blattdatenelement erkannt wird.
Details | |||||
---|---|---|---|---|---|
Rückgabewerte |
|