nl::Weave::Profiles::DataManagement_Current::TraitSchemaEngine

#include <src/lib/profiles/data-management/Current/TraitData.h>

Il motore schema acquisisce le informazioni sullo schema associate a un determinato tratto e fornisce strutture per analizzarle e tradurle in un modulo utilizzabile dal macchinario WDM.

Riepilogo

Ciò include la conversione da PathHandles a percorsi WDM (e viceversa), metodi per interpretare/eseguire query sullo schema stesso e metodi per aiutare a leggere/scrivere dati da/verso TLV a cui è stato assegnato un handle.

Lo schema stesso è archiviato in forma tabulare, sufficientemente descritto per consentire l'analisi/composizione generica di percorsi/dati WDM per qualsiasi tratto dato. Queste tabelle sono l'output finale di "code-gen" Il termine è piuttosto fuorviante data l'assenza di codice generato :P.

Attributi statici pubblici

kHandleTableOffset = 2
const uint32_t

Attributi pubblici

mSchema
const Schema

Funzioni pubbliche

FindLowestCommonAncestor(PropertyPathHandle aHandle1, PropertyPathHandle aHandle2, PropertyPathHandle *aHandle1BranchChild, PropertyPathHandle *aHandle2BranchChild) const
Dati due handle della proprietà, calcola l'handle più basso che funge da principale per entrambi.
GetChildHandle(PropertyPathHandle aParentHandle, uint8_t aContextTag) const
GetDepth(PropertyPathHandle aHandle) const
int32_t
Calcola la profondità nella struttura ad albero dello schema per un determinato handle.
GetDictionaryItemHandle(PropertyPathHandle aParentHandle, uint16_t aDictionaryKey) const
GetFirstChild(PropertyPathHandle aParentHandle) const
Restituisce il primo handle secondario associato a un particolare handle.
GetHighestForwardVersion(SchemaVersion aVersion) const
SchemaVersion
Se viene fornita una versione dello schema dei dati, verrà restituita la versione dello schema compatibile con le versioni più recenti.
GetLowestCompatibleVersion(SchemaVersion aVersion) const
SchemaVersion
Se viene fornita una versione dello schema dei dati, verrà restituita la versione minima dello schema compatibile.
GetMap(PropertyPathHandle aHandle) const
const PropertyInfo *
Restituisce un puntatore alla struttura PropertyInfo che descrive un determinato handle del percorso.
GetMaxVersion() const
SchemaVersion
GetMinVersion() const
SchemaVersion
GetNextChild(PropertyPathHandle aParentId, PropertyPathHandle aChildHandle) const
Se viene fornito un handle a un account secondario esistente, restituisce l'handle successivo associato a un determinato account principale.
GetParent(PropertyPathHandle aHandle) const
Restituisce l'handle principale di un determinato handle del percorso figlio.
GetProfileId(void) const
uint32_t
Restituisce l'ID profilo del trait associato.
GetRelativePathTags(const PropertyPathHandle aCandidateHandle, uint64_t *aTags, const uint32_t aTagsSize, uint32_t & aNumTags) const
Converte un PropertyPathHandle in un array di tag di contesto.
GetTag(PropertyPathHandle aHandle) const
uint64_t
Restituisce il tag associato a un handle del percorso.
GetVersionIntersection(SchemaVersionRange & aVersion, SchemaVersionRange & aIntersection) const
bool
Dato un intervallo di versioni, questa funzione controlla se esiste un'intersezione di compatibilità tra questo e ciò che è supportato dallo schema che supporta questo motore dello schema.
IsDictionary(PropertyPathHandle aHandle) const
bool
Restituisce true se l'handle è un dizionario (e non in un dizionario; vedi il metodo di seguito).
IsEphemeral(PropertyPathHandle aHandle) const
bool
IsInDictionary(PropertyPathHandle aHandle, PropertyPathHandle & aDictionaryItemHandle) const
bool
Restituisce true se l'handle si trova all'interno di un dizionario (un elemento del dizionario).
IsLeaf(PropertyPathHandle aPropertyHandle) const
bool
Restituisce true se l'handle si riferisce a un nodo foglia nella struttura ad albero dello schema.
IsNullable(PropertyPathHandle aHandle) const
bool
IsOptional(PropertyPathHandle aHandle) const
bool
IsParent(PropertyPathHandle aChildHandle, PropertyPathHandle aParentHandle) const
bool
Controlla se un determinato handle è figlio di un altro handle.
MapHandleToPath(PropertyPathHandle aHandle, nl::Weave::TLV::TLVWriter & aPathWriter) const
Converti l'handle del percorso in un percorso TLV.
MapPathToHandle(nl::Weave::TLV::TLVReader & aPathReader, PropertyPathHandle & aHandle) const
Dato un lettore posizionato alla radice di un elemento di percorso WDM, leggi i tag pertinenti e fornisci l'handle del percorso equivalente.
MapPathToHandle(const char *aPathString, PropertyPathHandle & aHandle) const
Data la rappresentazione in formato stringa di un percorso WDM, legge ad alta voce i tag pertinenti e fornisce l'handle equivalente del percorso.
MatchesProfileId(uint32_t aProfileId) const
bool
Restituisce true se il valore passato nel profileId corrisponde a quello memorizzato nello schema.
RetrieveData(PropertyPathHandle aHandle, uint64_t aTagToWrite, nl::Weave::TLV::TLVWriter & aWriter, IGetDataDelegate *aDelegate, IDirtyPathCut *apDirtyPathCut) const
Dati un handle di percorso e una posizione del writer sull'elemento di dati corrispondente, recupera i dati foglia dall'origine e scrivili nel buffer a cui punta il writer in modo conforme allo schema.
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
Dati un handle di percorso e un lettore posizionato sull'elemento di dati corrispondente, elabora il buffer di dati a cui punta il lettore e lo archivia nel sink richiamando la chiamata SetLeafData ogni volta che viene rilevato un elemento di dati foglia.

