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 zum Parsen und Übersetzen in ein Format, das von der WDM-Maschine verwendet werden kann.
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/aus TLV mit einem Handle.
Das Schema selbst wird in Tabellenform gespeichert, die ausreichend beschrieben sind, um ein allgemeines Parsen bzw. Zusammenstellen von WDM-Pfaden/-Daten für ein bestimmtes Merkmal zu ermöglichen. Diese Tabellen sind die endgültige Ausgabe von „code-gen“. Der Begriff selbst ist etwas irreführend, da kein generierter Code vorhanden ist.
Ö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
|
Berechnet den niedrigsten Handle, der beiden Handles übergeordnet ist.
|
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
Wenn eine Datenschemaversion angegeben wird, 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
|
Gibt den nächsten untergeordneten Handle zurück, der mit einem bestimmten übergeordneten Element verknüpft ist.
|
GetParent(PropertyPathHandle aHandle) const
|
Gibt den übergeordneten 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 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 angegebenen Versionsbereich wird mit dieser Funktion geprüft, ob es eine Kompatibilitätsüberschneidung zwischen diesem und dem vom Schema unterstützten Schema gibt, das dieser Schema-Engine zugrunde liegt.
|
IsDictionary(PropertyPathHandle aHandle) const
|
bool
Gibt „wahr“ zurück, wenn der Handle ein Dictionary ist (und nicht in einem Dictionary enthalten ist, siehe Methode unten).
|
IsEphemeral(PropertyPathHandle aHandle) const
|
bool
|
IsInDictionary(PropertyPathHandle aHandle, PropertyPathHandle & aDictionaryItemHandle) const
|
bool
Gibt „wahr“ zurück, wenn sich der Handle in einem Dictionary (einem Dictionary-Element) befindet.
|
IsLeaf(PropertyPathHandle aPropertyHandle) const
|
bool
Gibt „true“ zurück, wenn der Handle auf einen Endknoten 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 ein untergeordneter Alias 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, werden die relevanten Tags gelesen und der entsprechende Pfad-Handle angegeben.
|
MapPathToHandle(const char *aPathString, PropertyPathHandle & aHandle) const
|
Lies anhand einer Stringdarstellung eines WDM-Pfads die relevanten Tags aus und gib den entsprechenden Pfadhahn an.
|
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
|
Wenn ein Pfad-Handle und ein Leser auf dem entsprechenden Datenelement positioniert sind, verarbeiten Sie den Datenpuffer, auf den der Leser verweist, und speichern Sie ihn in der Senke, indem Sie den Aufruf „SetLeafData“ verwenden, wenn ein untergeordnetes Datenelement gefunden wird.
|
Klassen |
|
---|---|
nl:: |
|
nl:: |
Structs |
|
---|---|
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 Äste zurückgegeben, die jeweils einen 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 in der Schemastruktur 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
Wenn eine Datenschemaversion angegeben wird, 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 Verweis auf die Struktur PropertyInfo 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
Gibt den nächsten untergeordneten Handle zurück, der mit einem bestimmten übergeordneten Element verknüpft ist.
Details | |||
---|---|---|---|
Rückgabewerte |
|
GetParent
PropertyPathHandle GetParent( PropertyPathHandle aHandle ) const
Gibt den übergeordneten Handle eines bestimmten untergeordneten Pfad-Handles zurück.
Wörterbuchschlüssel im Handle werden beibehalten, wenn der ü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 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 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 angegebenen Versionsbereich wird mit dieser Funktion geprüft, ob es eine Kompatibilitätsüberschneidung zwischen diesem und dem vom Schema unterstützten Schema gibt, das diese Schema-Engine unterstützt.
Wenn es eine Überschneidung gibt, gibt die Funktion „true“ zurück und aktualisiert das übergebene Argument „aIntersection“, um die Ergebnisse dieses Überschneidungstests widerzuspiegeln.
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 „wahr“ zurück, wenn sich der Handle in einem Dictionary (einem Dictionary-Element) befindet.
Ein von einem Nutzer übergebener Handle (aDictionaryItemHandle) wird so aktualisiert, dass er auf den Handle des obersten Wörterbuchelements im Wörterbuch verweist.
Details | |||
---|---|---|---|
Rückgabewerte |
|
IsLeaf
bool IsLeaf( PropertyPathHandle aPropertyHandle ) const
Gibt „true“ zurück, wenn sich der Handle auf einen Endknoten im Schemabaum bezieht.
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 ein untergeordneter Alias ist.
Das 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, werden die relevanten Tags gelesen und der entsprechende Pfad-Handle angegeben.
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 gemäß den folgenden Regeln als String dargestellt:
- Tags werden durch
/
getrennt. - Der Pfad MUSS mit einem
/
beginnen und darf keinen nachgestellten Schrägstrich enthalten. - Numerische Tags im WDM-Pfad MÜSSEN mit der Standard-C-Bibliothek für die Codierung von Ganzzahlen in Strings codiert werden. Das bedeutet, dass die Dezimalcodierung (Standard) KEINE führende Null enthalten darf, eine Hexadezimalcodierung mit
0x
beginnen und eine Oktalcodierung mit0
beginnen muss.
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
Ruft unter Angabe eines Pfad-Handles und einer Schreibposition auf dem entsprechenden Datenelement untergeordnete Daten aus der Quelle ab und schreibt sie schemakonform in den Puffer, auf den der Writer 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
Wenn ein Pfad-Handle und ein Leser auf dem entsprechenden Datenelement positioniert sind, verarbeiten Sie den Datenpuffer, auf den der Leser verweist, und speichern Sie ihn in der Senke, indem Sie den Aufruf „SetLeafData“ verwenden, wenn ein untergeordnetes Datenelement gefunden wird.
Details | |||||
---|---|---|---|---|---|
Rückgabewerte |
|