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::Weave::Profiles::DataManagement_Current::TraitSchemaEngine::IGetDataDelegate
nl::Weave::Profiles::DataManagement_Current::TraitSchemaEngine::ISetDataDelegate

Strukturen

nl::Weave::Profiles::DataManagement_Current::TraitSchemaEngine::PropertyInfo
nl::Weave::Profiles::DataManagement_Current::TraitSchemaEngine::Schema

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
PropertyPathHandle
Handle zum niedrigsten übergeordneten Element.

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
int32_t
Die Tiefe im Baum

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
PropertyPathHandle
Alias des ersten Kindes.

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
PropertyInfo*

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
PropertyPathHandle
Alias des nächsten untergeordneten Elements.

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
PropertyPathHandle
Handle des übergeordneten Elements.

GetProfileId

uint32_t GetProfileId(
  void
) const 

Gibt die Profil-ID des verknüpften Merkmals zurück

Details
Rückgabewerte
Trait
Profil-ID

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
[in] aCandidateHandle
Der zu konvertierende PropertyPathHandle.
[in] aTags
Zeiger auf das Ausgabearray.
[in] aTagsSize
Größe des Arrays aTags in Anzahl der Elemente.
[out] aNumTags
Die Anzahl der in aTags geschriebenen Tags
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
uint64_t

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
bool

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
bool

IsLeaf

bool IsLeaf(
  PropertyPathHandle aPropertyHandle
) const 

Gibt „true“ zurück, wenn das Handle auf einen Blattknoten im Schemabaum verweist.

Details
Rückgabewerte
bool

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
bool

MapHandleToPath

WEAVE_ERROR MapHandleToPath(
  PropertyPathHandle aHandle,
  nl::Weave::TLV::TLVWriter & aPathWriter
) const 

Konvertieren Sie das Pfad-Handle in einen TLV-Pfad.

Details
Rückgabewerte
WEAVE_NO_ERROR
Bei Erfolg.
other
Der Alias konnte nicht in einen TLV-Pfad konvertiert werden

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
WEAVE_NO_ERROR
Bei Erfolg.
WEAVE_ERROR_TLV_TAG_NOT_FOUND
Wenn aufgrund eines fehlerhaften/falsch angegebenen Pfads kein übereinstimmender Alias gefunden wurde.

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 vorangestellte 0 enthalten.

Details
Rückgabewerte
WEAVE_NO_ERROR
Bei Erfolg.
WEAVE_ERROR_TLV_TAG_NOT_FOUND
Wenn kein übereinstimmender Alias gefunden wurde.
WEAVE_ERROR_INVALID_ARGUMENT
Wenn ein Pfadstring fehlerhaft ist

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
bool

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
WEAVE_NO_ERROR
Bei Erfolg.
other
Beim Schreiben der Daten sind Fehler aufgetreten.

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
WEAVE_NO_ERROR
Bei Erfolg.
other
Beim Parsen/Bearbeiten der Daten sind Fehler aufgetreten.