nl:: Weave:: Profiles:: DataManagement_Current:: TraitSchemaEngine
#include <src/lib/profiles/data-management/Current/TraitData.h>
เครื่องมือสคีมาจะใช้ข้อมูลสคีมาที่เชื่อมโยงกับลักษณะหนึ่งๆ และจัดเตรียมสิ่งอำนวยความสะดวกในการแยกวิเคราะห์และแปลค่าดังกล่าวเป็นรูปแบบที่เครื่องจักร WDM ใช้ได้
สรุป
ซึ่งรวมถึงการแปลงจาก PathHandles เป็นเส้นทาง 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
แสดงผลเป็น "จริง" หากแฮนเดิลอ้างอิงถึงโหนด Leaf ในแผนผังสคีมา
|
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
|
เรียกข้อมูล Leaf จากต้นทางและเขียนลงในบัฟเฟอร์ที่ผู้เขียนชี้ไปโดยเป็นไปตามสคีมา โดยกำหนดแฮนเดิลเส้นทางและตำแหน่งผู้เขียนในองค์ประกอบข้อมูลที่เกี่ยวข้อง
|
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 เมื่อพบรายการข้อมูล Leaf โดยใช้แฮนเดิลเส้นทางและตัวอ่านที่วางอยู่บนเอลิเมนต์ข้อมูลที่เกี่ยวข้อง
|
ชั้นเรียน |
|
---|---|
nl:: |
|
nl:: |
โครงสร้าง |
|
---|---|
nl:: |
|
nl:: |
โครงสร้างสคีมาหลักที่มีข้อมูลสคีมา |
แอตทริบิวต์สาธารณะแบบคงที่
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 อัน (แม้ว่าจะเหมือนกันก็ตาม)
รายละเอียด | |||
---|---|---|---|
ผลลัพธ์ |
|
GetChildHandle
PropertyPathHandle GetChildHandle( PropertyPathHandle aParentHandle, uint8_t aContextTag ) const
GetDepth
int32_t GetDepth( PropertyPathHandle aHandle ) const
คำนวณความลึกในโครงสร้างสคีมาสำหรับแฮนเดิลที่ระบุ
รายละเอียด | |||
---|---|---|---|
ผลลัพธ์ |
|
GetDictionaryItemHandle
PropertyPathHandle GetDictionaryItemHandle( PropertyPathHandle aParentHandle, uint16_t aDictionaryKey ) const
GetFirstChild
PropertyPathHandle GetFirstChild( PropertyPathHandle aParentHandle ) const
แสดงแฮนเดิลย่อยแรกที่เชื่อมโยงกับรายการหลักหนึ่งๆ
รายละเอียด | |||
---|---|---|---|
ผลลัพธ์ |
|
GetHighestForwardVersion
SchemaVersion GetHighestForwardVersion( SchemaVersion aVersion ) const
เมื่อมีเวอร์ชันสคีมาข้อมูลที่ระบุ ระบบจะแสดงเวอร์ชันสคีมาที่เข้ากันได้การส่งต่อสูงสุด
GetLowestCompatibleVersion
SchemaVersion GetLowestCompatibleVersion( SchemaVersion aVersion ) const
เมื่อมีเวอร์ชันสคีมาข้อมูลที่ระบุ การดำเนินการนี้จะแสดงผลเวอร์ชันสคีมาขั้นต่ำที่เข้ากันได้
GetMap
const PropertyInfo * GetMap( PropertyPathHandle aHandle ) const
แสดงผลตัวชี้ไปยังโครงสร้าง PropertyInfo ที่อธิบายแฮนเดิลของเส้นทางที่เฉพาะเจาะจง
รายละเอียด | |||
---|---|---|---|
ผลลัพธ์ |
|
GetMaxVersion
SchemaVersion GetMaxVersion() const
GetMinVersion
SchemaVersion GetMinVersion() const
GetNextChild
PropertyPathHandle GetNextChild( PropertyPathHandle aParentId, PropertyPathHandle aChildHandle ) const
เมื่อกำหนดแฮนเดิลให้กับผู้เผยแพร่โฆษณาย่อยที่มีอยู่ ระบบจะแสดงแฮนเดิลย่อยถัดไปที่เชื่อมโยงกับรายการหลักที่เฉพาะเจาะจง
รายละเอียด | |||
---|---|---|---|
ผลลัพธ์ |
|
GetParent
PropertyPathHandle GetParent( PropertyPathHandle aHandle ) const
แสดงผลแฮนเดิลระดับบนสุดของแฮนเดิลเส้นทางย่อยที่ระบุ
ระบบจะเก็บรักษาคีย์พจนานุกรมในแฮนเดิลไว้ในกรณีที่แฮนเดิลหลักเป็นองค์ประกอบพจนานุกรมด้วย
รายละเอียด | |||
---|---|---|---|
ผลลัพธ์ |
|
GetProfileId
uint32_t GetProfileId( void ) const
แสดงรหัสโปรไฟล์ของลักษณะที่เกี่ยวข้อง
รายละเอียด | |||
---|---|---|---|
ผลลัพธ์ |
|
GetRelativePathTags
WEAVE_ERROR GetRelativePathTags( const PropertyPathHandle aCandidateHandle, uint64_t *aTags, const uint32_t aTagsSize, uint32_t & aNumTags ) const
แปลง PropertyPathHandle เป็นอาร์เรย์ของแท็กบริบท
รายละเอียด | |||||||||
---|---|---|---|---|---|---|---|---|---|
พารามิเตอร์ |
|
||||||||
การคืนสินค้า |
WEAVE_NO_ERROR ในกรณีที่สำเร็จ WEAVE_ERROR_NO_MEMORY หาก aTags มีขนาดเล็กเกินกว่าที่จะจัดเก็บเส้นทางทั้งหมดได้
|
GetTag
uint64_t GetTag( PropertyPathHandle aHandle ) const
แสดงผลแท็กที่เชื่อมโยงกับแฮนเดิลเส้นทาง
ถ้าเป็นองค์ประกอบในพจนานุกรม ฟังก์ชันนี้จะแสดง ProfileTag มิฉะนั้นจะแสดงผลแท็กบริบท
รายละเอียด | |||
---|---|---|---|
ผลลัพธ์ |
|
GetVersionIntersection
bool GetVersionIntersection( SchemaVersionRange & aVersion, SchemaVersionRange & aIntersection ) const
เมื่อกำหนดเป็นช่วงเวอร์ชัน ฟังก์ชันนี้จะตรวจสอบว่ามีจุดร่วมระหว่างเวอร์ชันนั้นกับส่วนที่สคีมารองรับเครื่องมือสคีมานี้หรือไม่
ถ้ามีทางแยก ฟังก์ชันจะแสดงผลค่าจริง และอัปเดตอาร์กิวเมนต์สี่แยกที่ส่งผ่านเพื่อแสดงผลลัพธ์ของการทดสอบอินเตอร์เซกชันนั้น
IsDictionary
bool IsDictionary( PropertyPathHandle aHandle ) const
แสดงค่า "จริง" หากแฮนเดิลเป็นพจนานุกรม (ไม่ใช่ในพจนานุกรม โปรดดูวิธีการด้านล่าง)
รายละเอียด | |||
---|---|---|---|
ผลลัพธ์ |
|
IsEphemeral
bool IsEphemeral( PropertyPathHandle aHandle ) const
IsInDictionary
bool IsInDictionary( PropertyPathHandle aHandle, PropertyPathHandle & aDictionaryItemHandle ) const
แสดงค่า "จริง" หากแฮนเดิลอยู่ภายในพจนานุกรม (องค์ประกอบพจนานุกรม)
ระบบจะอัปเดตผู้ใช้ในแฮนเดิล (aDictionaryItemHandle) ให้ชี้ไปยังแฮนเดิลองค์ประกอบพจนานุกรมที่อยู่บนสุดภายในพจนานุกรม
รายละเอียด | |||
---|---|---|---|
ผลลัพธ์ |
|
IsLeaf
bool IsLeaf( PropertyPathHandle aPropertyHandle ) const
แสดงผลเป็น "จริง" หากแฮนเดิลอ้างอิงถึงโหนด Leaf ในแผนผังสคีมา
รายละเอียด | |||
---|---|---|---|
ผลลัพธ์ |
|
IsNullable
bool IsNullable( PropertyPathHandle aHandle ) const
IsOptional
bool IsOptional( PropertyPathHandle aHandle ) const
IsParent
bool IsParent( PropertyPathHandle aChildHandle, PropertyPathHandle aParentHandle ) const
ตรวจสอบว่าแฮนเดิลที่ระบุเป็นรายการย่อยของแฮนเดิลอื่นหรือไม่
ซึ่งอาจเป็นผู้ปกครองโดยอ้อม
รายละเอียด | |||
---|---|---|---|
ผลลัพธ์ |
|
MapHandleToPath
WEAVE_ERROR MapHandleToPath( PropertyPathHandle aHandle, nl::Weave::TLV::TLVWriter & aPathWriter ) const
MapPathToHandle
WEAVE_ERROR MapPathToHandle( nl::Weave::TLV::TLVReader & aPathReader, PropertyPathHandle & aHandle ) const
สำหรับผู้อ่านที่อยู่ในตำแหน่งรากขององค์ประกอบเส้นทาง WDM ให้อ่านแท็กที่เกี่ยวข้องและระบุแฮนเดิลเส้นทางที่เทียบเท่า
รายละเอียด | |||||
---|---|---|---|---|---|
ผลลัพธ์ |
|
MapPathToHandle
WEAVE_ERROR MapPathToHandle( const char *aPathString, PropertyPathHandle & aHandle ) const
โดยพิจารณาจากสตริงของเส้นทาง WDM ให้อ่านแท็กที่เกี่ยวข้องและระบุแฮนเดิลเส้นทางที่เทียบเท่า
เส้นทาง WDM จะแสดงเป็นสตริงโดยใช้กฎต่อไปนี้
- แท็กถูกคั่นด้วย
/
- เส้นทางต้องขึ้นต้นด้วย
/
นำหน้า และต้องไม่มีเครื่องหมายทับ - แท็กตัวเลขในเส้นทาง WDM ต้องเข้ารหัสโดยใช้ไลบรารี C มาตรฐานสำหรับจำนวนเต็มในการเข้ารหัสสตริง กล่าวคือ การเข้ารหัสทศนิยม (ค่าเริ่มต้น) ต้องไม่มี 0 นำหน้า การเข้ารหัสเลขฐานสิบหกต้องขึ้นต้นด้วย
0x
และการเข้ารหัสฐานแปดต้องมี0
นำหน้า
รายละเอียด | |||||||
---|---|---|---|---|---|---|---|
ผลลัพธ์ |
|
MatchesProfileId
bool MatchesProfileId( uint32_t aProfileId ) const
แสดงค่า "จริง" หากค่าที่ส่งใน profileId ตรงกับที่เก็บไว้ในสคีมา
รายละเอียด | |||
---|---|---|---|
ผลลัพธ์ |
|
RetrieveData
WEAVE_ERROR RetrieveData( PropertyPathHandle aHandle, uint64_t aTagToWrite, nl::Weave::TLV::TLVWriter & aWriter, IGetDataDelegate *aDelegate, IDirtyPathCut *apDirtyPathCut ) const
เรียกข้อมูล Leaf จากต้นทางและเขียนลงในบัฟเฟอร์ที่ผู้เขียนชี้ไปโดยเป็นไปตามสคีมา โดยกำหนดแฮนเดิลเส้นทางและตำแหน่งผู้เขียนในองค์ประกอบข้อมูลที่เกี่ยวข้อง
รายละเอียด | |||||
---|---|---|---|---|---|
ผลลัพธ์ |
|
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 เมื่อพบรายการข้อมูล Leaf โดยใช้แฮนเดิลเส้นทางและตัวอ่านที่วางอยู่บนเอลิเมนต์ข้อมูลที่เกี่ยวข้อง
รายละเอียด | |||||
---|---|---|---|---|---|
ผลลัพธ์ |
|