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

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

Mechanizm schematów pobiera informacje o schemacie powiązane z konkretną cechą, a następnie udostępnia funkcje do przeanalizowania i przekształcenia w formę, której może używać maszyny WDM.

Podsumowanie

Obejmuje to konwersję ze ścieżek PathHandles na ścieżki WDM (i odwrotnie), metody interpretacji samego schematu lub zapytań dotyczących tego schematu oraz metody ułatwiające odczytywanie i zapisywanie danych do i z TLV z określonym uchwytem.

Schemat jest przechowywany w formie tabelarycznej i wystarczająco opisany, aby umożliwić ogólną analizę/kompozycję ścieżek i danych WDM w przypadku dowolnej cechy. Te tabele będą ostatecznym wynikiem działania „code-gen” (sam termin jest nieco mylący ze względu na brak wygenerowanego 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
Biorąc pod uwagę 2 uchwyty właściwości, oblicz najniższy nick, który służy jako element nadrzędny obu z nich.
GetChildHandle(PropertyPathHandle aParentHandle, uint8_t aContextTag) const
GetDepth(PropertyPathHandle aHandle) const
int32_t
Oblicz głębokość w drzewie schematu dla danego uchwytu.
GetDictionaryItemHandle(PropertyPathHandle aParentHandle, uint16_t aDictionaryKey) const
GetFirstChild(PropertyPathHandle aParentHandle) const
Zwraca pierwszy nick podrzędny powiązany z danym elementem nadrzędnym.
GetHighestForwardVersion(SchemaVersion aVersion) const
SchemaVersion
Uwzględniana jest podana wersja schematu danych, co spowoduje zwrócenie najwyższej zgodnej wersji schematu.
GetLowestCompatibleVersion(SchemaVersion aVersion) const
SchemaVersion
Biorąc pod uwagę podaną wersję schematu danych, zwrócona zostanie minimalna zgodna wersja schematu.
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
Przypisanie nicka istniejącego elementu podrzędnego zwraca następny nick powiązany z konkretnym elementem nadrzędnym.
GetParent(PropertyPathHandle aHandle) const
Zwraca uchwyt nadrzędny danego uchwytu ścieżki podrzędnej.
GetProfileId(void) const
uint32_t
Zwraca identyfikator profilu powiązanej cechy.
GetRelativePathTags(const PropertyPathHandle aCandidateHandle, uint64_t *aTags, const uint32_t aTagsSize, uint32_t & aNumTags) const
Konwertuje parametr PropertyPathHandle na tablicę tagów kontekstu.
GetTag(PropertyPathHandle aHandle) const
uint64_t
Zwraca tag powiązany z uchwytem ścieżki.
GetVersionIntersection(SchemaVersionRange & aVersion, SchemaVersionRange & aIntersection) const
bool
Biorąc pod uwagę zakres wersji, ta funkcja sprawdza, czy istnieje zgodność między tym a schematem obsługiwanym przez schemat, który opiera się na tym mechanizmie schematu.
IsDictionary(PropertyPathHandle aHandle) const
bool
Zwraca wartość „true” (prawda), jeśli uchwyt jest słownikiem (a nie 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ę wewnątrz słownika (elementu słownika).
IsLeaf(PropertyPathHandle aPropertyHandle) const
bool
Zwraca wartość „prawda”, jeśli uchwyt odnosi się do węzła liścia 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 podrzędny innego nicka.
MapHandleToPath(PropertyPathHandle aHandle, nl::Weave::TLV::TLVWriter & aPathWriter) const
Przekonwertuj uchwyt ścieżki na ścieżkę TLV.
MapPathToHandle(nl::Weave::TLV::TLVReader & aPathReader, PropertyPathHandle & aHandle) const
Gdy czytnik znajduje się na poziomie elementu ścieżki WDM, odczytaj odpowiednie tagi i podaj uchwyt odpowiadającej mu ścieżki.
MapPathToHandle(const char *aPathString, PropertyPathHandle & aHandle) const
Mając na uwadze zapis ścieżki WDM, odczytaj odpowiednie tagi i podaj odpowiedni uchwyt ścieżki.
MatchesProfileId(uint32_t aProfileId) const
bool
Zwraca wartość „true” (prawda), jeśli przekazywane w parametrze profileId pasuje do zapisanego w schemacie.
RetrieveData(PropertyPathHandle aHandle, uint64_t aTagToWrite, nl::Weave::TLV::TLVWriter & aWriter, IGetDataDelegate *aDelegate, IDirtyPathCut *apDirtyPathCut) const
Biorąc pod uwagę 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 zapisującego 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
Biorąc pod uwagę uchwyt ścieżki i czytnik umiejscowiony na odpowiednim elemencie danych, przetwórz bufor danych wskazany przez czytnik i zapisz go w ujściu, wywołując wywołanie SetLeafData po każdym napotkaniu elementu danych liścia.

Zajęcia

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

Konstrukcja

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

Główna struktura schematu, w której znajdują się 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 

Biorąc pod uwagę 2 uchwyty właściwości, oblicz najniższy nick, który służy jako element nadrzędny obu z nich.

Dodatkowo zwracaj 2 gałęzie podrzędne zawierające każdy z 2 nicków (nawet jeśli są takie same).

Szczegóły
Zwracane wartości
PropertyPathHandle
Przenieś do elementu nadrzędnego 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 uchwytu.

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

GetDictionaryItemHandle

PropertyPathHandle GetDictionaryItemHandle(
  PropertyPathHandle aParentHandle,
  uint16_t aDictionaryKey
) const 

GetFirstChild

PropertyPathHandle GetFirstChild(
  PropertyPathHandle aParentHandle
) const 

Zwraca pierwszy nick podrzędny powiązany z danym elementem nadrzędnym.

Szczegóły
Zwracane wartości
PropertyPathHandle
Nick pierwszego dziecka.

GetHighestForwardVersion

SchemaVersion GetHighestForwardVersion(
  SchemaVersion aVersion
) const 

Uwzględniana jest podana wersja schematu danych, co spowoduje zwrócenie najwyższej zgodnej wersji schematu.

GetLowestCompatibleVersion

SchemaVersion GetLowestCompatibleVersion(
  SchemaVersion aVersion
) const 

Biorąc pod uwagę podaną wersję schematu danych, zwrócona zostanie minimalna zgodna wersja 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 

Przypisanie nicka istniejącego elementu podrzędnego zwraca następny nick powiązany z konkretnym elementem nadrzędnym.

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

GetParent

PropertyPathHandle GetParent(
  PropertyPathHandle aHandle
) const 

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

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

Szczegóły
Zwracane wartości
PropertyPathHandle
Uchwyt rodzica.

GetProfileId

uint32_t GetProfileId(
  void
) const 

Zwraca identyfikator profilu powiązanej cechy.

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 kontekstu.

Szczegóły
Parametry
[in] aCandidateHandle
Parametr PropertyPathHandle do przekonwertowania.
[in] aTags
Wskaźnik do tablicy wyjściowej.
[in] aTagsSize
Rozmiar tablicy aTags w liczbie elementów.
[out] aNumTags
Liczba tagów zapisanych w tagach aTag
Zwroty
WEAVE_NO_ERROR w przypadku powodzenia; WEAVE_ERROR_NO_MEMORY, jeśli tagi ATag są zbyt małe, aby zapisać 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, ta funkcja zwraca tag ProfileTag. W przeciwnym razie zwraca tagi kontekstu.

Szczegóły
Zwracane wartości
uint64_t

GetVersionIntersection

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

Biorąc pod uwagę zakres wersji, ta funkcja sprawdza, czy istnieje zgodność między tym a schematem obsługiwanym przez schemat, który opiera się na tym mechanizmie schematu.

W przypadku wystąpienia przecięcia funkcja zwróci wartość „true” (prawda) i zaktualizuje przekazany argument aIntersection, aby odzwierciedlić wyniki tego testu.

IsDictionary

bool IsDictionary(
  PropertyPathHandle aHandle
) const 

Zwraca wartość „true” (prawda), jeśli uchwyt 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ę wewnątrz słownika (elementu słownika).

Dane użytkownika przekazane w nicku (aDictionaryItemHandle) są aktualizowane tak, aby wskazywały najwyższy uchwyt elementu słownika w słowniku.

Szczegóły
Zwracane wartości
bool

IsLeaf

bool IsLeaf(
  PropertyPathHandle aPropertyHandle
) const 

Zwraca wartość „prawda”, jeśli uchwyt odnosi się do węzła liścia 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 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 

Przekonwertuj uchwyt ścieżki na ścieżkę TLV.

Szczegóły
Zwracane wartości
WEAVE_NO_ERROR
Na sukces.
other
Nie udało się przekonwertować nicka na ścieżkę TLV

MapPathToHandle

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

Gdy czytnik znajduje się na poziomie elementu ścieżki WDM, odczytaj odpowiednie tagi i podaj uchwyt odpowiadającej mu ścieżki.

Szczegóły
Zwracane wartości
WEAVE_NO_ERROR
Na sukces.
WEAVE_ERROR_TLV_TAG_NOT_FOUND
Jeśli z powodu niepoprawnej/nieprawidłowej ścieżki nie udało się znaleźć pasującego nicku.

MapPathToHandle

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

Mając na uwadze zapis ścieżki WDM, odczytaj odpowiednie tagi i podaj odpowiedni uchwyt ścieżki.

Ścieżka WDM jest reprezentowana jako ciąg znaków z zastosowaniem tych reguł:

  • tagi są oddzielone znakiem /
  • ścieżka MUSI zaczynać się od znaku / na początku i NIE MOŻE zawierać końcowego ukośnika
  • tagi liczbowe w ścieżce WDM MUSZĄ być zakodowane przy użyciu standardowej biblioteki C do kodowania ciągów całkowitych. Oznacza to, że kodowanie dziesiętne (domyślne) NIE MOŻE zawierać początkowego 0, kodowanie szesnastkowe MUSI zaczynać się od 0x, a kodowanie ósemkowe MUSI zawierać na początku 0.

Szczegóły
Zwracane wartości
WEAVE_NO_ERROR
Na sukces.
WEAVE_ERROR_TLV_TAG_NOT_FOUND
Jeśli nie udało się znaleźć pasującego nicka.
WEAVE_ERROR_INVALID_ARGUMENT
Jeśli ciąg znaków w ścieżce jest uszkodzony

MatchesProfileId

bool MatchesProfileId(
  uint32_t aProfileId
) const 

Zwraca wartość „true” (prawda), jeśli przekazywane w parametrze profileId pasuje do zapisanego 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 

Biorąc pod uwagę 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 zapisującego w sposób zgodny ze schematem.

Szczegóły
Zwracane wartości
WEAVE_NO_ERROR
Na sukces.
other
Podczas zapisywania danych wystąpiły błędy.

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 

Biorąc pod uwagę uchwyt ścieżki i czytnik umiejscowiony na odpowiednim elemencie danych, przetwórz bufor danych wskazany przez czytnik i zapisz go w ujściu, wywołując wywołanie SetLeafData po każdym napotkaniu elementu danych liścia.

Szczegóły
Zwracane wartości
WEAVE_NO_ERROR
Na sukces.
other
Podczas analizowania/przetwarzania danych wystąpiły błędy.