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

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

Silnik schematu pobiera informacje schematu powiązane z określonymi cechami i zapewnia mechanizmy analizowania i przekształcania ich w postać przydatną dla mechanizmu WDM.

Podsumowanie

Obejmuje to konwersję z PathHandles na ścieżki WDM (i odwrotnie), metody interpretowania i wyszukiwania schematu oraz metody pomagające w odczytywaniu i zapisywaniu danych do/z TLV z użyciem uchwytu.

Sam schemat jest przechowywany w formie tabelarycznej, wystarczająco opisanej, aby umożliwić ogólne parsowanie/kompozycję ścieżek/danych WDM dla dowolnej cechy. Te tabele będą ostatecznym wynikiem działania polecenia „code-gen” (samo to określenie jest nieco mylące, ponieważ nie generuje ono żadnego kodu :P).

Publiczne atrybuty statyczne

kHandleTableOffset = 2
const uint32_t

Atrybuty publiczne

mSchema
const Schema

Funkcje publiczne

FindLowestCommonAncestor(PropertyPathHandle aHandle1, PropertyPathHandle aHandle2, PropertyPathHandle *aHandle1BranchChild, PropertyPathHandle *aHandle2BranchChild) const
Na podstawie 2 identyfikatorów usług oblicz najniższy identyfikator, który jest nadrzędnym dla obu tych identyfikatorów.
GetChildHandle(PropertyPathHandle aParentHandle, uint8_t aContextTag) const
GetDepth(PropertyPathHandle aHandle) const
int32_t
Oblicz głębokość w drzewie schematu dla danego identyfikatora.
GetDictionaryItemHandle(PropertyPathHandle aParentHandle, uint16_t aDictionaryKey) const
GetFirstChild(PropertyPathHandle aParentHandle) const
Zwraca pierwszy identyfikator podrzędny powiązany z określonym identyfikatorem nadrzędnym.
GetHighestForwardVersion(SchemaVersion aVersion) const
SchemaVersion
Na podstawie podanej wersji schematu danych zwraca najwyższą wersję schematu zgodną wstecz.
GetLowestCompatibleVersion(SchemaVersion aVersion) const
SchemaVersion
Zwraca minimalną zgodną wersję schematu danych.
GetMap(PropertyPathHandle aHandle) const
const PropertyInfo *
Zwraca wskaźnik do struktury PropertyInfo opisującej konkretny uchwyt ścieżki.
GetMaxVersion() const
SchemaVersion
GetMinVersion() const
SchemaVersion
GetNextChild(PropertyPathHandle aParentId, PropertyPathHandle aChildHandle) const
Na podstawie identyfikatora istniejącego elementu podrzędnego zwraca następny identyfikator elementu podrzędnego powiązany z danym elementem nadrzędnym.
GetParent(PropertyPathHandle aHandle) const
Zwraca element nadrzędny danego elementu podrzędnego ścieżki.
GetProfileId(void) const
uint32_t
Zwraca identyfikator profilu powiązanego z właściwością.
GetRelativePathTags(const PropertyPathHandle aCandidateHandle, uint64_t *aTags, const uint32_t aTagsSize, uint32_t & aNumTags) const
Konwertuje parametr PropertyPathHandle na tablicę tagów kontekstowych.
GetTag(PropertyPathHandle aHandle) const
uint64_t
Zwraca tag powiązany z uchwytem ścieżki.
GetVersionIntersection(SchemaVersionRange & aVersion, SchemaVersionRange & aIntersection) const
bool
Funkcja sprawdza, czy podany zakres wersji jest zgodny z wersją obsługiwaną przez mechanizm obsługiwany przez ten mechanizm.
IsDictionary(PropertyPathHandle aHandle) const
bool
Zwraca wartość „prawda”, jeśli uchwyt jest słownikiem (i nie znajduje się w słowniku – patrz metoda poniżej).
IsEphemeral(PropertyPathHandle aHandle) const
bool
IsInDictionary(PropertyPathHandle aHandle, PropertyPathHandle & aDictionaryItemHandle) const
bool
Zwraca wartość „PRAWDA”, jeśli uchwyt znajduje się w definicji słownika (elementu słownika).
IsLeaf(PropertyPathHandle aPropertyHandle) const
bool
Zwraca wartość „True” (Prawda), jeśli identyfikator odnosi się do węzła końcowego w drzewie schematu.
IsNullable(PropertyPathHandle aHandle) const
bool
IsOptional(PropertyPathHandle aHandle) const
bool
IsParent(PropertyPathHandle aChildHandle, PropertyPathHandle aParentHandle) const
bool
Sprawdza, czy dany nick jest elementem podrzędnym innego nicka.
MapHandleToPath(PropertyPathHandle aHandle, nl::Weave::TLV::TLVWriter & aPathWriter) const
Przekształć uchwyt ścieżki na ścieżkę TLV.
MapPathToHandle(nl::Weave::TLV::TLVReader & aPathReader, PropertyPathHandle & aHandle) const
Czytnik znajduje się w korzenia elementu ścieżki WDM. Czytnik odczytuje odpowiednie tagi i przekaże odpowiedni identyfikator ścieżki.
MapPathToHandle(const char *aPathString, PropertyPathHandle & aHandle) const
Na podstawie ciągu znaków reprezentującego ścieżkę WDM odczytuje odpowiednie tagi i podaje odpowiedni identyfikator ścieżki.
MatchesProfileId(uint32_t aProfileId) const
bool
Zwraca wartość „prawda”, jeśli przekazany identyfikator profilu jest zgodny z zapisanym w schemacie.
RetrieveData(PropertyPathHandle aHandle, uint64_t aTagToWrite, nl::Weave::TLV::TLVWriter & aWriter, IGetDataDelegate *aDelegate, IDirtyPathCut *apDirtyPathCut) const
Mając uchwyt ścieżki i pozycję zapisującego w odpowiednim elemencie danych, pobierz dane liści ze źródła i zapisz je w buforze wskazanym przez autora w sposób zgodny ze schematem.
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
Gdy masz uchwyt ścieżki i czytnik umieszczony na odpowiednim elemencie danych, przetwórz bufor danych wskazywany przez czytnik i zapisz go w zbiorniku, wywołując wywołanie SetLeafData, gdy tylko napotkasz element danych liścia.

