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:: |
|
nl:: |
Konstrukcja |
|
---|---|
nl:: |
|
nl:: |
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 |
|
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 |
|
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 |
|
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 |
|
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 |
|
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 |
|
GetProfileId
uint32_t GetProfileId( void ) const
Zwraca identyfikator profilu powiązanej cechy.
Szczegóły | |||
---|---|---|---|
Zwracane wartości |
|
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 |
|
||||||||
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 |
|
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 |
|
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 |
|
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 |
|
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 |
|
MapHandleToPath
WEAVE_ERROR MapHandleToPath( PropertyPathHandle aHandle, nl::Weave::TLV::TLVWriter & aPathWriter ) const
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 |
|
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ątku0
.
Szczegóły | |||||||
---|---|---|---|---|---|---|---|
Zwracane wartości |
|
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 |
|
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 |
|
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 |
|