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

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

เครื่องมือสคีมาจะใช้ข้อมูลสคีมาที่เชื่อมโยงกับลักษณะหนึ่งๆ และให้เครื่องมือในการแยกวิเคราะห์และแปลข้อมูลนั้นให้เป็นรูปแบบที่เครื่อง WDM ใช้งานได้

สรุป

ซึ่งรวมถึงการเปลี่ยนจาก PathHandle เป็นเส้นทาง WDM (และในทางกลับกัน) วิธีการตีความ/ค้นหาสคีมาเอง และวิธีการช่วยอ่าน/เขียนข้อมูลไปยัง/จาก TLV จากแฮนเดิลที่ได้รับ

สคีมาจะจัดเก็บในรูปแบบตารางที่อธิบายไว้อย่างเพียงพอเพื่อให้สามารถแยกวิเคราะห์/จัดองค์ประกอบเส้นทาง/ข้อมูล WDM ทั่วไปสำหรับลักษณะหนึ่งๆ ได้ ตารางเหล่านี้จะเป็นเอาต์พุตสุดท้ายของ "code-gen" (คํานี้อาจทําให้เข้าใจผิดได้เนื่องจากไม่มีโค้ดที่สร้างขึ้น :P)

แอตทริบิวต์แบบคงที่แบบสาธารณะ

kHandleTableOffset = 2
const uint32_t

แอตทริบิวต์สาธารณะ

mSchema
const Schema

ฟังก์ชันสาธารณะ