Zajęcia

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

Struktury

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

Główna struktura schematu, która zawiera informacje o schemacie.

Publiczne atrybuty statyczne

kHandleTableOffset

const uint32_t kHandleTableOffset = 2

Atrybuty publiczne

mSchema

const Schema mSchema

Funkcje publiczne

FindLowestCommonAncestor

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

Na podstawie 2 identyfikatorów usług oblicz identyfikator najniższych właściwości, który jest elementem nadrzędnym dla obu tych identyfikatorów.

Dodatkowo zwraca 2 gałęzie podrzędne, które zawierają po jednym z 2 identyfikatorów (nawet jeśli są one takie same).

Szczegóły
Zwracane wartości
PropertyPathHandle
Uchwyć element nadrzędny najniższego poziomu.

GetChildHandle

PropertyPathHandle GetChildHandle(
  PropertyPathHandle aParentHandle,
  uint8_t aContextTag
) const 

GetDepth

int32_t GetDepth(
  PropertyPathHandle aHandle
) const 

Oblicz głębokość w drzewie schematu dla danego identyfikatora.

Szczegóły
Zwracane wartości
int32_t
Głębokość w drzewie

GetDictionaryItemHandle

PropertyPathHandle GetDictionaryItemHandle(
  PropertyPathHandle aParentHandle,
  uint16_t aDictionaryKey
) const 

GetFirstChild

PropertyPathHandle GetFirstChild(
  PropertyPathHandle aParentHandle
) const 

Zwraca pierwszy identyfikator podrzędny powiązany z określonym identyfikatorem nadrzędnym.

Szczegóły
Zwracane wartości
PropertyPathHandle
Uchwyt pierwszego elementu podrzędnego.

