nl:: Weave:: Profiles:: DataManagement_Current:: TraitSchemaEngine
#include <src/lib/profiles/data-management/Current/TraitData.h>
Mechanizm schematu wykorzystuje informacje o schemacie powiązane z konkretną cechą, a następnie udostępnia zasoby do przeanalizowania i przekształcenia ich w formę nadającą się przez maszyny WDM.
Podsumowanie
Obejmuje to konwertowanie z PathHandles na ścieżki WDM (i odwrotnie), metody interpretacji/wysyłania zapytań do samego schematu oraz metody ułatwiające odczyt i zapis danych do i z TLV z określonym nickiem.
Sam schemat jest przechowywany w formie tabelarycznej z wystarczającym opisem, aby umożliwić ogólną analizę/kompozycję ścieżek lub danych WDM dla dowolnej cechy. Te tabele to ostateczne dane wyjściowe kodu „code-gen” (Sam termin może być mylący, ponieważ nie ma żadnego 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 nicka właściwości, oblicz najniższy uchwyt, który jest nadrzędny dla obu tych uchwytów.
|
GetChildHandle(PropertyPathHandle aParentHandle, uint8_t aContextTag) const
|
|
GetDepth(PropertyPathHandle aHandle) const
|
int32_t
Oblicz głębokość w drzewie schematu dla danego nicka.
|
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
Biorąc pod uwagę podaną wersję schematu danych, zwróci ona najwyżej przekazywaną zgodną wersję schematu.
|
GetLowestCompatibleVersion(SchemaVersion aVersion) const
|
SchemaVersion
Dla podanej wersji schematu danych ta funkcja zwróci minimalną zgodną wersję schematu.
|
GetMap(PropertyPathHandle aHandle) const
|
const PropertyInfo *
Zwraca wskaźnik do struktury PropertyInfo opisującej określony uchwyt ścieżki.
|
GetMaxVersion() const
|
SchemaVersion
|
GetMinVersion() const
|
SchemaVersion
|
GetNextChild(PropertyPathHandle aParentId, PropertyPathHandle aChildHandle) const
|
Zwraca kolejny nick dla istniejącego elementu podrzędnego, który jest powiązany z danym 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 kontekstowych.
|
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 występuje przecięcie zgodności między tym a formatem obsługiwanym przez schemat, który obsługuje ten mechanizm schematu.
|
IsDictionary(PropertyPathHandle aHandle) const
|
bool
Zwraca wartość „prawda”, jeśli nick 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 nick znajduje się w słowniku (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 wobec 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
|
Biorąc pod uwagę, że czytnik znajduje się w katalogu głównym elementu ścieżki WDM, odczytaj odpowiednie tagi i podaj odpowiedni uchwyt ścieżki.
|
MapPathToHandle(const char *aPathString, PropertyPathHandle & aHandle) const
|
Biorąc pod uwagę, że ścieżka WDM jest reprezentowana w formie ciągu znaków, odczytaj odpowiednie tagi i podaj odpowiedni uchwyt ścieżki.
|
MatchesProfileId(uint32_t aProfileId) const
|
bool
Zwraca wartość „true” (prawda), jeśli podany w polu profileId jest zgodny z identyfikatorem 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
|
Mając uchwyt ścieżki i czytnik ustawiony na odpowiednim elemencie danych, przetwórz bufor danych wskazywany przez czytnik i zapisz go w ujściu, wywołując wywołanie SetLeafData za każdym razem, gdy zostanie napotkany element danych w postaci liścia.
|
Zajęcia |
|
---|---|
nl:: |
|
nl:: |
Struktura |
|
---|---|
nl:: |
|
nl:: |
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
Biorąc pod uwagę 2 nicka właściwości, oblicz najniższy uchwyt, który jest nadrzędny dla obu tych uchwytów.
Dodatkowo zwróć 2 gałęzie podrzędne, które zawierają 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 nicka.
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
Biorąc pod uwagę podaną wersję schematu danych, zwróci ona najwyżej przekazywaną zgodną wersję schematu.
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 określony uchwyt ścieżki.
Szczegóły | |||
---|---|---|---|
Zwracane wartości |
|
GetMaxVersion
SchemaVersion GetMaxVersion() const
GetMinVersion
SchemaVersion GetMinVersion() const
GetNextChild
PropertyPathHandle GetNextChild( PropertyPathHandle aParentId, PropertyPathHandle aChildHandle ) const
Zwraca kolejny nick dla istniejącego elementu podrzędnego, który jest powiązany z danym 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, gdy nick 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 kontekstowych.
Szczegóły | |||||||||
---|---|---|---|---|---|---|---|---|---|
Parametry |
|
||||||||
Zwroty |
WEAVE_NO_ERROR w przypadku powodzenia; WEAVE_ERROR_NO_MEMORY, jeśli tagi 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.
W przypadku elementu słownika ta funkcja zwraca parametr 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 występuje przecięcie zgodności między tym a formatem obsługiwanym przez schemat, który obsługuje ten mechanizm schematu.
Jeśli występuje przecięcie, funkcja zwróci wartość „true” i zaktualizuje przekazany argument aIntersection, aby odzwierciedlić wyniki tego testu.
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 |
|
IsEphemeral
bool IsEphemeral( PropertyPathHandle aHandle ) const
IsInDictionary
bool IsInDictionary( PropertyPathHandle aHandle, PropertyPathHandle & aDictionaryItemHandle ) const
Zwraca wartość „prawda”, jeśli nick znajduje się w słowniku (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 |
|
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 wobec innego nicka.
Może to być pośredni element nadrzędny.
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
Biorąc pod uwagę, że czytnik znajduje się w katalogu głównym elementu ścieżki WDM, odczytaj odpowiednie tagi i podaj odpowiedni uchwyt ścieżki.
Szczegóły | |||||
---|---|---|---|---|---|
Zwracane wartości |
|
MapPathToHandle
WEAVE_ERROR MapPathToHandle( const char *aPathString, PropertyPathHandle & aHandle ) const
Biorąc pod uwagę, że ścieżka WDM jest reprezentowana w formie ciągu znaków, odczytaj odpowiednie tagi i podaj odpowiedni uchwyt ścieżki.
Ścieżka WDM jest reprezentowana jako ciąg znaków przy użyciu następujących reguł:
- tagi są rozdzielone znakiem
/
- ścieżka MUSI zaczynać się od znaku
/
i NIE MOŻE zawierać ukośnika końcowego - tagi numeryczne w ścieżce WDM MUSZĄ być kodowane przy użyciu standardowej biblioteki C do kodowania liczb całkowitych na ciąg znaków. Oznacza to, że kodowanie dziesiętne (domyślnie) NIE MOŻE zawierać początkowej cyfry 0, kodowanie szesnastkowe MUSI zaczynać się od
0x
, a kodowanie ósemkowe MUSI zawierać początkowy znak0
.
Szczegóły | |||||||
---|---|---|---|---|---|---|---|
Zwracane wartości |
|
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 |
|
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 |
|
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
Mając uchwyt ścieżki i czytnik ustawiony na odpowiednim elemencie danych, przetwórz bufor danych wskazywany przez czytnik i zapisz go w ujściu, wywołując wywołanie SetLeafData za każdym razem, gdy zostanie napotkany element danych w postaci liścia.
Szczegóły | |||||
---|---|---|---|---|---|
Zwracane wartości |
|