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

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

Mesin skema mengambil informasi skema yang terkait dengan karakteristik tertentu dan menyediakan fasilitas untuk mengurai dan menerjemahkannya ke dalam bentuk yang dapat digunakan oleh mesin WDM.

Ringkasan

Hal ini mencakup mengonversi dari PathHandles ke jalur WDM (dan sebaliknya), metode untuk menafsirkan/melakukan kueri skema itu sendiri, dan metode untuk membantu membaca/menulis data ke/dari TLV yang diberikan nama sebutan channel.

Skema itu sendiri disimpan dalam bentuk tabel, yang dijelaskan secara memadai untuk memungkinkan penguraian/komposisi generik jalur/data WDM untuk setiap karakteristik tertentu. Tabel ini yang akan menjadi output akhir dari 'code-gen' (Istilah itu sendiri agak menyesatkan mengingat tidak adanya kode yang dihasilkan :P)

Atribut statis publik

kHandleTableOffset = 2
const uint32_t

Atribut publik

mSchema
const Schema

Fungsi publik

FindLowestCommonAncestor(PropertyPathHandle aHandle1, PropertyPathHandle aHandle2, PropertyPathHandle *aHandle1BranchChild, PropertyPathHandle *aHandle2BranchChild) const
Dengan dua tuas properti, hitung tuas terendah yang berfungsi sebagai induk untuk kedua tuas ini.
GetChildHandle(PropertyPathHandle aParentHandle, uint8_t aContextTag) const
GetDepth(PropertyPathHandle aHandle) const
int32_t
Hitung kedalaman di hierarki skema untuk handle tertentu.
GetDictionaryItemHandle(PropertyPathHandle aParentHandle, uint16_t aDictionaryKey) const
GetFirstChild(PropertyPathHandle aParentHandle) const
Menampilkan handle turunan pertama yang terkait dengan induk tertentu.
GetHighestForwardVersion(SchemaVersion aVersion) const
SchemaVersion
Dengan mempertimbangkan versi skema data yang disediakan, opsi ini akan menampilkan versi skema paling tinggi yang kompatibel dengan versi baru.
GetLowestCompatibleVersion(SchemaVersion aVersion) const
SchemaVersion
Dengan mempertimbangkan versi skema data yang disediakan, versi ini akan menampilkan versi skema minimum yang kompatibel.
GetMap(PropertyPathHandle aHandle) const
const PropertyInfo *
Menampilkan pointer ke struktur PropertyInfo yang menjelaskan handle jalur tertentu.
GetMaxVersion() const
SchemaVersion
GetMinVersion() const
SchemaVersion
GetNextChild(PropertyPathHandle aParentId, PropertyPathHandle aChildHandle) const
Mengingat handle untuk turunan yang ada, menampilkan handle turunan berikutnya yang terkait dengan induk tertentu.
GetParent(PropertyPathHandle aHandle) const
Menampilkan handle induk dari handle jalur turunan tertentu.
GetProfileId(void) const
uint32_t
Menampilkan ID profil dari karakteristik terkait.
GetRelativePathTags(const PropertyPathHandle aCandidateHandle, uint64_t *aTags, const uint32_t aTagsSize, uint32_t & aNumTags) const
Mengonversi PropertyPathHandle ke array tag konteks.
GetTag(PropertyPathHandle aHandle) const
uint64_t
Menampilkan tag yang terkait dengan tuas jalur.
GetVersionIntersection(SchemaVersionRange & aVersion, SchemaVersionRange & aIntersection) const
bool
Dengan mempertimbangkan rentang versi, fungsi ini memeriksa apakah ada perpotongan kompatibilitas antara versi tersebut dan apa yang didukung oleh skema yang mendukung mesin skema ini.
IsDictionary(PropertyPathHandle aHandle) const
bool
Menampilkan true (benar) jika handle adalah kamus (dan bukan dalam kamus - lihat metode di bawah).
IsEphemeral(PropertyPathHandle aHandle) const
bool
IsInDictionary(PropertyPathHandle aHandle, PropertyPathHandle & aDictionaryItemHandle) const
bool
Menampilkan true (benar) jika handle berada di dalam kamus (elemen kamus).
IsLeaf(PropertyPathHandle aPropertyHandle) const
bool
Menampilkan true (benar) jika handle merujuk pada node daun di hierarki skema.
IsNullable(PropertyPathHandle aHandle) const
bool
IsOptional(PropertyPathHandle aHandle) const
bool
IsParent(PropertyPathHandle aChildHandle, PropertyPathHandle aParentHandle) const
bool
Memeriksa apakah nama sebutan channel yang diberikan adalah turunan dari nama sebutan channel lain.
MapHandleToPath(PropertyPathHandle aHandle, nl::Weave::TLV::TLVWriter & aPathWriter) const
Konversikan handle jalur ke jalur TLV.
MapPathToHandle(nl::Weave::TLV::TLVReader & aPathReader, PropertyPathHandle & aHandle) const
Dengan pembaca yang diposisikan di root elemen jalur WDM, bacakan tag yang relevan dan berikan handle jalur yang setara.
MapPathToHandle(const char *aPathString, PropertyPathHandle & aHandle) const
Mengingat representasi string dari jalur WDM, membaca tag yang relevan dan memberikan handle jalur yang setara.
MatchesProfileId(uint32_t aProfileId) const
bool
Menampilkan true (benar) jika ID profil yang diteruskan cocok dengan yang tersimpan dalam skema.
RetrieveData(PropertyPathHandle aHandle, uint64_t aTagToWrite, nl::Weave::TLV::TLVWriter & aWriter, IGetDataDelegate *aDelegate, IDirtyPathCut *apDirtyPathCut) const
Dengan mempertimbangkan handle jalur dan posisi penulis pada elemen data yang sesuai, ambil data leaf dari sumber dan tuliskan ke dalam buffer yang ditunjuk oleh penulis dengan cara yang sesuai dengan skema.
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
Dengan mempertimbangkan handle jalur dan pembaca yang diposisikan pada elemen data yang sesuai, proses buffer data yang ditunjuk oleh pembaca dan simpan ke dalam sink dengan memanggil panggilan SetLeafData setiap kali item data leaf ditemukan.