GetHighestForwardVersion

SchemaVersion GetHighestForwardVersion(
  SchemaVersion aVersion
) const 

Na podstawie podanej wersji schematu danych zwraca najwyższą wersję schematu zgodną wstecz.

GetLowestCompatibleVersion

SchemaVersion GetLowestCompatibleVersion(
  SchemaVersion aVersion
) const 

Dla podanej wersji schematu danych ta funkcja zwróci minimalną zgodną wersję schematu.

GetMap

const PropertyInfo * GetMap(
  PropertyPathHandle aHandle
) const 

Zwraca wskaźnik do struktury PropertyInfo opisującej konkretny uchwyt ścieżki.

Szczegóły
Zwracane wartości
PropertyInfo*

GetMaxVersion

SchemaVersion GetMaxVersion() const 

GetMinVersion

SchemaVersion GetMinVersion() const 

GetNextChild

PropertyPathHandle GetNextChild(
  PropertyPathHandle aParentId,
  PropertyPathHandle aChildHandle
) const 

Na podstawie identyfikatora istniejącego elementu podrzędnego zwraca następny identyfikator elementu podrzędnego powiązany z danym elementem nadrzędnym.

Szczegóły
Zwracane wartości
PropertyPathHandle
Identyfikator następnego dziecka.

GetParent

PropertyPathHandle GetParent(
  PropertyPathHandle aHandle
) const 

Zwraca uchwyt nadrzędny danego uchwytu ścieżki podrzędnej.

Klucze słownika w uchwycie są zachowywane, gdy uchwyt nadrzędny jest też elementem słownika.

Szczegóły
Zwracane wartości
PropertyPathHandle
Uchwyt wydawcy nadrzędnego.

GetProfileId

uint32_t GetProfileId(
  void
) const 

Zwraca identyfikator profilu powiązanego z właściwością.

Szczegóły
Zwracane wartości
Trait
identyfikator profilu

GetRelativePathTags

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

Konwertuje parametr PropertyPathHandle na tablicę tagów kontekstowych.

Szczegóły
Parametry
[in] aCandidateHandle
Właściwość PropertyPathHandle do skonwertowania.
[in] aTags
Wskaźnik do tablicy wyjściowej.
[in] aTagsSize
Rozmiar tablicy aTags podany w liczbie elementów.
[out] aNumTags
Liczba tagów zapisanych w aTags
Zwroty
WEAVE_NO_ERROR w przypadku powodzenia; WEAVE_ERROR_NO_MEMORY, jeśli aTags jest za mały, aby przechowywać pełną ścieżkę.

GetTag

uint64_t GetTag(
  PropertyPathHandle aHandle
) const 

Zwraca tag powiązany z uchwytem ścieżki.

Jeśli jest to element słownika, funkcja zwraca tag profilu. W przeciwnym razie zwraca tagi kontekstu.

Szczegóły
Zwracane wartości
uint64_t

GetVersionIntersection

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

Funkcja sprawdza, czy podany zakres wersji jest zgodny z wersją obsługiwaną przez mechanizm obsługiwany przez ten mechanizm.

Jeśli istnieje przecięcie, funkcja zwróci wartość true i zaktualizuje przekazany argument aIntersection, aby odzwierciedlał wyniki testu przecięcia.

IsDictionary

bool IsDictionary(
  PropertyPathHandle aHandle
) const 

Zwraca wartość „prawda”, jeśli nick jest słownikiem (a nie w słowniku – patrz metoda poniżej).

Szczegóły
Zwracane wartości
bool

IsEphemeral

bool IsEphemeral(
  PropertyPathHandle aHandle
) const 

IsInDictionary

bool IsInDictionary(
  PropertyPathHandle aHandle,
  PropertyPathHandle & aDictionaryItemHandle
) const 

Zwraca wartość „PRAWDA”, jeśli uchwyt znajduje się w definicji słownika (elementu słownika).

Użytkownik przekazywany za pomocą nicka (aDictionaryItemHandle) zostaje zaktualizowany w taki sposób, by wskazywał najwyższy uchwyt elementu słownika w słowniku.