FindLowestCommonAncestor(PropertyPathHandle aHandle1, PropertyPathHandle aHandle2, PropertyPathHandle *aHandle1BranchChild, PropertyPathHandle *aHandle2BranchChild) const
เมื่อทราบแฮนเดิลพร็อพเพอร์ตี้ 2 รายการ ให้คํานวณแฮนเดิลที่ต่ำที่สุดซึ่งทำหน้าที่เป็นพร็อพเพอร์ตี้หลักของแฮนเดิลทั้ง 2 รายการนี้
GetChildHandle(PropertyPathHandle aParentHandle, uint8_t aContextTag) const
GetDepth(PropertyPathHandle aHandle) const
int32_t
คํานวณความลึกในลําดับชั้นสคีมาสําหรับแฮนเดิลที่ระบุ
GetDictionaryItemHandle(PropertyPathHandle aParentHandle, uint16_t aDictionaryKey) const
GetFirstChild(PropertyPathHandle aParentHandle) const
แสดงผลแฮนเดิลย่อยรายการแรกที่เชื่อมโยงกับรายการหลัก
GetHighestForwardVersion(SchemaVersion aVersion) const
SchemaVersion
เมื่อระบุเวอร์ชันสคีมาข้อมูลแล้ว การดำเนินการนี้จะแสดงผลเวอร์ชันสคีมาที่เข้ากันได้แบบไปข้างหน้าสูงสุด
GetLowestCompatibleVersion(SchemaVersion aVersion) const
SchemaVersion
เมื่อระบุเวอร์ชันสคีมาข้อมูลแล้ว การดำเนินการนี้จะแสดงผลเวอร์ชันสคีมาที่เข้ากันได้ขั้นต่ำ
GetMap(PropertyPathHandle aHandle) const
const PropertyInfo *
แสดงผลพอยน์เตอร์ไปยังโครงสร้าง PropertyInfo ที่อธิบายแฮนเดิลเส้นทางที่เฉพาะเจาะจง
GetMaxVersion() const
SchemaVersion
GetMinVersion() const
SchemaVersion
GetNextChild(PropertyPathHandle aParentId, PropertyPathHandle aChildHandle) const
เมื่อระบุแฮนเดิลของรายการย่อยที่มีอยู่ ระบบจะแสดงแฮนเดิลรายการย่อยรายการถัดไปที่เชื่อมโยงกับรายการหลักรายการหนึ่งๆ
GetParent(PropertyPathHandle aHandle) const
แสดงผลแฮนเดิลระดับบนสุดของแฮนเดิลเส้นทางย่อยที่ระบุ
GetProfileId(void) const
uint32_t
แสดงรหัสโปรไฟล์ของคุณลักษณะที่เชื่อมโยง
GetRelativePathTags(const PropertyPathHandle aCandidateHandle, uint64_t *aTags, const uint32_t aTagsSize, uint32_t & aNumTags) const
แปลง PropertyPathHandle เป็นอาร์เรย์ของแท็กบริบท
GetTag(PropertyPathHandle aHandle) const
uint64_t
แสดงผลแท็กที่เชื่อมโยงกับแฮนเดิลเส้นทาง
GetVersionIntersection(SchemaVersionRange & aVersion, SchemaVersionRange & aIntersection) const
bool
เมื่อระบุช่วงเวอร์ชันแล้ว ฟังก์ชันนี้จะตรวจสอบว่าเวอร์ชันดังกล่าวเข้ากันได้กับสคีมาที่ใช้สนับสนุนเครื่องมือสคีมานี้หรือไม่
IsDictionary(PropertyPathHandle aHandle) const
bool
แสดงผลเป็น "จริง" หากแฮนเดิลเป็นพจนานุกรม (และไม่ได้อยู่ในพจนานุกรม - ดูเมธอดด้านล่าง)
IsEphemeral(PropertyPathHandle aHandle) const
bool
IsInDictionary(PropertyPathHandle aHandle, PropertyPathHandle & aDictionaryItemHandle) const
bool
แสดงผลเป็น "จริง" หากแฮนเดิลอยู่ภายในพจนานุกรม (องค์ประกอบพจนานุกรม)
IsLeaf(PropertyPathHandle aPropertyHandle) const
bool
แสดงผลเป็น "จริง" หากแฮนเดิลอ้างอิงถึงโหนดใบในต้นไม้สคีมา
IsNullable(PropertyPathHandle aHandle) const
bool
IsOptional(PropertyPathHandle aHandle) const
bool
IsParent(PropertyPathHandle aChildHandle, PropertyPathHandle aParentHandle) const
bool
ตรวจสอบว่าแฮนเดิลหนึ่งๆ เป็นแฮนเดิลย่อยของแฮนเดิลอื่นหรือไม่
MapHandleToPath(PropertyPathHandle aHandle, nl::Weave::TLV::TLVWriter & aPathWriter) const
แปลงแฮนเดิลเส้นทางเป็นเส้นทาง TLV
MapPathToHandle(nl::Weave::TLV::TLVReader & aPathReader, PropertyPathHandle & aHandle) const
เมื่ออ่านที่รูทขององค์ประกอบเส้นทาง WDM ให้อ่านแท็กที่เกี่ยวข้องและระบุแฮนเดิลเส้นทางที่เทียบเท่า
MapPathToHandle(const char *aPathString, PropertyPathHandle & aHandle) const
เมื่อพิจารณาการแสดงสตริงของเส้นทาง WDM ให้อ่านแท็กที่เกี่ยวข้องและระบุแฮนเดิลเส้นทางที่เทียบเท่า
MatchesProfileId(uint32_t aProfileId) const
bool
แสดงค่า "จริง" หาก profileId ที่ส่งตรงกับที่เก็บไว้ในสคีมา
RetrieveData(PropertyPathHandle aHandle, uint64_t aTagToWrite, nl::Weave::TLV::TLVWriter & aWriter, IGetDataDelegate *aDelegate, IDirtyPathCut *apDirtyPathCut) const
เมื่อได้รับแฮนเดิลเส้นทางและตำแหน่งผู้เขียนในองค์ประกอบข้อมูลที่เกี่ยวข้อง ให้ดึงข้อมูลใบไม้จากแหล่งที่มาและเขียนลงในบัฟเฟอร์ที่ผู้เขียนชี้ไปในรูปแบบที่เป็นไปตามสคีมา
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
เมื่อได้รับแฮนเดิลเส้นทางและโปรแกรมอ่านที่วางอยู่ตรงองค์ประกอบข้อมูลที่เกี่ยวข้อง ให้ประมวลผลบัฟเฟอร์ข้อมูลที่โปรแกรมอ่านชี้ไปและจัดเก็บไว้ในซิงค์โดยการเรียกใช้การเรียก SetLeafData เมื่อใดก็ตามที่พบรายการข้อมูลระดับล่าง

