nl:: Weave:: TLV:: TLVReader
#include <src/lib/core/WeaveTLV.h>
Weave TLV फ़ॉर्मैट में कोड में बदले गए डेटा के लिए, मेमोरी की क्षमता वाला पार्सर देता है.
खास जानकारी
TLVReader, Weave TLV डेटा के लिए, सिर्फ़ फ़ॉरवर्ड-स्टाइल वाला “पुल-स्टाइल” पार्सर लागू करता है TLVReader ऑब्जेक्ट, कर्सर के तौर पर काम करता है. इसका इस्तेमाल, टीएलवी एलिमेंट के क्रम को दोहराने और उनके कॉन्टेंट को समझने के लिए किया जा सकता है. जब यह एलिमेंट किसी एलिमेंट पर होता है, तब ऐप्लिकेशन मौजूदा एलिमेंट के टाइप और टैग के बारे में क्वेरी करने के लिए, पाठक के Get() तरीकों को कॉल कर सकते हैं और उनसे जुड़ी वैल्यू निकाल सकते हैं. पाठक के Next() तरीके का इस्तेमाल, एक एलिमेंट से एलिमेंट पर जाने के लिए किया जाता है.
TLVReader ऑब्जेक्ट को हमेशा TLV एलिमेंट के पहले, चालू या बाद में रखा जाता है. पहली बार शुरू करने पर, TLVReader को एन्कोडिंग के पहले एलिमेंट से ठीक पहले पोज़िशन किया जाता है. पढ़ना शुरू करने के लिए किसी ऐप्लिकेशन को Next() तरीके को शुरुआती कॉल करना होगा, ताकि पाठक को पहले एलिमेंट पर रखा जा सके. जब कोई कंटेनर एलिमेंट मिलता है, तब कंटेनर का कॉन्टेंट इटरेट करने के लिए, OpenContainer() या EnterContainer() मेथड का इस्तेमाल किया जा सकता है.
जब रीडर, टीएलवी एन्कोडिंग के आखिर या कंटेनर के आखिरी एलिमेंट तक पहुंचता है, तो वह Next() तरीके से WEAVE_END_OF_TLV गड़बड़ी लौटाकर, ऐप्लिकेशन को सिग्नल देता है. रीडर तब तक WEAVE_END_OF_TLV दिखाता रहेगा, जब तक कि उसे फिर से शुरू नहीं किया जाता या मौजूदा कंटेनर को बंद नहीं किया जाता (CloseContainer() / ExitContainer() के ज़रिए).
TLVReader ऑब्जेक्ट, सीधे किसी तय इनपुट बफ़र से या एक या एक से ज़्यादा PaetBuffers की चेन से डेटा पार्स कर सकता है. इसके अलावा, ऐप्लिकेशन किसी आर्बिट्रेरी सोर्स, जैसे कि सॉकेट या सीरियल पोर्ट से रीडर को डेटा फ़ीड करने के लिए, GetNextBuffer
फ़ंक्शन दे सकते हैं.
इनहेरिटेंस
पहले से मालूम सब-क्लास:nl::Weave::Profiles::DataManagement_Current::CircularEventReader
nl::Weave::TLV::CircularTLVReader
सार्वजनिक टाइप |
|
---|---|
GetNextBufferFunct)(TLVReader &reader, uintptr_t &bufHandle, const uint8_t *&bufStart, uint32_t &bufLen)
|
WEAVE_ERROR(*) यह एक ऐसा फ़ंक्शन है जिसका इस्तेमाल करके, पार्स किया जाने वाला अतिरिक्त टीएलवी डेटा वापस पाया जा सकता है. |
सार्वजनिक एट्रिब्यूट |
|
---|---|
AppData
|
void *
पॉइंटर फ़ील्ड, जिसका इस्तेमाल ऐप्लिकेशन से जुड़े डेटा के लिए किया जा सकता है.
|
GetNextBuffer
|
उस फ़ंक्शन का पॉइंटर, जो TLVReader ऑब्जेक्ट के लिए इनपुट डेटा बनाएगा.
|
ImplicitProfileId
|
uint32_t
इंप्लिसिट फ़ॉर्म में एन्कोड किए गए प्रोफ़ाइल टैग के लिए इस्तेमाल किया जाने वाला प्रोफ़ाइल आईडी.
|
सुरक्षित एट्रिब्यूट |
|
---|---|
mBufEnd
|
const uint8_t *
|
mBufHandle
|
uintptr_t
|
mContainerType
|
|
mControlByte
|
uint16_t
|
mElemLenOrVal
|
uint64_t
|
mElemTag
|
uint64_t
|
mLenRead
|
uint32_t
|
mMaxLen
|
uint32_t
|
mReadPoint
|
const uint8_t *
|
सार्वजनिक फ़ंक्शन |
|
---|---|
CloseContainer(TLVReader & containerReader)
|
OpenContainer() को कॉल करने के बाद, TLV कंटेनर की रीडिंग को पूरा करता है.
|
DupBytes(uint8_t *& buf, uint32_t & dataLen)
|
यह फ़ंक्शन, मौजूदा बाइट या UTF8 स्ट्रिंग की वैल्यू वाला बफ़र तय करता है और उसे लौटाता है.
|
DupString(char *& buf)
|
यह फ़ंक्शन, मौजूदा बाइट या UTF8 स्ट्रिंग की शून्य से खत्म होने वाली वैल्यू वाले बफ़र को असाइन करता है और दिखाता है.
|
EnterContainer(TLVType & outerContainerType)
|
|
ExitContainer(TLVType outerContainerType)
|
|
Get(bool & v)
|
मौजूदा एलिमेंट की वैल्यू बूल टाइप के तौर पर पाएं.
|
Get(int8_t & v)
|
मौजूदा एलिमेंट की वैल्यू को, साइन किए गए 8-बिट पूर्णांक के तौर पर पाएं.
|
Get(int16_t & v)
|
मौजूदा एलिमेंट की वैल्यू को, साइन किए गए 16-बिट पूर्णांक के तौर पर पाएं.
|
Get(int32_t & v)
|
मौजूदा एलिमेंट की वैल्यू को, साइन किए गए 32-बिट पूर्णांक के तौर पर पाएं.
|
Get(int64_t & v)
|
मौजूदा एलिमेंट की वैल्यू को, साइन किए गए 64-बिट पूर्णांक के तौर पर पाएं.
|
Get(uint8_t & v)
|
मौजूदा एलिमेंट की वैल्यू को, 8-बिट बिना साइन वाले पूर्णांक के रूप में पाएं.
|
Get(uint16_t & v)
|
मौजूदा एलिमेंट की वैल्यू को, 16-बिट बिना साइन वाले पूर्णांक के रूप में पाएं.
|
Get(uint32_t & v)
|
मौजूदा एलिमेंट की वैल्यू को, 32-बिट बिना साइन वाले पूर्णांक के रूप में पाएं.
|
Get(uint64_t & v)
|
मौजूदा एलिमेंट की वैल्यू, 64-बिट बिना साइन वाले पूर्णांक के रूप में पाएं.
|
Get(float & v)
|
|
Get(double & v)
|
मौजूदा एलिमेंट की वैल्यू को दो बार सटीक फ़्लोटिंग पॉइंट नंबर के तौर पर पाएं.
|
GetBufHandle(void) const
|
uintptr_t
|
GetBytes(uint8_t *buf, uint32_t bufSize)
|
मौजूदा बाइट या UTF8 स्ट्रिंग एलिमेंट की वैल्यू पाएं.
|
GetContainerType(void) const
|
उस कंटेनर का टाइप दिखाता है जिसमें TLVReader अभी पढ़ रहा है.
|
GetControlByte(void) const
|
uint16_t
मौजूदा TLV एलिमेंट से जुड़ा कंट्रोल बाइट दिखाता है.
|
GetDataPtr(const uint8_t *& data)
|
टीएलवी बाइट या UTF8 स्ट्रिंग एलिमेंट के शुरुआती कोड में बदले गए बाइट के लिए पॉइंटर पाएं.
|
GetLength(void) const
|
uint32_t
मौजूदा TLV एलिमेंट से जुड़े डेटा की लंबाई दिखाता है.
|
GetLengthRead(void) const
|
uint32_t
यह फ़ंक्शन, रीडर के शुरू होने के बाद से अब तक पढ़े गए बाइट की कुल संख्या दिखाता है.
|
GetReadPoint(void) const
|
const uint8_t *
इनपुट बफ़र में उस पॉइंट की जानकारी देता है जो रीडर की मौजूदा पोज़िशन से मेल खाता है.
|
GetRemainingLength(void) const
|
uint32_t
पढ़े जा सकने वाले बाइट की कुल संख्या दिखाता है.
|
GetString(char *buf, uint32_t bufSize)
|
मौजूदा बाइट या UTF8 स्ट्रिंग एलिमेंट की वैल्यू, खत्म की गई शून्य स्ट्रिंग के तौर पर पाएं.
|
GetTag(void) const
|
uint64_t
मौजूदा टीएलवी एलिमेंट से जुड़ा टैग दिखाता है.
|
GetType(void) const
|
मौजूदा TLV एलिमेंट का टाइप दिखाता है.
|
Init(const TLVReader & aReader)
|
void
|
Init(const uint8_t *data, uint32_t dataLen)
|
void
एक ही इनपुट बफ़र से पढ़ने के लिए, TLVReader ऑब्जेक्ट को शुरू करता है.
|
Init(PacketBuffer *buf, uint32_t maxLen)
|
void
एक ही PaetBuffer से पढ़ने के लिए, TLVReader ऑब्जेक्ट को शुरू करता है.
|
Init(PacketBuffer *buf, uint32_t maxLen, bool allowDiscontiguousBuffers)
|
void
एक या एक से ज़्यादा BoxetBuffers से पढ़ने के लिए, TLVReader ऑब्जेक्ट को शुरू करता है.
|
Next(void)
|
|
Next(TLVType expectedType, uint64_t expectedTag)
|
|
OpenContainer(TLVReader & containerReader)
|
|
Skip(void)
|
|
VerifyEndOfContainer(void)
|
इससे यह पुष्टि होती है कि TVLReader ऑब्जेक्ट, TLV कंटेनर के आखिर में है.
|
सुरक्षित किए गए फ़ंक्शन |
|
---|---|
ClearElementState(void)
|
void
TLVReader की स्थिति हटाएं.
|
ElementType(void) const
|
TLVElementType
यह एक निजी तरीका है, जो mControlByte से TLVElementType दिखाता है.
|
EnsureData(WEAVE_ERROR noDataErr)
|
|
GetElementHeadLength(uint8_t & elemHeadBytes) const
|
यह एक निजी तरीका है, जिसका इस्तेमाल टीएलवी एलिमेंट हेड की लंबाई का पता लगाने के लिए किया जाता है.
|
IsContainerOpen(void) const
|
bool
|
ReadData(uint8_t *buf, uint32_t len)
|
|
ReadElement(void)
|
|
ReadTag(TLVTagControl tagControl, const uint8_t *& p)
|
uint64_t
|
SetContainerOpen(bool aContainerOpen)
|
void
|
SkipData(void)
|
डेस्टिनेशन बफ़र के बिना, मौजूदा टीएलवी में मौजूद किसी भी डेटा को पढ़ें और उसे छोड़ दें.
|
SkipToEndOfContainer(void)
|
|
VerifyElement(void)
|
सुरक्षित स्टैटिक फ़ंक्शन |
|
---|---|
FailGetNextBuffer(TLVReader & reader, uintptr_t & bufHandle, const uint8_t *& bufStart, uint32_t & bufLen)
|
|
GetNextPacketBuffer(TLVReader & reader, uintptr_t & bufHandle, const uint8_t *& bufStart, uint32_t & bufLen)
|
सार्वजनिक टाइप
GetNextBufferFunct
WEAVE_ERROR(* GetNextBufferFunct)(TLVReader &reader, uintptr_t &bufHandle, const uint8_t *&bufStart, uint32_t &bufLen)
यह एक ऐसा फ़ंक्शन है जिसका इस्तेमाल करके, पार्स किया जाने वाला अतिरिक्त टीएलवी डेटा वापस पाया जा सकता है.
इस तरह के फ़ंक्शन का इस्तेमाल, इनपुट डेटा को TLVReader पर फ़ीड करने के लिए किया जाता है. जब कॉल किया जाता है, तो फ़ंक्शन से अतिरिक्त डेटा जनरेट होने की संभावना होती है. इससे, पाठक को पार्स कर सकता है या यह सिग्नल मिल सकता है कि कोई और डेटा उपलब्ध नहीं है.
जानकारी | |||||||||
---|---|---|---|---|---|---|---|---|---|
पैरामीटर |
|
||||||||
रिटर्न वैल्यू |
|
सार्वजनिक एट्रिब्यूट
AppData
void * AppData
पॉइंटर फ़ील्ड, जिसका इस्तेमाल ऐप्लिकेशन से जुड़े डेटा के लिए किया जा सकता है.
GetNextBuffer
GetNextBufferFunct GetNextBuffer
उस फ़ंक्शन का पॉइंटर, जो TLVReader ऑब्जेक्ट के लिए इनपुट डेटा बनाएगा.
अगर इसे NULL (डिफ़ॉल्ट वैल्यू) पर सेट किया जाता है, तो पाठक यह मान लेगा कि इसके बाद कोई इनपुट डेटा उपलब्ध नहीं है.
getNextBuffer को किसी ऐप्लिकेशन की मदद से किसी भी समय सेट किया जा सकता है. हालांकि, आम तौर पर इसे तब सेट किया जाता है, जब रीडर शुरू किया जाता है.
GetNextBuffer फ़ंक्शन को लागू करने के बारे में ज़्यादा जानकारी के लिए GetNextBufferFuntt टाइप की परिभाषा देखें.
ImplicitProfileId
uint32_t ImplicitProfileId
इंप्लिसिट फ़ॉर्म में एन्कोड किए गए प्रोफ़ाइल टैग के लिए इस्तेमाल किया जाने वाला प्रोफ़ाइल आईडी.
जब पाठक को प्रोफ़ाइल के हिसाब से कोई ऐसा टैग मिलता है जिसे इंप्लिसिट फ़ॉर्म में एन्कोड किया गया है, तो वह टैग के लिए अनुमानित प्रोफ़ाइल आईडी के तौर पर ImplicitProfileId
प्रॉपर्टी की वैल्यू का इस्तेमाल करता है.
डिफ़ॉल्ट रूप से, ImplicitProfileId
प्रॉपर्टी kProfileIdNotDetails पर सेट होती है. पूरी तरह से कोड में बदले गए टैग वाले टीएलवी को डिकोड करते समय, ऐप्लिकेशन को इस तरह के टैग वाले किसी भी टीएलवी एलिमेंट को पढ़ने से पहले ImplicitProfileId
को सेट करना होगा. आम तौर पर, सही प्रोफ़ाइल आईडी, बोले जा रहे ऐप्लिकेशन के संदर्भ या प्रोटोकॉल पर निर्भर करता है.
अगर ImplicitProfileId
को kProfileIdNotspecified पर सेट किया जाता है और ऐसे में इंप्लिसिट तरीके से कोड में बदला गया कोई टैग मिलता है, तो रीडर WEAVE_ERROR_UNKNOWN_IMPLICIT_TLV_TAG गड़बड़ी दिखाएगा.
सुरक्षित एट्रिब्यूट
mBufEnd
const uint8_t * mBufEnd
mBufHandle
uintptr_t mBufHandle
mContainerType
TLVType mContainerType
mControlByte
uint16_t mControlByte
mElemLenOrVal
uint64_t mElemLenOrVal
mElemTag
uint64_t mElemTag
mLenRead
uint32_t mLenRead
mMaxLen
uint32_t mMaxLen
mReadPoint
const uint8_t * mReadPoint
सार्वजनिक फ़ंक्शन
CloseContainer
WEAVE_ERROR CloseContainer( TLVReader & containerReader )
OpenContainer() को कॉल करने के बाद, TLV कंटेनर की रीडिंग को पूरा करता है.
CloseContainer() तरीका OpenContainer() को कॉल करने के बाद, पैरंट TLVReader ऑब्जेक्ट की स्थिति को पहले जैसा करता है. OpenContainer() को किए जाने वाले हर कॉल के लिए, इसे CloseContainer() को एक मिलता-जुलता कॉल करना चाहिए. साथ ही, दोनों तरीकों में एक ही कंटेनर रीडर का रेफ़रंस पास करना चाहिए.
जब CloseContainer() के नतीजे दिखते हैं, तो पैरंट रीडर को कंटेनर के बाद आने वाले पहले एलिमेंट के ठीक पहले पोज़िशन किया जाता है. यहां से कोई ऐप्लिकेशन, बचे हुए किसी भी एलिमेंट पर जाने के लिए Next() तरीके का इस्तेमाल कर सकता है.
ऐप्लिकेशन, किसी भी समय पैरंट रीडर पर बंद CloseContainer() को कॉल कर सकते हैं, भले ही दिए गए कंटेनर के सभी एलिमेंट पढ़ लिए गए हों. CloseContainer() को कॉल किए जाने के बाद, ऐप्लिकेशन को कंटेनर रीडर को 'इनीशियलाइज़ नहीं किया गया' समझना चाहिए. साथ ही, उसे फिर से शुरू किए बिना इसका इस्तेमाल नहीं करना चाहिए.
जानकारी | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
पैरामीटर |
|
||||||||||||
रिटर्न वैल्यू |
|
DupBytes
WEAVE_ERROR DupBytes( uint8_t *& buf, uint32_t & dataLen )
यह फ़ंक्शन, मौजूदा बाइट या UTF8 स्ट्रिंग की वैल्यू वाला बफ़र तय करता है और उसे लौटाता है.
यह तरीका, के लिए एक बफ़र बनाता है और मौजूदा पोज़िशन पर, बाइट या UTF-8 स्ट्रिंग एलिमेंट से जुड़े डेटा की कॉपी दिखाता है. बफ़र की मेमोरी को Malloc() का इस्तेमाल करके हासिल किया जाता है. साथ ही, इसे कॉलर की मदद से तब खाली किया जाना चाहिए, जब इसकी ज़रूरत न हो.
जानकारी | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
पैरामीटर |
|
||||||||||||
रिटर्न वैल्यू |
|
DupString
WEAVE_ERROR DupString( char *& buf )
यह फ़ंक्शन, मौजूदा बाइट या UTF8 स्ट्रिंग की शून्य से खत्म होने वाली वैल्यू वाले बफ़र को असाइन करता है और दिखाता है.
यह तरीका, डेटा के लिए बफ़र बनाता है और मौजूदा पोज़िशन पर बाइट या UTF-8 स्ट्रिंग एलिमेंट से जुड़े डेटा की, शून्य से खत्म होने वाली कॉपी दिखाता है. बफ़र की मेमोरी को Malloc() का इस्तेमाल करके हासिल किया जाता है. साथ ही, इसे कॉलर की मदद से तब खाली किया जाना चाहिए, जब इसकी ज़रूरत न हो.
जानकारी | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
पैरामीटर |
|
||||||||||||
रिटर्न वैल्यू |
|
EnterContainer
WEAVE_ERROR EnterContainer( TLVType & outerContainerType )
TLV कंटेनर एलिमेंट के सदस्य पढ़ने के लिए, TLVReader ऑब्जेक्ट तैयार करता है.
EnterContainer() तरीका, TLV कंटेनर (स्ट्रक्चर, अरे या पाथ) के मेंबर एलिमेंट को पढ़ने के लिए, मौजूदा TLVReader ऑब्जेक्ट को तैयार करता है. EnterContainer() ऐप्लिकेशन को किए जाने वाले हर कॉल के लिए, आपको ExitContainer() को एक संबंधित कॉल करना होगा.
जब EnterContainer() को कहा जाता है, तो TLVReader ऑब्जेक्ट को पढ़ने के लिए, उसे कंटेनर एलिमेंट पर रखा जाना चाहिए. यह तरीका, तर्क के तौर पर TLVType वैल्यू का रेफ़रंस लेता है. इसका इस्तेमाल, कंटेनर को पढ़ते समय, रीडर के कॉन्टेक्स्ट को सेव करने के लिए किया जाएगा.
जब EnterContainer() मेथड दिखाया जाता है, तो रीडर को कंटेनर के पहले सदस्य से ठीक पहले रखा जाता है. बार-बार Next() को कॉल करने से, संग्रह के सदस्यों के ज़रिए पाठक को तब तक आगे भेजा जाएगा, जब तक कि पूरा अंक नहीं मिल जाता, इसके बाद रीडर को WEAVE_END_OF_TLV मिलेगा.
जब ऐप्लिकेशन किसी कंटेनर को पढ़ लेता है, तो वह ExitContainer() तरीके को कॉल करके, कंटेनर के बाद के एलिमेंट को पढ़ना जारी रख सकता है.
जानकारी | |||||
---|---|---|---|---|---|
पैरामीटर |
|
||||
रिटर्न वैल्यू |
|
ExitContainer
WEAVE_ERROR ExitContainer( TLVType outerContainerType )
टीएलवी कंटेनर की रीडिंग को पूरा करता है. साथ ही, कंटेनर के बाद एलिमेंट को पढ़ने के लिए, TLVReader ऑब्जेक्ट तैयार करता है.
ExitContainer() तरीका, EnterContainer() को कॉल करने के बाद, TLVReader ऑब्जेक्ट की स्थिति को पहले जैसा करता है. EnterContainer() को किए जाने वाले हर कॉल के लिए, आपको EnterContainer() तरीके से मिले कॉन्टेक्स्ट की वैल्यू को ExitContainer() के लिए कॉल करना होगा.
जब ExitContainer() नतीजा दिखाता है, तब रीडर को कंटेनर के बाद आने वाले पहले एलिमेंट के ठीक पहले रखा जाता है. यहां से कोई ऐप्लिकेशन, बचे हुए किसी भी एलिमेंट पर जाने के लिए Next() तरीके का इस्तेमाल कर सकता है.
EnterContainer() को कॉल करने के बाद, ऐप्लिकेशन किसी भी समय रीडर पर ExitContainer() को कॉल कर सकते हैं, भले ही दिए गए कंटेनर के सभी एलिमेंट पढ़ लिए गए हों.
जानकारी | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
पैरामीटर |
|
||||||||||||
रिटर्न वैल्यू |
|
पाएं
WEAVE_ERROR Get( bool & v )
मौजूदा एलिमेंट की वैल्यू बूल टाइप के तौर पर पाएं.
जानकारी | |||||
---|---|---|---|---|---|
पैरामीटर |
|
||||
रिटर्न वैल्यू |
|
पाएं
WEAVE_ERROR Get( int8_t & v )
मौजूदा एलिमेंट की वैल्यू को, साइन किए गए 8-बिट पूर्णांक के तौर पर पाएं.
अगर कोड में बदला गया पूर्णांक की वैल्यू, आउटपुट डेटा टाइप से ज़्यादा है, तो नतीजे के तौर पर मिली वैल्यू को काट दिया जाएगा.
जानकारी | |||||
---|---|---|---|---|---|
पैरामीटर |
|
||||
रिटर्न वैल्यू |
|
पाएं
WEAVE_ERROR Get( int16_t & v )
मौजूदा एलिमेंट की वैल्यू को, साइन किए गए 16-बिट पूर्णांक के तौर पर पाएं.
अगर कोड में बदला गया पूर्णांक की वैल्यू, आउटपुट डेटा टाइप से ज़्यादा है, तो नतीजे के तौर पर मिली वैल्यू को काट दिया जाएगा.
जानकारी | |||||
---|---|---|---|---|---|
पैरामीटर |
|
||||
रिटर्न वैल्यू |
|
पाएं
WEAVE_ERROR Get( int32_t & v )
मौजूदा एलिमेंट की वैल्यू को, साइन किए गए 32-बिट पूर्णांक के तौर पर पाएं.
अगर कोड में बदला गया पूर्णांक की वैल्यू, आउटपुट डेटा टाइप से ज़्यादा है, तो नतीजे के तौर पर मिली वैल्यू को काट दिया जाएगा.
जानकारी | |||||
---|---|---|---|---|---|
पैरामीटर |
|
||||
रिटर्न वैल्यू |
|
पाएं
WEAVE_ERROR Get( int64_t & v )
मौजूदा एलिमेंट की वैल्यू को, साइन किए गए 64-बिट पूर्णांक के तौर पर पाएं.
अगर कोड में बदला गया पूर्णांक की वैल्यू, आउटपुट डेटा टाइप से ज़्यादा है, तो नतीजे के तौर पर मिली वैल्यू को काट दिया जाएगा.
जानकारी | |||||
---|---|---|---|---|---|
पैरामीटर |
|
||||
रिटर्न वैल्यू |
|
पाएं
WEAVE_ERROR Get( uint8_t & v )
मौजूदा एलिमेंट की वैल्यू को, 8-बिट बिना साइन वाले पूर्णांक के रूप में पाएं.
अगर कोड में बदला गया पूर्णांक की वैल्यू, आउटपुट डेटा टाइप से ज़्यादा है, तो नतीजे के तौर पर मिली वैल्यू को काट दिया जाएगा. इसी तरह, अगर कोड में बदले गए पूर्णांक की वैल्यू नेगेटिव है, तो वैल्यू को 'साइन नहीं किया गया' में बदल दिया जाएगा.
जानकारी | |||||
---|---|---|---|---|---|
पैरामीटर |
|
||||
रिटर्न वैल्यू |
|
पाएं
WEAVE_ERROR Get( uint16_t & v )
मौजूदा एलिमेंट की वैल्यू को, 16-बिट बिना साइन वाले पूर्णांक के रूप में पाएं.
अगर कोड में बदला गया पूर्णांक की वैल्यू, आउटपुट डेटा टाइप से ज़्यादा है, तो नतीजे के तौर पर मिली वैल्यू को काट दिया जाएगा. इसी तरह, अगर कोड में बदले गए पूर्णांक की वैल्यू नेगेटिव है, तो वैल्यू को 'साइन नहीं किया गया' में बदल दिया जाएगा.
जानकारी | |||||
---|---|---|---|---|---|
पैरामीटर |
|
||||
रिटर्न वैल्यू |
|
पाएं
WEAVE_ERROR Get( uint32_t & v )
मौजूदा एलिमेंट की वैल्यू को, 32-बिट बिना साइन वाले पूर्णांक के रूप में पाएं.
अगर कोड में बदला गया पूर्णांक की वैल्यू, आउटपुट डेटा टाइप से ज़्यादा है, तो नतीजे के तौर पर मिली वैल्यू को काट दिया जाएगा. इसी तरह, अगर कोड में बदले गए पूर्णांक की वैल्यू नेगेटिव है, तो वैल्यू को 'साइन नहीं किया गया' में बदल दिया जाएगा.
जानकारी | |||||
---|---|---|---|---|---|
पैरामीटर |
|
||||
रिटर्न वैल्यू |
|
पाएं
WEAVE_ERROR Get( uint64_t & v )
मौजूदा एलिमेंट की वैल्यू, 64-बिट बिना साइन वाले पूर्णांक के रूप में पाएं.
अगर कोड में बदले गए पूर्णांक की वैल्यू नेगेटिव है, तो वैल्यू को 'साइन नहीं किया गया' में बदल दिया जाएगा.
जानकारी | |||||
---|---|---|---|---|---|
पैरामीटर |
|
||||
रिटर्न वैल्यू |
|
पाएं
WEAVE_ERROR Get( float & v )
पाएं
WEAVE_ERROR Get( double & v )
मौजूदा एलिमेंट की वैल्यू को दो बार सटीक फ़्लोटिंग पॉइंट नंबर के तौर पर पाएं.
जानकारी | |||||
---|---|---|---|---|---|
पैरामीटर |
|
||||
रिटर्न वैल्यू |
|
GetBufHandle
uintptr_t GetBufHandle( void ) const
GetBytes
WEAVE_ERROR GetBytes( uint8_t *buf, uint32_t bufSize )
मौजूदा बाइट या UTF8 स्ट्रिंग एलिमेंट की वैल्यू पाएं.
इनपुट बफ़र साइज़ तय करने के लिए, GetBytes() को कॉल करने से पहले GetLength() तरीके को कॉल करें.
जानकारी | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
पैरामीटर |
|
||||||||||
रिटर्न वैल्यू |
|
GetContainerType
TLVType GetContainerType( void ) const
उस कंटेनर का टाइप दिखाता है जिसमें TLVReader अभी पढ़ रहा है.
GetContainerType() का इस्तेमाल करके, TLV कंटेनर का टाइप दिखाया जाता है जिसमें TLVReader पढ़ा जा रहा है. अगर TLVReader को TLV एन्कोडिंग के सबसे बाहरी स्तर पर रखा जाता है (उदाहरण के लिए, सबसे बाहरी TLV एलिमेंट से पहले, उस पर या बाद में), तो यह तरीका kTLVType_Notspecific मिलेगा.
जानकारी | |
---|---|
लौटाए गए सामान |
मौजूदा कंटेनर का TLVType या अगर TLVReader को किसी कंटेनर के अंदर नहीं रखा गया है, तो kTLVType_Notspecific है.
|
GetControlByte
uint16_t GetControlByte( void ) const
मौजूदा TLV एलिमेंट से जुड़ा कंट्रोल बाइट दिखाता है.
आम तौर पर, किसी को कंट्रोल बाइट के बारे में जानने की ज़रूरत नहीं होती. साथ ही, टीएलवी को सिर्फ़ अंदरूनी तौर पर लागू करके ही ऐक्सेस किया जा सकता है. हालांकि, कंट्रोल बाइट का ऐक्सेस होने से, टीएलवीडीबगयूटिलिटी की मदद से डीबग करने में मदद मिलती है. टीएलवी बफ़र कॉन्टेंट को प्रिंट करते समय, ऐसे टैग कंट्रोल बाइट को डिकोड करने की कोशिश की जाती है.
जानकारी | |
---|---|
लौटाए गए सामान |
साइन न किया गया एक पूर्णांक, जिसमें मौजूदा TLV एलिमेंट से जुड़ा कंट्रोल बाइट होता है. अगर रीडर को किसी एलिमेंट पर नहीं रखा गया है, तो kTLVControlByte_NotAllowed दिखाता है.
|
GetDataPtr
WEAVE_ERROR GetDataPtr( const uint8_t *& data )
टीएलवी बाइट या UTF8 स्ट्रिंग एलिमेंट के शुरुआती कोड में बदले गए बाइट के लिए पॉइंटर पाएं.
यह तरीका दिए गए इनपुट बफ़र में, कोड में बदली गई स्ट्रिंग की वैल्यू के लिए डायरेक्ट पॉइंटर देता है. इस तरीके का इस्तेमाल करने के लिए ज़रूरी है कि स्ट्रिंग की पूरी वैल्यू एक ही बफ़र में मौजूद हो. ऐसा न होने पर, यह तरीका WEAVE_ERROR_TLV_UNDERRUN दिखाता है. इससे कई बार एक साथ काम न करने वाले बफ़र से डेटा पढ़ते समय, इसका इस्तेमाल सीमित तौर पर किया जा सकता है.
जानकारी | |||||||||
---|---|---|---|---|---|---|---|---|---|
पैरामीटर |
|
||||||||
रिटर्न वैल्यू |
|
GetLength
uint32_t GetLength( void ) const
मौजूदा TLV एलिमेंट से जुड़े डेटा की लंबाई दिखाता है.
डेटा की लंबाई सिर्फ़ UTF8 स्ट्रिंग या बाइट स्ट्रिंग टाइप के एलिमेंट पर लागू होती है. UTF8 स्ट्रिंग के लिए, दिखाई गई वैल्यू, स्ट्रिंग में मौजूद बाइट की संख्या होती है, न कि वर्णों की संख्या.
जानकारी | |
---|---|
लौटाए गए सामान |
मौजूदा TLV एलिमेंट से जुड़े डेटा की लंबाई (बाइट में). इसके अलावा, अगर मौजूदा एलिमेंट कोई UTF8 स्ट्रिंग या बाइट स्ट्रिंग नहीं है या रीडर को किसी एलिमेंट पर पोज़िशन नहीं किया गया है, तो 0.
|
GetLengthRead
uint32_t GetLengthRead( void ) const
यह फ़ंक्शन, रीडर के शुरू होने के बाद से अब तक पढ़े गए बाइट की कुल संख्या दिखाता है.
जानकारी | |
---|---|
लौटाए गए सामान |
रीडर को शुरू किए जाने के बाद से अब तक पढ़े गए बाइट की कुल संख्या.
|
GetReadPoint
const uint8_t * GetReadPoint( void ) const
इनपुट बफ़र में उस पॉइंट की जानकारी देता है जो रीडर की मौजूदा पोज़िशन से मेल खाता है.
जानकारी | |
---|---|
लौटाए गए सामान |
इनपुट बफ़र में मौजूद एक पॉइंटर, जो रीडर की मौजूदा पोज़िशन से मेल खाता है.
|
GetRemainingLength
uint32_t GetRemainingLength( void ) const
पढ़े जा सकने वाले बाइट की कुल संख्या दिखाता है.
जानकारी | |
---|---|
लौटाए गए सामान |
पढ़ने के लिए तय की गई ज़्यादा से ज़्यादा लंबाई तक पढ़े जा सकने वाले बाइट की कुल संख्या.
|
GetString
WEAVE_ERROR GetString( char *buf, uint32_t bufSize )
मौजूदा बाइट या UTF8 स्ट्रिंग एलिमेंट की वैल्यू, खत्म की गई शून्य स्ट्रिंग के तौर पर पाएं.
इनपुट बफ़र साइज़ तय करने के लिए, GetBytes() को कॉल करने से पहले GetLength() तरीके को कॉल करें. इनपुट बफ़र कम से कम एक बाइट का होना चाहिए, जो शून्य वर्ण को फ़िट करने वाली स्ट्रिंग की लंबाई से ज़्यादा हो.
जानकारी | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
पैरामीटर |
|
||||||||||
रिटर्न वैल्यू |
|
GetTag
uint64_t GetTag( void ) const
मौजूदा टीएलवी एलिमेंट से जुड़ा टैग दिखाता है.
टैग टाइप तय करने और अलग-अलग टैग फ़ील्ड वैल्यू निकालने के लिए, GetTag() से मिलने वाली वैल्यू का इस्तेमाल, टैग यूटिलिटी फ़ंक्शन (IsProfileTag(), IsContextTag(), ProfileIdFromTag() वगैरह) के साथ किया जा सकता है.
जानकारी | |
---|---|
लौटाए गए सामान |
साइन नहीं किया गया एक पूर्णांक, जिसमें मौजूदा TLV एलिमेंट से जुड़े टैग के बारे में जानकारी होती है.
|
GetType
TLVType GetType( void ) const
शुरू करें
void Init( const TLVReader & aReader )
शुरू करें
void Init( const uint8_t *data, uint32_t dataLen )
शुरू करें
void Init( PacketBuffer *buf, uint32_t maxLen )
एक ही PaetBuffer से पढ़ने के लिए, TLVReader ऑब्जेक्ट को शुरू करता है.
पार्स करना, बफ़र की शुरुआती स्थिति (buf->DataStart()) पर शुरू होता है और बफ़र में डेटा के खत्म होने (जैसा कि buf->Datalen() से दिखाया गया है) या maxLen बाइट तक पार्स होने तक जारी रहता है.
जानकारी | |||||
---|---|---|---|---|---|
पैरामीटर |
|
शुरू करें
void Init( PacketBuffer *buf, uint32_t maxLen, bool allowDiscontiguousBuffers )
एक या एक से ज़्यादा BoxetBuffers से पढ़ने के लिए, TLVReader ऑब्जेक्ट को शुरू करता है.
पार्स करना, शुरुआती बफ़र की शुरुआती पोज़िशन (buf->DataStart()) पर शुरू होता है. अगर allowDiscotiguousBuffers सही हो, तो उपयोगकर्ता अपने Next() पॉइंटर से जोड़े गए बफ़र की चेन से आगे बढ़ जाएगा. पार्स करना तब तक जारी रहता है, जब तक बफ़र चेन का पूरा डेटा इस्तेमाल नहीं हो जाता (जैसा कि buf->Datalen() से दिखाया गया है) या maxLen बाइट को पार्स कर दिया जाता है.
जानकारी | |||||||
---|---|---|---|---|---|---|---|
पैरामीटर |
|
आगे बढ़ें
WEAVE_ERROR Next( void )
TLVReader ऑब्जेक्ट को, पढ़े जाने वाले अगले TLV एलिमेंट पर ले जाता है.
Next() तरीका, रीडर ऑब्जेक्ट को टीएलवी एन्कोडिंग में अगले एलिमेंट पर पोज़ीशन करता है, जो उसी कंटेनमेंट कॉन्टेक्स्ट में रहता है. खास तौर पर, अगर रीडर को कोड में बदलने के लिए टीएलवी के सबसे बाहरी स्तर पर रखा गया है, तो Next() को कॉल करने से पाठक को अगले, सबसे ऊपर वाले एलिमेंट पर भेज दिया जाएगा. अगर रीडर को किसी टीएलवी कंटेनर एलिमेंट (स्ट्रक्चर, ऐरे या पाथ) के अंदर रखा जाता है, तो Next() को कॉल करने पर, रीडर कंटेनर के अगले मेंबर एलिमेंट पर पहुंच जाएगा.
Next() पाठक की गति को मौजूदा कंटेनमेंट कॉन्टेक्स्ट तक सीमित कर देता है, इसलिए Next() को कॉल करने से, जब रीडर को किसी कंटेनर एलिमेंट पर पोज़ किया जाता है, तो वह एलिमेंट के बाद एलिमेंट को स्किप कर देगा (और नेस्ट किए गए कंटेनर को छोड़ने के बाद, एलिमेंट को स्किप कर देगा.)
जब किसी कंटेनमेंट कॉन्टेक्स्ट में कोई और एलिमेंट नहीं होता है, तो Next() तरीका WEAVE_END_OF_TLV गड़बड़ी दिखाएगा और रीडर की जगह में कोई बदलाव नहीं करेगा.
जानकारी | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
रिटर्न वैल्यू |
|
आगे बढ़ें
WEAVE_ERROR Next( TLVType expectedType, uint64_t expectedTag )
यह TLVReader ऑब्जेक्ट को, पढ़े जाने वाले अगले TLV एलिमेंट में ले जाता है. इससे नए एलिमेंट के टाइप और टैग के बारे में पता चलता है.
Next(TLVTypeexpectedType, uint64_texpectedTag) तरीका, सुविधा का एक तरीका है, जिसका व्यवहार Next() जैसा ही है. हालांकि, यह यह भी पुष्टि करता है कि नए TLV एलिमेंट का टाइप और टैग, दिए गए तर्कों से मेल खाता है.
जानकारी | |||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
पैरामीटर |
|
||||||||||||||||
रिटर्न वैल्यू |
|
OpenContainer
WEAVE_ERROR OpenContainer( TLVReader & containerReader )
TLV कंटेनर एलिमेंट के सदस्यों को पढ़ने के लिए, एक नए TLVReader ऑब्जेक्ट को शुरू करता है.
OpenContainer() का इस्तेमाल करके, TLV कंटेनर यानी स्ट्रक्चर, ऐरे या पाथ के मेंबर एलिमेंट को पढ़ने के लिए, एक नया TLVReader ऑब्जेक्ट शुरू किया जाता है. जब OpenContainer() को कॉल किया जाता है, तो मौजूदा TLVReader ऑब्जेक्ट को, पढ़ने के लिए कंटेनर एलिमेंट पर रखा जाना चाहिए. यह तरीका अपने तर्क के तौर पर, एक ऐसे नए रीडर का रेफ़रंस लेता है जिसे कंटेनर को पढ़ने के लिए शुरू किया जाएगा. इस रीडर को कंटेनर रीडर के तौर पर जाना जाता है. वहीं, जिस रीडर पर OpenContainer() को कॉल किया जाता है उसे पैरंट रीडर कहा जाता है.
जब OpenContainer() तरीका लौटाता है, तो कंटेनर रीडर को कंटेनर के पहले सदस्य से ठीक पहले पोज़िशन किया जाता है. कंटेनर रीडर पर Next() को कॉल करने से, कलेक्शन के सदस्य आगे बढ़ते जाएंगे और आखिर तक पहुंचते हैं. इसके बाद, रीडर को WEAVE_END_OF_TLV मिलेगा.
कंटेनर रीडर के खुले होने पर, ऐप्लिकेशन को कॉल करने या पैरंट रीडर की स्थिति में कोई बदलाव नहीं करने चाहिए. जब कोई ऐप्लिकेशन कंटेनर रीडर का इस्तेमाल कर लेता है, तो उसे पैरंट रीडर पर CloseContainer() को कॉल करके कंटेनर रीडर को एक तर्क के रूप में पास करके उसे बंद करना होगा. ऐप्लिकेशन दिए गए कंटेनर में मौजूद सभी एलिमेंट को पढ़े बिना या उन्हें पढ़े बिना, किसी भी समय कंटेनर रीडर को बंद कर सकते हैं. कंटेनर रीडर बंद होने के बाद, ऐप्लिकेशन में पैरंट रीडर का इस्तेमाल किया जा सकता है.
कंटेनर रीडर, पैरंट रीडर से कई कॉन्फ़िगरेशन प्रॉपर्टी इनहेरिट करता है. इनके उदाहरण हैं:
- इंप्लिसिट प्रोफ़ाइल आईडी (ImplicitProfileId)
- ऐप्लिकेशन डेटा पॉइंटर (AppData)
- GetNextBuffer फ़ंक्शन पॉइंटर
जानकारी | |||||
---|---|---|---|---|---|
पैरामीटर |
|
||||
रिटर्न वैल्यू |
|
स्किप करें
WEAVE_ERROR Skip( void )
TLVReader ऑब्जेक्ट को, मौजूदा TLV एलिमेंट के तुरंत बाद ले जाता है.
स्किप() तरीका मौजूदा TLV एलिमेंट के बाद, रीडर ऑब्जेक्ट को इस तरह से सेट करता है कि Next() को बाद में किया जाने वाला कॉल, रीडर को नीचे दिए गए एलिमेंट पर भेज देगा. Next() की तरह ही, अगर रीडर को कॉल के समय किसी कंटेनर एलिमेंट पर रखा जाता है, तो कंटेनर के सदस्यों को स्किप कर दिया जाएगा. अगर रीडर को किसी एलिमेंट पर नहीं रखा गया है, तो उसकी पोज़िशन में कोई बदलाव नहीं होता.
जानकारी | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
रिटर्न वैल्यू |
|
VerifyEndOfContainer
WEAVE_ERROR VerifyEndOfContainer( void )
इससे यह पुष्टि होती है कि TVLReader ऑब्जेक्ट, TLV कंटेनर के आखिर में है.
VerifyEndOfContainer() का इस्तेमाल करके, यह पुष्टि की जाती है कि मौजूदा TLV कंटेनर में, पढ़ने के लिए कोई और TLV एलिमेंट नहीं है. यह एक सुविधा का तरीका है, जो Next() को कॉल करने और WEAVE_END_OF_TLV की रिटर्न वैल्यू की जांच करने के बराबर है.
जानकारी | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
रिटर्न वैल्यू |
|
सुरक्षित किए गए फ़ंक्शन
ClearElementState
void ClearElementState( void )
ElementType
TLVElementType ElementType( void ) const
यह एक निजी तरीका है, जो mControlByte से TLVElementType दिखाता है.
EnsureData
WEAVE_ERROR EnsureData( WEAVE_ERROR noDataErr )
GetElementHeadLength
WEAVE_ERROR GetElementHeadLength( uint8_t & elemHeadBytes ) const
यह एक निजी तरीका है, जिसका इस्तेमाल टीएलवी एलिमेंट हेड की लंबाई का पता लगाने के लिए किया जाता है.
IsContainerOpen
bool IsContainerOpen( void ) const
ReadData
WEAVE_ERROR ReadData( uint8_t *buf, uint32_t len )
ReadElement
WEAVE_ERROR ReadElement( void )
ReadTag
uint64_t ReadTag( TLVTagControl tagControl, const uint8_t *& p )
SetContainerOpen
void SetContainerOpen( bool aContainerOpen )
SkipData
WEAVE_ERROR SkipData( void )
डेस्टिनेशन बफ़र के बिना, मौजूदा टीएलवी में मौजूद किसी भी डेटा को पढ़ें और उसे छोड़ दें.
जानकारी | |||||
---|---|---|---|---|---|
रिटर्न वैल्यू |
|
SkipToEndOfContainer
WEAVE_ERROR SkipToEndOfContainer( void )
VerifyElement
WEAVE_ERROR VerifyElement( void )
सुरक्षित स्टैटिक फ़ंक्शन
FailGetNextBuffer
WEAVE_ERROR FailGetNextBuffer( TLVReader & reader, uintptr_t & bufHandle, const uint8_t *& bufStart, uint32_t & bufLen )
GetNextPacketBuffer
WEAVE_ERROR GetNextPacketBuffer( TLVReader & reader, uintptr_t & bufHandle, const uint8_t *& bufStart, uint32_t & bufLen )