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:: |
|
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
เมื่อระบุช่วงเวอร์ชันแล้ว ฟังก์ชันนี้จะตรวจสอบว่าเวอร์ชันดังกล่าวเข้ากันได้กับสคีมาที่ใช้สนับสนุนเครื่องมือสคีมานี้หรือไม่
หากมีการตัดกัน ฟังก์ชันจะแสดงผลเป็น "จริง" และอัปเดตอาร์กิวเมนต์ 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 นําหน้า การเข้ารหัสฐาน 16 ต้องขึ้นต้นด้วย
0x
และการเข้ารหัสฐาน 8 ต้องขึ้นต้นด้วย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
เมื่อได้รับแฮนเดิลเส้นทางและตำแหน่งผู้เขียนในองค์ประกอบข้อมูลที่เกี่ยวข้อง ให้ดึงข้อมูลใบจากแหล่งที่มาและเขียนลงในบัฟเฟอร์ที่ผู้เขียนชี้ไปในรูปแบบที่เป็นไปตามสคีมา
รายละเอียด | |||||
---|---|---|---|---|---|
ผลลัพธ์ |
|
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 เมื่อใดก็ตามที่พบรายการข้อมูลระดับล่าง
รายละเอียด | |||||
---|---|---|---|---|---|
ผลลัพธ์ |
|