Class

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

Struct

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

Struktur skema utama yang menampung informasi skema.

Atribut statis publik

kHandleTableOffset

const uint32_t kHandleTableOffset = 2

Atribut publik

mSchema

const Schema mSchema

Fungsi publik

FindLowestCommonAncestor

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

Dengan dua tuas properti, hitung tuas terendah yang berfungsi sebagai induk untuk kedua tuas ini.

Selain itu, tampilkan dua cabang turunan yang berisi masing-masing dari kedua tuas (meskipun jika sama).

Detail
Nilai yang Ditampilkan
PropertyPathHandle
Tangani ke induk terendah.

GetChildHandle

PropertyPathHandle GetChildHandle(
  PropertyPathHandle aParentHandle,
  uint8_t aContextTag
) const 

GetDepth

int32_t GetDepth(
  PropertyPathHandle aHandle
) const 

Hitung kedalaman di hierarki skema untuk handle tertentu.

Detail
Nilai yang Ditampilkan
int32_t
Kedalaman di pohon

GetDictionaryItemHandle

PropertyPathHandle GetDictionaryItemHandle(
  PropertyPathHandle aParentHandle,
  uint16_t aDictionaryKey
) const 

GetFirstChild

PropertyPathHandle GetFirstChild(
  PropertyPathHandle aParentHandle
) const 

Menampilkan handle turunan pertama yang terkait dengan induk tertentu.

Detail
Nilai yang Ditampilkan
PropertyPathHandle
Nama sebutan channel anak pertama.

GetHighestForwardVersion

SchemaVersion GetHighestForwardVersion(
  SchemaVersion aVersion
) const 

Dengan mempertimbangkan versi skema data yang disediakan, opsi ini akan menampilkan versi skema paling tinggi yang kompatibel dengan versi baru.

GetLowestCompatibleVersion

SchemaVersion GetLowestCompatibleVersion(
  SchemaVersion aVersion
) const 

Dengan mempertimbangkan versi skema data yang disediakan, versi ini akan menampilkan versi skema minimum yang kompatibel.

GetMap

const PropertyInfo * GetMap(
  PropertyPathHandle aHandle
) const 

Menampilkan pointer ke struktur PropertyInfo yang menjelaskan handle jalur tertentu.

Detail
Nilai yang Ditampilkan
PropertyInfo*

GetMaxVersion

SchemaVersion GetMaxVersion() const 

GetMinVersion

SchemaVersion GetMinVersion() const 

GetNextChild

PropertyPathHandle GetNextChild(
  PropertyPathHandle aParentId,
  PropertyPathHandle aChildHandle
) const 

Dengan mempertimbangkan handle untuk turunan yang ada, menampilkan handle turunan berikutnya yang terkait dengan induk tertentu.

Detail
Nilai yang Ditampilkan
PropertyPathHandle
Nama sebutan channel turunan berikutnya.

GetParent

PropertyPathHandle GetParent(
  PropertyPathHandle aHandle
) const 

Menampilkan handle induk dari handle jalur turunan tertentu.

Kunci kamus di nama sebutan channel dipertahankan jika nama sebutan channel induk juga merupakan elemen kamus.

Detail
Nilai yang Ditampilkan
PropertyPathHandle
Nama sebutan channel orang tua.

GetProfileId

uint32_t GetProfileId(
  void
) const 

Menampilkan ID profil dari karakteristik terkait.

Detail
Nilai yang Ditampilkan
Trait
id profil

GetRelativePathTags

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

Mengonversi PropertyPathHandle ke array tag konteks.

Detail
Parameter
[in] aCandidateHandle
PropertyPathHandle yang akan dikonversi.
[in] aTags
Pointer ke array output.
[in] aTagsSize
Ukuran array aTags, dalam jumlah elemen.
[out] aNumTags
Jumlah tag yang ditulis ke Tag
Hasil
WEAVE_NO_ERROR jika berhasil; WEAVE_ERROR_NO_MEMORY jika Tag terlalu kecil untuk menyimpan jalur lengkap.

GetTag

