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

Strebenklemmen

nl::Weave::Profile::DataManagement_Current::TraitSchemaEngine::PropertyInfo
nl::Weave::Profile::DataManagement_Current::TraitSchemaEngine::Schema

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
PropertyPathHandle
Alias an das niedrigste übergeordnete Element senden.

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

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

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

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

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

Profilprofil-ID

uint32_t GetProfileId(
  void
) const 

Gibt die Profil-ID der zugehörigen Eigenschaft zurück

Details
Rückgabewerte
Trait
Profil-ID

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
[in] aCandidateHandle
Die PropertyPathHandle, die konvertiert werden soll.
[in] aTags
Mauszeiger auf das Ausgabearray.
[in] aTagsSize
Größe des aTags-Arrays in Anzahl der Elemente.
[out] aNumTags
Die Anzahl der in aTags geschriebenen Tags
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
uint64_t

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
bool

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
bool

Isleaf

bool IsLeaf(
  PropertyPathHandle aPropertyHandle
) const 

Gibt „true“ zurück, wenn der Ziehpunkt auf einen Blattknoten in der Schemastruktur verweist.

Details
Rückgabewerte
bool

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
bool

MapHandleToPath

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

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

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

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
WEAVE_NO_ERROR
Erfolg.
WEAVE_ERROR_TLV_TAG_NOT_FOUND
Wenn aufgrund eines fehlerhaft formatierten/falsch angegebenen Pfads kein passendes Alias gefunden wurde.

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ührendes 0-Element enthalten.

Details
Rückgabewerte
WEAVE_NO_ERROR
Erfolg.
WEAVE_ERROR_TLV_TAG_NOT_FOUND
Es wurde kein passender Handle gefunden.
WEAVE_ERROR_INVALID_ARGUMENT
Wenn ein Pfadstring fehlerhaft ist

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
bool

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

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
WEAVE_NO_ERROR
Erfolg.
other
Beim Parsen der Daten ist ein Fehler aufgetreten.