Corsi

nl::Weave::Profiles::DataManagement_Current::TraitSchemaEngine::IGetDataDelegate
nl::Weave::Profiles::DataManagement_Current::TraitSchemaEngine::ISetDataDelegate

Structs

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

La struttura principale dello schema che contiene le informazioni sullo schema.

Attributi statici pubblici

kHandleTableOffset

const uint32_t kHandleTableOffset = 2

Attributi pubblici

mSchema

const Schema mSchema

Funzioni pubbliche

FindLowestCommonAncestor

PropertyPathHandle FindLowestCommonAncestor(
  PropertyPathHandle aHandle1,
  PropertyPathHandle aHandle2,
  PropertyPathHandle *aHandle1BranchChild,
  PropertyPathHandle *aHandle2BranchChild
) const 

Dati due handle della proprietà, calcola l'handle più basso che funge da principale per entrambi.

Inoltre, restituisci i due rami secondari che contengono ciascuno dei due handle (anche se sono gli stessi).

Dettagli
Valori restituiti
PropertyPathHandle
Esegui l'handle per l'elemento padre di livello inferiore.

GetChildHandle

PropertyPathHandle GetChildHandle(
  PropertyPathHandle aParentHandle,
  uint8_t aContextTag
) const 

GetDepth

int32_t GetDepth(
  PropertyPathHandle aHandle
) const 

Calcola la profondità nella struttura ad albero dello schema per un determinato handle.

Dettagli
Valori restituiti
int32_t
Lo spessore dell'albero

GetDictionaryItemHandle

PropertyPathHandle GetDictionaryItemHandle(
  PropertyPathHandle aParentHandle,
  uint16_t aDictionaryKey
) const 

GetFirstChild

PropertyPathHandle GetFirstChild(
  PropertyPathHandle aParentHandle
) const 

Restituisce il primo handle secondario associato a un particolare handle.

Dettagli
Valori restituiti
PropertyPathHandle
Handle del primo figlio.

GetHighestForwardVersion

SchemaVersion GetHighestForwardVersion(
  SchemaVersion aVersion
) const 