ชั้นเรียน

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

โครงสร้าง

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

โครงสร้างสคีมาหลักที่มีข้อมูลสคีมา

แอตทริบิวต์แบบคงที่แบบสาธารณะ

kHandleTableOffset

const uint32_t kHandleTableOffset = 2

แอตทริบิวต์สาธารณะ

mSchema

const Schema mSchema

ฟังก์ชันสาธารณะ

FindLowestCommonAncestor

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

เมื่อทราบแฮนเดิลพร็อพเพอร์ตี้ 2 รายการ ให้คํานวณแฮนเดิลที่ต่ำที่สุดซึ่งทำหน้าที่เป็นพร็อพเพอร์ตี้หลักของแฮนเดิลทั้ง 2 รายการนี้

นอกจากนี้ ให้แสดงผลสาขาย่อย 2 สาขาที่มีแฮนเดิลทั้ง 2 อัน (แม้ว่าจะเหมือนกันก็ตาม)

รายละเอียด
ผลลัพธ์
PropertyPathHandle
แฮนเดิลของรายการหลักที่ต่ำที่สุด

GetChildHandle

PropertyPathHandle GetChildHandle(
  PropertyPathHandle aParentHandle,
  uint8_t aContextTag
) const 

GetDepth

int32_t GetDepth(
  PropertyPathHandle aHandle
) const 

คํานวณความลึกในลําดับชั้นสคีมาสําหรับแฮนเดิลที่ระบุ

รายละเอียด
ค่าที่แสดงผล
int32_t
ความลึกในแผนผัง

GetDictionaryItemHandle

PropertyPathHandle GetDictionaryItemHandle(
  PropertyPathHandle aParentHandle,
  uint16_t aDictionaryKey
) const 

GetFirstChild

PropertyPathHandle GetFirstChild(
  PropertyPathHandle aParentHandle
) const 

แสดงผลแฮนเดิลย่อยรายการแรกที่เชื่อมโยงกับรายการหลัก

รายละเอียด
ค่าที่แสดงผล
PropertyPathHandle
แฮนเดิลของรายการย่อยรายการแรก

GetHighestForwardVersion

SchemaVersion GetHighestForwardVersion(
  SchemaVersion aVersion
) const 

เมื่อระบุเวอร์ชันสคีมาข้อมูลแล้ว การดำเนินการนี้จะแสดงผลเวอร์ชันสคีมาที่เข้ากันได้แบบไปข้างหน้าสูงสุด

GetLowestCompatibleVersion

SchemaVersion GetLowestCompatibleVersion(
  SchemaVersion aVersion
) const 

เมื่อระบุเวอร์ชันสคีมาข้อมูลแล้ว การดำเนินการนี้จะแสดงผลเวอร์ชันสคีมาที่เข้ากันได้ขั้นต่ำ

GetMap

const PropertyInfo * GetMap(
  PropertyPathHandle aHandle
) const 

แสดงผลพอยน์เตอร์ไปยังโครงสร้าง PropertyInfo ที่อธิบายแฮนเดิลเส้นทางที่เฉพาะเจาะจง

รายละเอียด
ค่าที่แสดงผล
PropertyInfo*

GetMaxVersion

SchemaVersion GetMaxVersion() const 

GetMinVersion

SchemaVersion GetMinVersion() const 

GetNextChild

PropertyPathHandle GetNextChild(
  PropertyPathHandle aParentId,
  PropertyPathHandle aChildHandle
) const 

เมื่อระบุแฮนเดิลของรายการย่อยที่มีอยู่ ระบบจะแสดงแฮนเดิลของรายการย่อยรายการถัดไปที่เชื่อมโยงกับรายการหลักรายการหนึ่งๆ

รายละเอียด
ค่าที่แสดงผล
PropertyPathHandle
แฮนเดิลของบุตรหลานคนถัดไป

GetParent

PropertyPathHandle GetParent(
  PropertyPathHandle aHandle
) const 

แสดงผลแฮนเดิลหลักของแฮนเดิลเส้นทางย่อยที่ระบุ

