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::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 สาขาที่มีแฮนเดิลทั้งสอง (แม้ว่าจะเหมือนกันก็ตาม)

รายละเอียด
แสดงผลค่า
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
จำนวนแท็กที่เขียนไปยัง aTag
การส่งคืน
WEAVE_NO_ERROR ในกรณีที่สำเร็จ และ WEAVE_ERROR_NO_MEMORY หาก aTag เล็กเกินกว่าจะจัดเก็บเส้นทางทั้งหมด"

GetTag

uint64_t GetTag(
  PropertyPathHandle aHandle
) const 

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

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

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

GetVersionIntersection

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

ตามช่วงเวอร์ชัน ฟังก์ชันนี้จะตรวจสอบเพื่อดูว่ามีจุดตัดความเข้ากันได้ระหว่างเวอร์ชันนั้นกับสิ่งที่สคีมาสนับสนุนซึ่งสนับสนุนเครื่องมือสคีมานี้หรือไม่

หากมีจุดตัด ฟังก์ชันจะแสดงค่า true และอัปเดตอาร์กิวเมนต์ 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 นำหน้า การเข้ารหัสเลขฐานสิบหกต้องขึ้นต้นด้วย 0x และการเข้ารหัสเลขฐานแปดต้องมี 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 

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

รายละเอียด
แสดงผลค่า
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 เมื่อใดก็ตามที่พบรายการข้อมูล Leaf

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