Se viene fornita una versione dello schema dei dati, verrà restituita la versione dello schema compatibile con le versioni più recenti.

GetLowestCompatibleVersion

SchemaVersion GetLowestCompatibleVersion(
  SchemaVersion aVersion
) const 

Se viene fornita una versione dello schema dei dati, verrà restituita la versione minima dello schema compatibile.

GetMap

const PropertyInfo * GetMap(
  PropertyPathHandle aHandle
) const 

Restituisce un puntatore alla struttura PropertyInfo che descrive un determinato handle del percorso.

Dettagli
Valori restituiti
PropertyInfo*

GetMaxVersion

SchemaVersion GetMaxVersion() const 

GetMinVersion

SchemaVersion GetMinVersion() const 

GetNextChild

PropertyPathHandle GetNextChild(
  PropertyPathHandle aParentId,
  PropertyPathHandle aChildHandle
) const 

Se viene fornito un handle a un account secondario esistente, restituisce l'handle successivo associato a un determinato account principale.

Dettagli
Valori restituiti
PropertyPathHandle
Handle del prossimo bambino.

GetParent

PropertyPathHandle GetParent(
  PropertyPathHandle aHandle
) const 

Restituisce l'handle principale di un determinato handle del percorso figlio.

Le chiavi del dizionario nell'handle vengono conservate nel caso in cui anche l'handle principale sia un elemento del dizionario.

Dettagli
Valori restituiti
PropertyPathHandle
Handle dell'elemento principale.

GetProfileId

uint32_t GetProfileId(
  void
) const 

Restituisce l'ID profilo del trait associato.

Dettagli
Valori restituiti
Trait
ID profilo

GetRelativePathTags

WEAVE_ERROR GetRelativePathTags(
  const PropertyPathHandle aCandidateHandle,
  uint64_t *aTags,
  const uint32_t aTagsSize,
  uint32_t & aNumTags
) const 

Converte un PropertyPathHandle in un array di tag di contesto.

Dettagli
Parametri
[in] aCandidateHandle
Il valore PropertyPathHandle da convertire.
[in] aTags
Puntatore all'array di output.
[in] aTagsSize
Dimensioni dell'array aTag, in numero di elementi.
[out] aNumTags
Il numero di tag scritti in aTag
Restituisce
WEAVE_NO_ERROR in caso di esito positivo; WEAVE_ERROR_NO_MEMORY se aTag è troppo piccolo per archiviare il percorso completo.

GetTag

uint64_t GetTag(
  PropertyPathHandle aHandle
) const 

Restituisce il tag associato a un handle del percorso.

Se è un elemento del dizionario, questa funzione restituisce il ProfileTag. In caso contrario, restituisce i tag di contesto.

Dettagli
Valori restituiti
uint64_t

GetVersionIntersection

bool GetVersionIntersection(
  SchemaVersionRange & aVersion,
  SchemaVersionRange & aIntersection
) const 

Dato un intervallo di versioni, questa funzione controlla se esiste un'intersezione di compatibilità tra questo e ciò che è supportato dallo schema che supporta questo motore dello schema.

Se c'è un'intersezione, la funzione restituisce true e aggiorna l'argomento aIntersection passato in modo da riflettere i risultati del test dell'intersezione.

IsDictionary

bool IsDictionary(
  PropertyPathHandle aHandle
) const 

Restituisce true se l'handle è un dizionario (e non in un dizionario; vedi il metodo di seguito).

Dettagli
Valori restituiti
bool

IsEphemeral

bool IsEphemeral(
  PropertyPathHandle aHandle
) const 

IsInDictionary

bool IsInDictionary(
  PropertyPathHandle aHandle,
  PropertyPathHandle & aDictionaryItemHandle
) const 

Restituisce true se l'handle si trova all'interno di un dizionario (un elemento del dizionario).

Un utente passato nell'handle (aDictionaryItemHandle) viene aggiornato in modo che punti all'handle dell'elemento del dizionario più in alto all'interno del dizionario.