ระบบจะเก็บคีย์ของพจนานุกรมในตัวแฮนเดิลไว้ในกรณีที่ตัวแฮนเดิลหลักเป็นองค์ประกอบของพจนานุกรมด้วย

รายละเอียด
ค่าที่แสดงผล
PropertyPathHandle
แฮนเดิลของผู้ปกครอง

GetProfileId

uint32_t GetProfileId(
  void
) const 

แสดงรหัสโปรไฟล์ของลักษณะที่เกี่ยวข้อง

รายละเอียด
ค่าที่แสดงผล
Trait
รหัสโปรไฟล์

GetRelativePathTags

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

แปลง PropertyPathHandle เป็นอาร์เรย์ของแท็กบริบท

รายละเอียด
พารามิเตอร์
[in] aCandidateHandle
PropertyPathHandle ที่จะแปลง
[in] aTags
ตัวชี้ไปยังอาร์เรย์เอาต์พุต
[in] aTagsSize
ขนาดของอาร์เรย์ aTags ในจำนวนองค์ประกอบ
[out] aNumTags
จํานวนแท็กที่เขียนไปยัง aTags
การคืนสินค้า
WEAVE_NO_ERROR ในกรณีที่สําเร็จ WEAVE_ERROR_NO_MEMORY หาก aTags มีขนาดเล็กเกินกว่าจะจัดเก็บเส้นทางแบบเต็มได้

GetTag

uint64_t GetTag(
  PropertyPathHandle aHandle
) const 

แสดงผลแท็กที่เชื่อมโยงกับแฮนเดิลเส้นทาง

หากเป็นองค์ประกอบของพจนานุกรม ฟังก์ชันนี้จะแสดงผล ProfileTag ไม่เช่นนั้น ระบบจะแสดงแท็กบริบท

รายละเอียด
ค่าที่แสดงผล
uint64_t

GetVersionIntersection

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

เมื่อระบุช่วงเวอร์ชันแล้ว ฟังก์ชันนี้จะตรวจสอบว่าเวอร์ชันดังกล่าวเข้ากันได้กับสคีมาที่ใช้สนับสนุนเครื่องมือสคีมานี้หรือไม่

หากมีการตัดกัน ฟังก์ชันจะแสดงผลเป็น "จริง" และอัปเดตอาร์กิวเมนต์ aIntersection ที่ส่งผ่านเพื่อแสดงผลลัพธ์ของการทดสอบการตัดกันนั้น

IsDictionary

bool IsDictionary(
  PropertyPathHandle aHandle
) const 

แสดงผลเป็น "จริง" หากแฮนเดิลเป็นพจนานุกรม (และไม่ได้อยู่ในพจนานุกรม - ดูเมธอดด้านล่าง)

รายละเอียด
ค่าที่แสดงผล
bool

IsEphemeral

bool IsEphemeral(
  PropertyPathHandle aHandle
) const 

IsInDictionary

bool IsInDictionary(
  PropertyPathHandle aHandle,
  PropertyPathHandle & aDictionaryItemHandle
) const 

แสดงผลเป็น "จริง" หากแฮนเดิลอยู่ภายในพจนานุกรม (องค์ประกอบพจนานุกรม)

ระบบจะอัปเดตผู้ใช้ที่ส่งผ่านแฮนเดิล (aDictionaryItemHandle) ให้ชี้ไปยังแฮนเดิลองค์ประกอบพจนานุกรมที่อยู่บนสุดภายในพจนานุกรม

รายละเอียด
ค่าที่แสดงผล
bool

IsLeaf

bool IsLeaf(
  PropertyPathHandle aPropertyHandle
) const 

แสดงผลเป็น "จริง" หากแฮนเดิลอ้างอิงถึงโหนด Leaf ในแผนผังสคีมา

รายละเอียด
ค่าที่แสดงผล
bool

IsNullable

bool IsNullable(
  PropertyPathHandle aHandle
) const 

IsOptional

bool IsOptional(
  PropertyPathHandle aHandle
) const 

IsParent

bool IsParent(
  PropertyPathHandle aChildHandle,
  PropertyPathHandle aParentHandle
) const 

ตรวจสอบว่าแฮนเดิลหนึ่งๆ เป็นแฮนเดิลย่อยของแฮนเดิลอื่นหรือไม่

