nl::Weave::โปรไฟล์::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::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

โครงสร้างสคีมาหลักที่จัดเก็บข้อมูลสคีมา

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

ออฟเซ็ตตาราง KkTable

const uint32_t kHandleTableOffset = 2

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

สคีมา mm

const Schema mSchema

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

FindLowestCommonAncestor

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

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

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

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

แฮนเดิล GetChild

PropertyPathHandle GetChildHandle(
  PropertyPathHandle aParentHandle,
  uint8_t aContextTag
) const 

ความลึกที่ได้รับ

int32_t GetDepth(
  PropertyPathHandle aHandle
) const 

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

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

แฮนเดิล GetDictionaryItem

PropertyPathHandle GetDictionaryItemHandle(
  PropertyPathHandle aParentHandle,
  uint16_t aDictionaryKey
) const 

GetFirstChild

PropertyPathHandle GetFirstChild(
  PropertyPathHandle aParentHandle
) const 

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

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

รับเวอร์ชันสูงสุด

SchemaVersion GetHighestForwardVersion(
  SchemaVersion aVersion
) const 

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

เวอร์ชันที่เข้ากันได้ต่ําสุด

SchemaVersion GetLowestCompatibleVersion(
  SchemaVersion aVersion
) const 

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

ดาวน์โหลดแผนที่

const PropertyInfo * GetMap(
  PropertyPathHandle aHandle
) const 

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

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

เวอร์ชันของ GetMax

SchemaVersion GetMaxVersion() const 

เวอร์ชัน GetMin

SchemaVersion GetMinVersion() const 

ดาวน์โหลดถัดไป

PropertyPathHandle GetNextChild(
  PropertyPathHandle aParentId,
  PropertyPathHandle aChildHandle
) const 

แฮนเดิลที่มีการจัดการถัดไปจะส่งคืนแฮนเดิลย่อยถัดไปที่เชื่อมโยงกับบัญชีระดับบนสุดที่เฉพาะเจาะจง

รายละเอียด
แสดงผลค่า
PropertyPathHandle
แฮนเดิลของเด็กคนถัดไป

ผู้ปกครอง

PropertyPathHandle GetParent(
  PropertyPathHandle aHandle
) const 

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

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

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

รหัส GetProfile

uint32_t GetProfileId(
  void
) const 

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

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

แท็ก GetRelativePath

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
ขนาดของอาร์เรย์ aTag ในจํานวนองค์ประกอบ
[out] aNumTags
จํานวนแท็กที่เขียนไปยัง aTag
การคืนสินค้า
WEhave_NO_ERROR ในกรณีที่สําเร็จ; WEhave_ERROR_NO_MEMORY หาก aTag มีขนาดเล็กเกินกว่าที่จะจัดเก็บเส้นทางแบบเต็ม

รับแท็ก

uint64_t GetTag(
  PropertyPathHandle aHandle
) const 

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

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

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

ส่วน GetVersionIntersection

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

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

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

พจนานุกรม

bool IsDictionary(
  PropertyPathHandle aHandle
) const 

ส่งคืนค่า "จริง" หากแฮนเดิลเป็นพจนานุกรม (ไม่ใช่ในพจนานุกรม โปรดดูวิธีการด้านล่าง)

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

ชั่วคราว

bool IsEphemeral(
  PropertyPathHandle aHandle
) const 

พจนานุกรม

bool IsInDictionary(
  PropertyPathHandle aHandle,
  PropertyPathHandle & aDictionaryItemHandle
) const 

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

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

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

เกาะใบไม้

bool IsLeaf(
  PropertyPathHandle aPropertyHandle
) const 

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

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

เป็นค่าว่าง

bool IsNullable(
  PropertyPathHandle aHandle
) const 

ไม่บังคับ

bool IsOptional(
  PropertyPathHandle aHandle
) const 

เป็นผู้ปกครอง

bool IsParent(
  PropertyPathHandle aChildHandle,
  PropertyPathHandle aParentHandle
) const 

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

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

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

เส้นทางการจัดการแผนที่

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 นําหน้า การเข้ารหัสเลขฐานสิบหกต้องเริ่มต้นด้วย 0x และการเข้ารหัสฐานแปดต้องมี 0 นําหน้า

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

รหัสโปรไฟล์ที่ตรงกัน

bool MatchesProfileId(
  uint32_t aProfileId
) const 

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

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

เรียกข้อมูล

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

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

รายละเอียด
แสดงผลค่า
WEAVE_NO_ERROR
สําเร็จแล้ว
other
พบข้อผิดพลาดในการเขียนข้อมูล

เรียกข้อมูลค่าพจนานุกรม

WEAVE_ERROR RetrieveUpdatableDictionaryData(
  PropertyPathHandle aHandle,
  uint64_t aTagToWrite,
  nl::Weave::TLV::TLVWriter & aWriter,
  IGetDataDelegate *aDelegate,
  PropertyPathHandle & aPropertyPathHandleOfDictItemToStartFrom
) const 

ข้อมูลร้านค้า

WEAVE_ERROR StoreData(
  PropertyPathHandle aHandle,
  nl::Weave::TLV::TLVReader & aReader,
  ISetDataDelegate *aDelegate,
  IPathFilter *aPathFilter
) const 

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

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