Szczegóły
Zwracane wartości
bool

IsLeaf

bool IsLeaf(
  PropertyPathHandle aPropertyHandle
) const 

Zwraca wartość „True” (Prawda), jeśli identyfikator odnosi się do węzła końcowego w drzewie schematu.

Szczegóły
Zwracane wartości
bool

IsNullable

bool IsNullable(
  PropertyPathHandle aHandle
) const 

IsOptional

bool IsOptional(
  PropertyPathHandle aHandle
) const 

IsParent

bool IsParent(
  PropertyPathHandle aChildHandle,
  PropertyPathHandle aParentHandle
) const 

Sprawdza, czy dany nick jest podrzędny wobec innego nicka.

Może to być element nadrzędny pośredni.

Szczegóły
Zwracane wartości
bool

MapHandleToPath

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

Przekształć uchwyt ścieżki na ścieżkę TLV.

Szczegóły
Zwracane wartości
WEAVE_NO_ERROR
W przypadku powodzenia.
other
Nie udało się przekonwertować uchwytu na ścieżkę TLV

MapPathToHandle

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

Gdy czytnik znajduje się w korzenia elementu ścieżki WDM, odczytuje odpowiednie tagi i przekaże odpowiedni identyfikator ścieżki.

Szczegóły
Zwracane wartości
WEAVE_NO_ERROR
Powodzenie.
WEAVE_ERROR_TLV_TAG_NOT_FOUND
Jeśli z powodu nieprawidłowo określonej ścieżki nie można znaleźć pasującego uchwytu.

MapPathToHandle

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

Na podstawie ciągu znaków reprezentującego ścieżkę WDM odczytaj odpowiednie tagi i podaj odpowiedni identyfikator ścieżki.

Ścieżka WDM jest reprezentowana jako ciąg znaków, który jest interpretowany zgodnie z tymi regułami:

  • tagi są rozdzielone znakiem /
  • ścieżka MUSI zaczynać się ukośnikiem / i NIE MOŻE zawierać ukośnika końcowego
  • Tagi liczbowe w ścieżce WDM MUSZĄ być zakodowane za pomocą standardowej biblioteki C do kodowania liczb całkowitych na ciągi znaków, czyli kodowanie dziesiętne (domyślne) NIE MOŻE zawierać wiodącego zera, kodowanie szesnastkowe MUSI zaczynać się od 0x, a kodowanie oktetowe MUSI zawierać wiodący 0.

Szczegóły
Zwracane wartości
WEAVE_NO_ERROR
W przypadku powodzenia.
WEAVE_ERROR_TLV_TAG_NOT_FOUND
Jeśli nie udało się znaleźć pasującego identyfikatora.
WEAVE_ERROR_INVALID_ARGUMENT
Jeśli ciąg znaków ścieżki jest zniekształcony

MatchesProfileId

bool MatchesProfileId(
  uint32_t aProfileId
) const 

Zwraca wartość „true” (prawda), jeśli podany w polu „profileId” odpowiada identyfikatorowi zapisanemu w schemacie.

Szczegóły
Zwracane wartości
bool

RetrieveData

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

Mając uchwyt ścieżki i pozycję zapisującego w odpowiednim elemencie danych, pobierz dane liści ze źródła i zapisz je w buforze wskazanym przez autora w sposób zgodny ze schematem.

Szczegóły
Zwracane wartości
WEAVE_NO_ERROR
W przypadku powodzenia.
other
Wystąpiły błędy podczas zapisywania danych.

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 

Gdy masz uchwyt ścieżki i czytnik umieszczony na odpowiednim elemencie danych, przetwórz bufor danych wskazywany przez czytnik i zapisz go w zbiorniku, wywołując wywołanie SetLeafData, gdy tylko napotkasz element danych liścia.

Szczegóły
Zwracane wartości
WEAVE_NO_ERROR
W przypadku powodzenia.
other
Wystąpiły błędy podczas analizowania lub przetwarzania danych.