ซึ่งอาจเป็นผู้ปกครองโดยอ้อม

รายละเอียด
ผลลัพธ์
bool

MapHandleToPath

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

แปลงแฮนเดิลเส้นทางเป็นเส้นทาง TLV

รายละเอียด
ผลลัพธ์
WEAVE_NO_ERROR
เมื่อดำเนินการสำเร็จ
other
ไม่สามารถแปลงแฮนเดิลเป็นเส้นทาง TLV

MapPathToHandle

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

สำหรับผู้อ่านที่อยู่ในตำแหน่งรากขององค์ประกอบเส้นทาง WDM ให้อ่านแท็กที่เกี่ยวข้องและระบุแฮนเดิลเส้นทางที่เทียบเท่า

รายละเอียด
ผลลัพธ์
WEAVE_NO_ERROR
สำเร็จแล้ว
WEAVE_ERROR_TLV_TAG_NOT_FOUND
หากไม่พบแฮนเดิลที่ตรงกันเนื่องจากเส้นทางที่ระบุไม่ถูกต้อง/ไม่ถูกต้อง

MapPathToHandle

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

โดยพิจารณาจากสตริงของเส้นทาง WDM ให้อ่านแท็กที่เกี่ยวข้องและระบุแฮนเดิลเส้นทางที่เทียบเท่า

เส้นทาง WDM จะแสดงเป็นสตริงโดยใช้กฎต่อไปนี้

  • แท็กจะคั่นด้วย /
  • เส้นทางต้องขึ้นต้นด้วย / นำหน้า และต้องไม่มีเครื่องหมายทับต่อท้าย
  • แท็กตัวเลขในเส้นทาง WDM ต้องเข้ารหัสโดยใช้ไลบรารี C มาตรฐานสำหรับการเข้ารหัสจำนวนเต็มเป็นสตริง เช่น การเข้ารหัสทศนิยม (ค่าเริ่มต้น) ต้องไม่มี 0 นําหน้า การเข้ารหัสฐาน 16 ต้องขึ้นต้นด้วย 0x และการเข้ารหัสฐาน 8 ต้องขึ้นต้นด้วย 0

รายละเอียด
ผลลัพธ์
WEAVE_NO_ERROR
สำเร็จแล้ว
WEAVE_ERROR_TLV_TAG_NOT_FOUND
หากไม่พบแฮนเดิลที่ตรงกัน
WEAVE_ERROR_INVALID_ARGUMENT
หากสตริงเส้นทางมีรูปแบบไม่ถูกต้อง

MatchesProfileId

bool MatchesProfileId(
  uint32_t aProfileId
) const 

แสดงค่า "จริง" หาก profileId ที่ส่งตรงกับที่เก็บไว้ในสคีมา

รายละเอียด
ค่าที่แสดงผล
bool

RetrieveData

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

เมื่อได้รับแฮนเดิลเส้นทางและตำแหน่งผู้เขียนในองค์ประกอบข้อมูลที่เกี่ยวข้อง ให้ดึงข้อมูลใบจากแหล่งที่มาและเขียนลงในบัฟเฟอร์ที่ผู้เขียนชี้ไปในรูปแบบที่เป็นไปตามสคีมา

รายละเอียด
ผลลัพธ์
WEAVE_NO_ERROR
สำเร็จแล้ว
other
พบข้อผิดพลาดในการเขียนข้อมูล

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 

เมื่อได้รับแฮนเดิลเส้นทางและเครื่องอ่านที่วางอยู่ในองค์ประกอบข้อมูลที่เกี่ยวข้อง ให้ประมวลผลบัฟเฟอร์ข้อมูลที่เครื่องอ่านชี้ไปและจัดเก็บไว้ในซิงค์โดยการเรียกใช้การเรียก SetLeafData เมื่อใดก็ตามที่พบรายการข้อมูลระดับล่าง

รายละเอียด
ผลลัพธ์
WEAVE_NO_ERROR
เมื่อดำเนินการสำเร็จ
other
พบข้อผิดพลาดในการแยกวิเคราะห์/ประมวลผลข้อมูล