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:: |
|
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
इससे जुड़े Trait का प्रोफ़ाइल आईडी दिखाता है.
ब्यौरा | |||
---|---|---|---|
रिटर्न वैल्यू |
|
GetRelativePathTags
WEAVE_ERROR GetRelativePathTags( const PropertyPathHandle aCandidateHandle, uint64_t *aTags, const uint32_t aTagsSize, uint32_t & aNumTags ) const
किसी प्रॉपर्टीPathHandle को कॉन्टेक्स्ट टैग के ऐरे में बदलता है.
ब्यौरा | |||||||||
---|---|---|---|---|---|---|---|---|---|
पैरामीटर |
|
||||||||
लौटाए गए सामान |
सफल होने पर WEAVE_NO_ERROR; अगर aटैग पूरे पाथ को स्टोर करने के लिए बहुत छोटा है, तो 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
अगर हैंडल कोई डिक्शनरी है, लेकिन डिक्शनरी में नहीं है, तो 'true' दिखाता है. नीचे दिया गया तरीका देखें.
ब्यौरा | |||
---|---|---|---|
रिटर्न वैल्यू |
|
IsEphemeral
bool IsEphemeral( PropertyPathHandle aHandle ) const
IsInDictionary
bool IsInDictionary( PropertyPathHandle aHandle, PropertyPathHandle & aDictionaryItemHandle ) const
अगर हैंडल किसी डिक्शनरी (डिक्शनरी का एलिमेंट) के अंदर है, तो 'true' दिखाता है.
हैंडल (aDictionaryItemHandle) को पास किए गए उपयोगकर्ता को, डिक्शनरी में सबसे ऊपर मौजूद डिक्शनरी एलिमेंट हैंडल पर ले जाने के लिए अपडेट किया जाता है.
ब्यौरा | |||
---|---|---|---|
रिटर्न वैल्यू |
|
IsLeaf
bool IsLeaf( PropertyPathHandle aPropertyHandle ) const
अगर हैंडल, स्कीमा ट्री में लीफ़ नोड के बारे में बताता है, तो 'true' दिखाता है.
ब्यौरा | |||
---|---|---|---|
रिटर्न वैल्यू |
|
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
प्रोफ़ाइल आईडी में पास की गई वैल्यू, स्कीमा में सेव की गई जानकारी से मेल खाने पर 'सही' दिखाता है.
ब्यौरा | |||
---|---|---|---|
रिटर्न वैल्यू |
|
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 कॉल को शुरू करके उसे सिंक में स्टोर करें.
ब्यौरा | |||||
---|---|---|---|---|---|
रिटर्न वैल्यू |
|