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 สาขาที่มีแฮนเดิลทั้งสอง (แม้ว่าจะเหมือนกันก็ตาม)
รายละเอียด | |||
---|---|---|---|
แสดงผลค่า |
|
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 หาก aTag เล็กเกินกว่าจะจัดเก็บเส้นทางทั้งหมด"
|
GetTag
uint64_t GetTag( PropertyPathHandle aHandle ) const
แสดงผลแท็กที่เชื่อมโยงกับแฮนเดิลเส้นทาง
หากเป็นองค์ประกอบในพจนานุกรม ฟังก์ชันนี้จะแสดงผล ProfileTag มิฉะนั้นจะแสดงแท็กบริบท
รายละเอียด | |||
---|---|---|---|
แสดงผลค่า |
|
GetVersionIntersection
bool GetVersionIntersection( SchemaVersionRange & aVersion, SchemaVersionRange & aIntersection ) const
ตามช่วงเวอร์ชัน ฟังก์ชันนี้จะตรวจสอบเพื่อดูว่ามีจุดตัดความเข้ากันได้ระหว่างเวอร์ชันนั้นกับสิ่งที่สคีมาสนับสนุนซึ่งสนับสนุนเครื่องมือสคีมานี้หรือไม่
หากมีจุดตัด ฟังก์ชันจะแสดงค่า true และอัปเดตอาร์กิวเมนต์ aIntersection ที่ส่งผ่านเพื่อแสดงผลลัพธ์ของการทดสอบทางตัดนั้น
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
รายละเอียด | |||||
---|---|---|---|---|---|
แสดงผลค่า |
|