nl::Weave::Profiles::DataManagement_Current::TraitSchemaEngine

#include <src/lib/profiles/data-management/Current/TraitData.h>

स्कीमा इंजन किसी खास trait से जुड़ी स्कीमा की जानकारी लेता है. साथ ही, उसे पार्स और अनुवाद करने की सुविधाएं देता है, ताकि WDM मशीन इस्तेमाल किया जा सके.

खास जानकारी

इसमें पाथहैंडल को WDM पाथ से बदलना और स्कीमा को समझने/क्वेरी करने के तरीके शामिल हैं. साथ ही, किसी हैंडल से टीएलवी को पढ़ने/लिखने में मदद करने वाले तरीके भी शामिल हैं.

स्कीमा खुद टेबल फ़ॉर्मैट में स्टोर होता है. किसी दिए गए Trait के लिए WDM पाथ/डेटा की सामान्य पार्सिंग/कंपोज़िशन की अनुमति देने के लिए ज़रूरी जानकारी दी जाती है. ये टेबल, 'कोड-जेन' का आखिरी आउटपुट होगी. जनरेट किए गए किसी कोड :P के न होने की वजह से, यह शब्द कुछ हद तक गुमराह करने वाला है.

सार्वजनिक स्टैटिक एट्रिब्यूट

kHandleTableOffset = 2
const uint32_t

सार्वजनिक एट्रिब्यूट

mSchema
const Schema

सार्वजनिक फ़ंक्शन

FindLowestCommonAncestor(PropertyPathHandle aHandle1, PropertyPathHandle aHandle2, PropertyPathHandle *aHandle1BranchChild, PropertyPathHandle *aHandle2BranchChild) const
दो प्रॉपर्टी हैंडल दिए गए हैं, तो उन सबसे निचले हैंडल की गिनती करें जो इन दोनों हैंडल के लिए पैरंट के तौर पर काम करते हैं.
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
इससे जुड़े Trait का प्रोफ़ाइल आईडी दिखाता है.
GetRelativePathTags(const PropertyPathHandle aCandidateHandle, uint64_t *aTags, const uint32_t aTagsSize, uint32_t & aNumTags) const
किसी प्रॉपर्टीPathHandle को कॉन्टेक्स्ट टैग के ऐरे में बदलता है.
GetTag(PropertyPathHandle aHandle) const
uint64_t
पाथ हैंडल से जुड़ा टैग दिखाता है.
GetVersionIntersection(SchemaVersionRange & aVersion, SchemaVersionRange & aIntersection) const
bool
वर्शन की रेंज देने पर, यह फ़ंक्शन यह जांच करता है कि क्या इस स्कीमा इंजन के साथ काम करने वाले स्कीमा और उनके बीच कोई संबंध है या नहीं.
IsDictionary(PropertyPathHandle aHandle) const
bool
अगर हैंडल कोई डिक्शनरी है, लेकिन डिक्शनरी में नहीं है, तो 'true' दिखाता है. नीचे दिया गया तरीका देखें.
IsEphemeral(PropertyPathHandle aHandle) const
bool
IsInDictionary(PropertyPathHandle aHandle, PropertyPathHandle & aDictionaryItemHandle) const
bool
अगर हैंडल किसी डिक्शनरी (डिक्शनरी का एलिमेंट) के अंदर है, तो 'true' दिखाता है.
IsLeaf(PropertyPathHandle aPropertyHandle) const
bool
अगर हैंडल, स्कीमा ट्री में लीफ़ नोड के बारे में बताता है, तो 'true' दिखाता है.
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
पाथ हैंडल को टीएलवी पाथ में बदलें.
MapPathToHandle(nl::Weave::TLV::TLVReader & aPathReader, PropertyPathHandle & aHandle) const
WDM पाथ एलिमेंट के रूट में रीडर की पोज़िशन मिलने पर, उससे जुड़े टैग को पढ़ें और उसके जैसा पाथ हैंडल दें.
MapPathToHandle(const char *aPathString, PropertyPathHandle & aHandle) const
WDM पाथ को स्ट्रिंग में दिखाने के बाद, सही टैग को पढ़कर सुनाया जाता है. साथ ही, उसी पाथ का हैंडल दिया जाता है.
MatchesProfileId(uint32_t aProfileId) const
bool
प्रोफ़ाइल आईडी में पास की गई वैल्यू, स्कीमा में सेव की गई जानकारी से मेल खाने पर 'सही' दिखाता है.
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::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 

दो प्रॉपर्टी हैंडल दिए गए हैं, तो उन सबसे निचले हैंडल की गिनती करें जो इन दोनों हैंडल के लिए पैरंट के तौर पर काम करते हैं.

इसके अलावा, ऐसी दो चाइल्ड ब्रांच दें जिनमें दोनों हैंडल में से हर एक हो (भले ही वे एक जैसे हों).

