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:: |
|
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
दो प्रॉपर्टी हैंडल दिए गए हैं. इनमें से सबसे छोटे हैंडल का हिसाब लगाएं, जो इन दोनों हैंडल का पैरंट है.
इसके अलावा, दो हैंडल वाली दो चाइल्ड शाखाएं भी दिखाएं. भले ही, वे एक ही हों.
विवरण | |||
---|---|---|---|
रिटर्न वैल्यू |
|
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.
|
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
अगर हैंडल, स्कीमा ट्री में लीफ नोड को रेफ़र करता है, तो यह 'सही' दिखाता है.
विवरण | |||
---|---|---|---|
रिटर्न वैल्यू |
|
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 नहीं होना चाहिए, हेक्साडेसिमल एन्कोडिंग में
0x
से शुरू होना चाहिए, और ऑक्टल एन्कोडिंग में शुरू में0
होना चाहिए.
विवरण | |||||||
---|---|---|---|---|---|---|---|
रिटर्न वैल्यू |
|
MatchesProfileId
bool MatchesProfileId( uint32_t aProfileId ) const
अगर पास की गई profileId, स्कीमा में सेव की गई profileId से मेल खाती है, तो यह फ़ंक्शन True दिखाता है.
विवरण | |||
---|---|---|---|
रिटर्न वैल्यू |
|
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 कॉल शुरू करें. इसके बाद, इस बफ़र को सिंक में स्टोर करें.
विवरण | |||||
---|---|---|---|---|---|
रिटर्न वैल्यू |
|