uint64_t GetTag(
  PropertyPathHandle aHandle
) const 

Menampilkan tag yang terkait dengan tuas jalur.

Jika adalah elemen kamus, fungsi ini akan menampilkan ProfileTag. Jika tidak, sistem akan menampilkan tag konteks.

Detail
Nilai yang Ditampilkan
uint64_t

GetVersionIntersection

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

Dengan mempertimbangkan rentang versi, fungsi ini memeriksa apakah ada perpotongan kompatibilitas antara versi tersebut dan apa yang didukung oleh skema yang mendukung mesin skema ini.

Jika ada persimpangan, fungsi akan menampilkan benar dan memperbarui argumen aIntersection yang diteruskan untuk mencerminkan hasil pengujian persimpangan tersebut.

IsDictionary

bool IsDictionary(
  PropertyPathHandle aHandle
) const 

Menampilkan true (benar) jika handle adalah kamus (dan bukan dalam kamus - lihat metode di bawah).

Detail
Nilai yang Ditampilkan
bool

IsEphemeral

bool IsEphemeral(
  PropertyPathHandle aHandle
) const 

IsInDictionary

bool IsInDictionary(
  PropertyPathHandle aHandle,
  PropertyPathHandle & aDictionaryItemHandle
) const 

Menampilkan true (benar) jika handle berada di dalam kamus (elemen kamus).

Pengguna yang diteruskan ke nama sebutan channel (aDictionaryItemHandle) akan diperbarui agar mengarah ke nama sebutan channel kamus paling atas dalam kamus.

Detail
Nilai yang Ditampilkan
bool

IsLeaf

bool IsLeaf(
  PropertyPathHandle aPropertyHandle
) const 

Menampilkan true (benar) jika handle merujuk pada node daun di hierarki skema.

Detail
Nilai yang Ditampilkan
bool

IsNullable

bool IsNullable(
  PropertyPathHandle aHandle
) const 

IsOptional

bool IsOptional(
  PropertyPathHandle aHandle
) const 

IsParent

bool IsParent(
  PropertyPathHandle aChildHandle,
  PropertyPathHandle aParentHandle
) const 

Memeriksa apakah nama sebutan channel yang diberikan adalah turunan dari nama sebutan channel lain.

Ini bisa berupa induk tidak langsung.

Detail
Nilai yang Ditampilkan
bool

MapHandleToPath

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

Konversikan handle jalur ke jalur TLV.

Detail
Nilai yang Ditampilkan
WEAVE_NO_ERROR
Berhasil.
other
Tidak dapat mengonversi nama sebutan channel menjadi jalur TLV

MapPathToHandle

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

Dengan pembaca yang diposisikan di root elemen jalur WDM, bacakan tag yang relevan dan berikan handle jalur yang setara.

Detail
Nilai yang Ditampilkan
WEAVE_NO_ERROR
Berhasil.
WEAVE_ERROR_TLV_TAG_NOT_FOUND
Jika nama sebutan channel yang cocok tidak dapat ditemukan karena format jalur salah/salah ditentukan.

MapPathToHandle

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

Mengingat representasi string dari jalur WDM, membaca tag yang relevan dan memberikan handle jalur yang setara.

Jalur WDM direpresentasikan sebagai string menggunakan aturan berikut:

  • tag dipisahkan dengan /
  • jalur HARUS dimulai dengan / di awal dan TIDAK BOLEH berisi garis miring
  • tag numerik di jalur WDM HARUS dienkode menggunakan library C standar untuk encoding bilangan bulat ke string, yaitu encoding desimal (default) TIDAK BOLEH berisi awalan 0, encoding heksadesimal HARUS dimulai dengan 0x, dan encoding oktal HARUS berisi awal 0.

Detail
Nilai yang Ditampilkan
WEAVE_NO_ERROR
Berhasil.
WEAVE_ERROR_TLV_TAG_NOT_FOUND
Jika nama sebutan channel yang cocok tidak dapat ditemukan.
WEAVE_ERROR_INVALID_ARGUMENT
Jika format string jalur salah

MatchesProfileId

bool MatchesProfileId(
  uint32_t aProfileId
) const 

Menampilkan true (benar) jika ID profil yang diteruskan cocok dengan yang tersimpan dalam skema.

Detail
Nilai yang Ditampilkan
bool

RetrieveData

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

Dengan mempertimbangkan handle jalur dan posisi penulis pada elemen data yang sesuai, ambil data leaf dari sumber dan tuliskan ke dalam buffer yang ditunjuk oleh penulis dengan cara yang sesuai dengan skema.

Detail
Nilai yang Ditampilkan
WEAVE_NO_ERROR
Berhasil.
other
Terjadi error saat menulis data.

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 

Dengan mempertimbangkan handle jalur dan pembaca yang diposisikan pada elemen data yang sesuai, proses buffer data yang ditunjuk oleh pembaca dan simpan ke dalam sink dengan memanggil panggilan SetLeafData setiap kali item data leaf ditemukan.

Detail
Nilai yang Ditampilkan
WEAVE_NO_ERROR
Berhasil.
other
Terjadi error saat menguraikan/memproses data.