ब्यौरा
रिटर्न वैल्यू
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 का प्रोफ़ाइल आईडी दिखाता है.

ब्यौरा
रिटर्न वैल्यू
Trait
प्रोफ़ाइल आईडी

GetRelativePathTags

WEAVE_ERROR GetRelativePathTags(
  const PropertyPathHandle aCandidateHandle,
  uint64_t *aTags,
  const uint32_t aTagsSize,
  uint32_t & aNumTags
) const 

किसी प्रॉपर्टीPathHandle को कॉन्टेक्स्ट टैग के ऐरे में बदलता है.

ब्यौरा
पैरामीटर
[in] aCandidateHandle
कन्वर्ट किया जाने वाला प्रॉपर्टीPathHandle.
[in] aTags
आउटपुट कलेक्शन पर कर्सर ले जाएं.
[in] aTagsSize
एलिमेंट की संख्या में aTag कलेक्शन का साइज़.
[out] aNumTags
टैग के लिए लिखे गए टैग की संख्या
लौटाए गए सामान
सफल होने पर WEAVE_NO_ERROR; अगर aटैग पूरे पाथ को स्टोर करने के लिए बहुत छोटा है, तो WEAVE_ERROR_NO_MEMORY.

GetTag

uint64_t GetTag(
  PropertyPathHandle aHandle
) const 

पाथ हैंडल से जुड़ा टैग दिखाता है.

अगर यह कोई डिक्शनरी एलिमेंट है, तो यह फ़ंक्शन ProfileTag दिखाता है. ऐसा न होने पर, यह कॉन्टेक्स्ट टैग को दिखाता है.

ब्यौरा
रिटर्न वैल्यू
uint64_t

GetVersionIntersection

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

वर्शन की रेंज देने पर, यह फ़ंक्शन यह जांच करता है कि क्या इस स्कीमा इंजन के साथ काम करने वाले स्कीमा और उनके बीच कोई संबंध है या नहीं.

अगर कोई इंटरसेक्शन है, तो फ़ंक्शन सही वैल्यू दिखाएगा. साथ ही, उस इंटरसेक्शन की जांच के नतीजे दिखाने के लिए पास किए गए aIntersection आर्ग्युमेंट को अपडेट किया जाएगा.

IsDictionary

bool IsDictionary(
  PropertyPathHandle aHandle
) const 

अगर हैंडल कोई डिक्शनरी है, लेकिन डिक्शनरी में नहीं है, तो 'true' दिखाता है. नीचे दिया गया तरीका देखें.

ब्यौरा
रिटर्न वैल्यू
bool

IsEphemeral

bool IsEphemeral(
  PropertyPathHandle aHandle
) const 

IsInDictionary

bool IsInDictionary(
  PropertyPathHandle aHandle,
  PropertyPathHandle & aDictionaryItemHandle
) const 

अगर हैंडल किसी डिक्शनरी (डिक्शनरी का एलिमेंट) के अंदर है, तो 'true' दिखाता है.

हैंडल (aDictionaryItemHandle) को पास किए गए उपयोगकर्ता को, डिक्शनरी में सबसे ऊपर मौजूद डिक्शनरी एलिमेंट हैंडल पर ले जाने के लिए अपडेट किया जाता है.

ब्यौरा
रिटर्न वैल्यू
bool

IsLeaf

bool IsLeaf(
  PropertyPathHandle aPropertyHandle
) const 

अगर हैंडल, स्कीमा ट्री में लीफ़ नोड के बारे में बताता है, तो 'true' दिखाता है.

ब्यौरा
रिटर्न वैल्यू
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 

पाथ हैंडल को टीएलवी पाथ में बदलें.

ब्यौरा
रिटर्न वैल्यू
WEAVE_NO_ERROR
सफलता पर.
other
हैंडल को टीएलवी पाथ में नहीं बदला जा सका

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 

प्रोफ़ाइल आईडी में पास की गई वैल्यू, स्कीमा में सेव की गई जानकारी से मेल खाने पर 'सही' दिखाता है.

ब्यौरा
रिटर्न वैल्यू
bool

RetrieveData

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

पाथ हैंडल और संबंधित डेटा एलिमेंट में लेखक की जगह दिए जाने पर, सोर्स से लीफ़ डेटा हासिल करें और उसे स्कीमा के मुताबिक, लेखक के बताए गए बफ़र में लिखें.

ब्यौरा
रिटर्न वैल्यू
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 कॉल को शुरू करके उसे सिंक में स्टोर करें.

ब्यौरा
रिटर्न वैल्यू
WEAVE_NO_ERROR
सफलता पर.
other
डेटा को पार्स/प्रोसेस करने में गड़बड़ियां हुईं.