Dettagli
Valori restituiti
bool

IsLeaf

bool IsLeaf(
  PropertyPathHandle aPropertyHandle
) const 

Restituisce true se l'handle si riferisce a un nodo foglia nella struttura ad albero dello schema.

Dettagli
Valori restituiti
bool

IsNullable

bool IsNullable(
  PropertyPathHandle aHandle
) const 

IsOptional

bool IsOptional(
  PropertyPathHandle aHandle
) const 

IsParent

bool IsParent(
  PropertyPathHandle aChildHandle,
  PropertyPathHandle aParentHandle
) const 

Controlla se un determinato handle è figlio di un altro handle.

Può essere un account principale indiretto.

Dettagli
Valori restituiti
bool

MapHandleToPath

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

Converti l'handle del percorso in un percorso TLV.

Dettagli
Valori restituiti
WEAVE_NO_ERROR
Un successo.
other
Non è stato possibile convertire l'handle in un percorso TLV

MapPathToHandle

WEAVE_ERROR MapPathToHandle(
  nl::Weave::TLV::TLVReader & aPathReader,
  PropertyPathHandle & aHandle
) const 

Dato un lettore posizionato alla radice di un elemento di percorso WDM, leggi i tag pertinenti e fornisci l'handle del percorso equivalente.

Dettagli
Valori restituiti
WEAVE_NO_ERROR
Un successo.
WEAVE_ERROR_TLV_TAG_NOT_FOUND
Se non è stato possibile trovare un handle corrispondente a causa di un percorso non corretto o specificato in modo errato.

MapPathToHandle

WEAVE_ERROR MapPathToHandle(
  const char *aPathString,
  PropertyPathHandle & aHandle
) const 

Data la rappresentazione in formato stringa di un percorso WDM, legge ad alta voce i tag pertinenti e fornisce l'handle equivalente del percorso.

Il percorso WDM è rappresentato come una stringa utilizzando le seguenti regole:

  • i tag sono separati da /
  • il percorso DEVE iniziare con un / iniziale e NON DEVE contenere una barra finale
  • i tag numerici nel percorso WDM DEVONO essere codificati utilizzando la libreria C standard per la codifica da numero intero a stringa, ossia la codifica decimale (predefinita) NON DEVE contenere uno 0 iniziale, una codifica esadecimale DEVE iniziare con 0x e la codifica ottale DEVE contenere un carattere 0 iniziale.

Dettagli
Valori restituiti
WEAVE_NO_ERROR
Un successo.
WEAVE_ERROR_TLV_TAG_NOT_FOUND
Se non è stato possibile trovare un handle corrispondente.
WEAVE_ERROR_INVALID_ARGUMENT
Se il formato di una stringa del percorso non è valido

MatchesProfileId

bool MatchesProfileId(
  uint32_t aProfileId
) const 

Restituisce true se il valore di profileId passato in profileId corrisponde a quello memorizzato nello schema.

Dettagli
Valori restituiti
bool

RetrieveData

WEAVE_ERROR RetrieveData(
  PropertyPathHandle aHandle,
  uint64_t aTagToWrite,
  nl::Weave::TLV::TLVWriter & aWriter,
  IGetDataDelegate *aDelegate,
  IDirtyPathCut *apDirtyPathCut
) const 

Dati un handle di percorso e una posizione del writer sull'elemento di dati corrispondente, recupera i dati foglia dall'origine e scrivili nel buffer a cui punta il writer in modo conforme allo schema.

Dettagli
Valori restituiti
WEAVE_NO_ERROR
Un successo.
other
Si sono verificati errori durante la scrittura dei dati.

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 

Dati un handle di percorso e un lettore posizionato sull'elemento di dati corrispondente, elabora il buffer di dati a cui punta il lettore e lo archivia nel sink richiamando la chiamata SetLeafData ogni volta che viene rilevato un elemento di dati foglia.

Dettagli
Valori restituiti
WEAVE_NO_ERROR
Un successo.
other
Si sono verificati errori di analisi/elaborazione dei dati.