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

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

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

खास जानकारी

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

स्कीमा को टेबल के तौर पर सेव किया जाता है. इसमें किसी भी खास ट्रैट के लिए, डब्ल्यूडीएम पाथ/डेटा को सामान्य तौर पर पार्स/कंपोज़ करने की अनुमति देने के लिए, ज़रूरत के मुताबिक जानकारी दी जाती है. ये टेबल, 'code-gen' का आखिरी आउटपुट होंगी. जनरेट किए गए किसी भी कोड की मौजूदगी न होने की वजह से, यह शब्द कुछ भ्रामक है :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
इससे, उस ट्रैट का प्रोफ़ाइल आईडी मिलता है जिससे यह एट्रिब्यूट जुड़ा है.
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
अगर हैंडल किसी डिक्शनरी (डिक्शनरी एलिमेंट) में मौजूद है, तो यह फ़ंक्शन True दिखाता है.
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, स्कीमा में सेव की गई profileId से मेल खाती है, तो यह फ़ंक्शन true दिखाता है.
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
प्रोफ़ाइल आईडी

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
एलिमेंट की संख्या में, aTag कलेक्शन का साइज़.
[out] aNumTags
aTags में लिखे गए टैग की संख्या
लौटाए जाने वाले प्रॉडक्ट
सफलता के मामले में WEAVE_NO_ERROR; अगर कोई टैग पूरा पथ स्टोर करने के लिहाज़ से बहुत छोटा है तो 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 

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

विवरण
रिटर्न वैल्यू
bool

IsEphemeral

bool IsEphemeral(
  PropertyPathHandle aHandle
) const 

IsInDictionary

bool IsInDictionary(
  PropertyPathHandle aHandle,
  PropertyPathHandle & aDictionaryItemHandle
) const 

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

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

विवरण
रिटर्न वैल्यू
bool

IsLeaf

bool IsLeaf(
  PropertyPathHandle aPropertyHandle
) const 

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

विवरण
रिटर्न वैल्यू
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, स्कीमा में सेव की गई profileId से मेल खाती है, तो यह फ़ंक्शन True दिखाता है.

विवरण
रिटर्न वैल्यू
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
डेटा को पार्स/प्रोसेस करने में गड़बड़ियां हुईं.