nl:: वेव:: TLV:: TLVReader
#include <src/lib/core/WeaveTLV.h>
Weave TLV फ़ॉर्मैट में कोड में बदले गए डेटा के लिए, मेमोरी पार्सर की सुविधा देता है.
खास जानकारी
TLVReader, Weave TLV डेटा के लिए सिर्फ़ आगे, "पुल-स्टाइल" पार्सर लागू करता है. TLVReader ऑब्जेक्ट एक कर्सर के रूप में काम करता है जिसका इस्तेमाल TLV एलिमेंट के क्रम के साथ फिर से करने और उनके कॉन्टेंट को समझने के लिए किया जा सकता है. किसी एलिमेंट पर रखे जाने पर, ऐप्लिकेशन, रीडर के Get() मेथड को कॉल कर सकता है. ऐसा करके, मौजूदा एलिमेंट के टाइप और टैग की क्वेरी की जा सकती है और उससे जुड़े वैल्यू को निकाला जा सकता है. रीडर के Next() मेथड का इस्तेमाल करके, एलिमेंट से एलिमेंट तक जाया जाता है.
TLVReader ऑब्जेक्ट को हमेशा, TLV एलिमेंट के पहले या बाद में रखा जाता है. पहली बार शुरू करने पर, TLVReader को एन्कोडिंग के पहले एलिमेंट के ठीक पहले रखा जाता है. पढ़ना शुरू करने के लिए, ऐप्लिकेशन को रीडर पर पहले एलिमेंट पर रखने के लिए, Next() तरीके से शुरुआती कॉल करना होगा. जब किसी कंटेनर एलिमेंट में कोई स्ट्रक्चर या ढांचे होता है, तो कंटेनर की सामग्री के ज़रिए दोहराने के लिए Openकंटेनर() या Enterकंटेनर() मेथड का इस्तेमाल किया जा सकता है.
जब रीडर TLV एन्कोडिंग के आखिर में या किसी कंटेनर के आखिरी एलिमेंट तक पहुंचता है, तो यह Next() तरीके से WEAVE_END_OF_TLV गड़बड़ी दिखाकर ऐप्लिकेशन को सिग्नल करता है. रीडर, WEAVE_END_OF_TLV को तब तक रिटर्न करता रहेगा, जब तक कि उसे फिर से चालू नहीं किया जाता या मौजूदा कंटेनर को बंद कर दिया जाता है (ClosedCONTAINER() / ExitCONTAINER() के ज़रिए.
TLVReader ऑब्जेक्ट, सीधे तय किए गए इनपुट बफ़र से या एक या एक से ज़्यादा PacketBuffers की चेन से डेटा को पार्स कर सकता है. इसके अलावा, ऐप्लिकेशन आर्बिट्ररी सोर्स (जैसे कि सॉकेट या सीरियल पोर्ट) से, रीडर को डेटा फ़ीड करने के लिए, 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(*) एक ऐसा फ़ंक्शन जिसका इस्तेमाल ज़्यादा TLV डेटा पाने के लिए किया जा सकता है. |
सार्वजनिक विशेषताएं |
|
---|---|
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)
|
टीएलवी बाइट या यूटीएफ़ 8 स्ट्रिंग एलिमेंट के शुरुआती एन्कोड किए गए बाइट का पॉइंटर पाएं.
|
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
मौजूदा TLV एलिमेंट से जुड़ा टैग दिखाता है.
|
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
एक सिंगल PacketBuffer से पढ़ने के लिए, TLVReader ऑब्जेक्ट को शुरू करता है.
|
Init(PacketBuffer *buf, uint32_t maxLen, bool allowDiscontiguousBuffers)
|
void
एक या एक से ज़्यादा PacketBuffers से पढ़ने के लिए, 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 से TLV ElementType दिखाता है.
|
EnsureData(WEAVE_ERROR noDataErr)
|
|
GetElementHeadLength(uint8_t & elemHeadBytes) const
|
यह एक निजी तरीका है, जिसका इस्तेमाल TLV एलिमेंट के सिर की लंबाई की गिनती करने के लिए किया जाता है.
|
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)
एक ऐसा फ़ंक्शन जिसका इस्तेमाल ज़्यादा TLV डेटा पाने के लिए किया जा सकता है.
इस तरह के फ़ंक्शन का इस्तेमाल, TLVReader के इनपुट डेटा को फ़ीड करने के लिए किया जाता है. कॉल करने पर, रीडर को पार्स करने या यह संकेत देने के लिए कि ज़्यादा डेटा उपलब्ध नहीं है, फ़ंक्शन से अतिरिक्त डेटा जनरेट होने की उम्मीद है.
जानकारी | |||||||||
---|---|---|---|---|---|---|---|---|---|
पैरामीटर |
|
||||||||
सामान लौटाने की वैल्यू |
|
सार्वजनिक विशेषताएं
ऐप्लिकेशन का डेटा
void * AppData
एक पॉइंटर फ़ील्ड, जिसका इस्तेमाल ऐप्लिकेशन-खास डेटा के लिए किया जा सकता है.
GetNextBuffer
GetNextBufferFunct GetNextBuffer
फ़ंक्शन के लिए पॉइंटर, जो TLVReader ऑब्जेक्ट के लिए इनपुट डेटा बनाएगा.
अगर इसे शून्य (डिफ़ॉल्ट वैल्यू) पर सेट किया जाता है, तो पाठक यह मानेगा कि आगे कोई इनपुट डेटा उपलब्ध नहीं है.
GetNextBuffer को किसी ऐप्लिकेशन से किसी भी समय सेट किया जा सकता है, लेकिन यह आम तौर पर रीडर के शुरू करने पर सेट होता है.
GetNextBuffer फ़ंक्शन को लागू करने के बारे में ज़्यादा जानकारी के लिए GetNextBufferFunct टाइप की परिभाषा देखें.
ImplicitProfileId
uint32_t ImplicitProfileId
इंप्लिसिट फ़ॉर्म में एन्कोड किए गए प्रोफ़ाइल टैग के लिए, इस्तेमाल करने के लिए प्रोफ़ाइल आईडी.
जब पाठक को किसी खास प्रोफ़ाइल वाला टैग मिलता है जिसे इंप्लिसिट फ़ॉर्म में एन्कोड किया गया हो, तो वह टैग के लिए उस प्रोफ़ाइल आईडी के तौर पर ImplicitProfileId
प्रॉपर्टी की वैल्यू का इस्तेमाल करता है.
डिफ़ॉल्ट रूप से, ImplicitProfileId
प्रॉपर्टी kProfileIdNot specified पर सेट होती है. ऐसे टैग वाले टीएलवी को डीकोड करते समय, जिनमें इंप्लिसिट कोड वाले टैग शामिल होते हैं, ImplicitProfileId
को ऐसे टैग वाले TLV एलिमेंट को पढ़ने से पहले सेट करना ज़रूरी है. सही प्रोफ़ाइल आईडी आम तौर पर, इस्तेमाल किए जा रहे ऐप्लिकेशन या प्रोटोकॉल पर निर्भर करता है.
अगर ImplicitProfileId
को kProfileIdIdNot पर सेट किया जाता है, तो इंप्लिसिट तरीके से कोड में बदला गया टैग मिलता है, रीडर 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
एममैक्सलेन
uint32_t mMaxLen
mReadPoint
const uint8_t * mReadPoint
सार्वजनिक फ़ंक्शन
कंटेनर बंद करें
WEAVE_ERROR CloseContainer( TLVReader & containerReader )
OpenCONTAINER() पर कॉल करने के बाद, TLV कंटेनर की रीडिंग पूरी करता है.
CloseContainer() तरीके से, Openकंटेनर() को कॉल करने के बाद, पैरंट TLVReader ऑब्जेक्ट की स्थिति को पहले जैसा कर दिया जाता है. Openकंटेनर() ऐप्लिकेशन को किए जाने वाले हर कॉल के लिए, दोनों को एक ही कंटेनर रीडर के साथ, Closedकंटेनर() पर लागू करना ज़रूरी है.
ClosedCONTAINER() के रिटर्न होने पर, पैरंट रीडर को कंटेनर के बाद आने वाले पहले एलिमेंट के ठीक पहले ले जाया जाता है. इस पॉइंट से, ऐप्लिकेशन बाकी बचे एलिमेंट से आगे बढ़ने के लिए Next() तरीके का इस्तेमाल कर सकता है.
ऐप्लिकेशन, पैरंट रीडर पर किसी भी समय ClosedCONTAINER() को बंद कर सकते हैं, भले ही दिए गए कंटेनर के सभी एलिमेंट पढ़ लिए गए हों. ClosedCONTAINER() को कॉल करने के बाद, ऐप्लिकेशन को कंटेनर रीडर और #39;de-Initialed' पर विचार करना चाहिए. इसे फिर से शुरू किए बिना इसका इस्तेमाल नहीं करना चाहिए.
जानकारी | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
पैरामीटर |
|
||||||||||||
सामान लौटाने की वैल्यू |
|
डपबाइट
WEAVE_ERROR DupBytes( uint8_t *& buf, uint32_t & dataLen )
तय होता है और मौजूदा बाइट या UTF8 स्ट्रिंग की वैल्यू वाला बफ़र देता है.
इस तरीके से बफ़र होता है और मौजूदा स्थिति में बाइट या UTF-8 स्ट्रिंग एलिमेंट से जुड़े डेटा की कॉपी मिलती है. बफ़र के लिए मेमोरी, Malloc() की मदद से ली जाती है. साथ ही, ज़रूरत पड़ने पर इसे कॉल करने वाले (कॉलर) को Free() से खाली किया जाना चाहिए.
जानकारी | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
पैरामीटर |
|
||||||||||||
सामान लौटाने की वैल्यू |
|
डपस्ट्रिंग
WEAVE_ERROR DupString( char *& buf )
मौजूदा बाइट या UTF8 स्ट्रिंग की शून्य नहीं की गई वैल्यू वाले बफ़र को बताता है और देता है.
इस तरीके से बफ़र बनता है और मौजूदा स्थिति में बाइट या UTF-8 स्ट्रिंग एलिमेंट से जुड़े डेटा की शून्य हो गई कॉपी मिलती है. बफ़र के लिए मेमोरी, Malloc() की मदद से ली जाती है. साथ ही, ज़रूरत पड़ने पर इसे कॉल करने वाले (कॉलर) को Free() से खाली किया जाना चाहिए.
जानकारी | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
पैरामीटर |
|
||||||||||||
सामान लौटाने की वैल्यू |
|
कंटेनर डालें
WEAVE_ERROR EnterContainer( TLVType & outerContainerType )
TLV कंटेनर एलिमेंट के सदस्यों को पढ़ने के लिए, TLVReader ऑब्जेक्ट तैयार करता है.
Enterकंटेनर() तरीका TLVReader ऑब्जेक्ट को TLV कंटेनर (अरे, पाथ या पाथ) के सदस्य एलिमेंट पढ़ने के लिए तैयार करता है. EnterCONTAINER() ऐप्लिकेशन पर किए जाने वाले हर कॉल के लिए, Exitकंटेनर() से जुड़ा कॉल करना ज़रूरी है.
जब EnterCONTAINER() को TLVReader ऑब्जेक्ट कहा जाता है, तो उसे पढ़ने के लिए कंटेनर एलिमेंट पर पोज़िशन करना ज़रूरी है. इस तरीके को एक TLVType मान के रूप में एक तर्क के रूप में लिया जाता है. इसका इस्तेमाल रीडर के संदर्भ को सेव करते समय किया जाता है, जब वह कंटेनर को पढ़ रहा होता है.
EnterCONTAINER() तरीके से रिटर्न करने पर, रीडर को कंटेनर के पहले सदस्य के पहले सेट किया जाता है. बार-बार Next() को कॉल करने पर, रीडर को कलेक्शन के सदस्यों के आखिर तक तब तक भेजा जाएगा, जब तक कि वह खत्म नहीं हो जाता. इस दौरान, रीडर WEAVE_END_OF_TLV दिखाएगा.
ऐप्लिकेशन में किसी कंटेनर को पढ़ने के बाद, वह ExitCONTAINER() तरीके को कॉल करके, कंटेनर के बाद एलिमेंट को पढ़ना जारी रख सकता है.
जानकारी | |||||
---|---|---|---|---|---|
पैरामीटर |
|
||||
सामान लौटाने की वैल्यू |
|
प्रोग्राम से बाहर निकलें
WEAVE_ERROR ExitContainer( TLVType outerContainerType )
TLV कंटेनर की रीडिंग पूरी करता है और कंटेनर के बाद एलिमेंट पढ़ने के लिए, TLVReader ऑब्जेक्ट तैयार करता है.
ExitCONTAINER() मैथड से, Enterकंटेनर() को कॉल करने के बाद, TLVReader ऑब्जेक्ट की स्थिति को पहले जैसा कर दिया जाता है. EnterCONTAINER() ऐप्लिकेशन के हर कॉल के लिए, EnterCONTAINER() तरीके से लौटाए गए कॉन्टेक्स्ट वैल्यू को पास करके, उससे जुड़ा कॉल करना चाहिए.
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() तरीके को कॉल करें.
जानकारी | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
पैरामीटर |
|
||||||||||
सामान लौटाने की वैल्यू |
|
Get ब्राउज़रType
TLVType GetContainerType( void ) const
यह उस कंटेनर टाइप को दिखाता है जिसके अंदर TLVReader की सुविधा अभी पढ़ रही है.
GetCONTAINERType() मैथड में, उस टीएलवी कंटेनर का टाइप दिखता है जिसमें TLVReader रीडिंग ले रहा है. अगर TLVReader को किसी TLV एन्कोडिंग के बाहरी-सबसे ऊपर के लेवल पर रखा गया है (यानी कि सबसे बाहरी TLV एलिमेंट से पहले, उसके बाद या बाद में), तो यह तरीका kTLVType_Not specified को दिखाएगा.
जानकारी | |
---|---|
लौटाए गए सामान |
मौजूदा कंटेनर की TLVType या kTLVType_Not specified, अगर किसी कंटेनर में TLVReader को पोज़िशन नहीं किया गया है.
|
GetControlByte
uint16_t GetControlByte( void ) const
मौजूदा TLV एलिमेंट से जुड़े कंट्रोल बाइट दिखाता है.
आम तौर पर, किसी को भी कभी कंट्रोल बाइट के बारे में जानने की ज़रूरत नहीं होती है और सिर्फ़ टीएलवी के इंटरनल इंप्लिमेंटेशन के पास इसका ऐक्सेस होना चाहिए. हालांकि, टीएलवीडीबगउपयोगियों (जो कि टीएलवी बफ़र कॉन्टेंट को प्रिंट करते समय टैग कंट्रोल बाइट को डीकोड करने की कोशिश करते हैं) से, डीबग करने के मकसद से कंट्रोल बाइट को ऐक्सेस करने से मदद मिलती है.
जानकारी | |
---|---|
लौटाए गए सामान |
बिना हस्ताक्षर वाला पूर्णांक, जिसमें मौजूदा TLV एलिमेंट से जुड़ा कंट्रोल बाइट होता है. अगर रीडर को किसी एलिमेंट पर जगह नहीं दी गई है, तो kTLVControlByte_NotSpecification को दिखाया जाता है.
|
GetDataPtr
WEAVE_ERROR GetDataPtr( const uint8_t *& data )
टीएलवी बाइट या यूटीएफ़ 8 स्ट्रिंग एलिमेंट के शुरुआती एन्कोड किए गए बाइट का पॉइंटर पाएं.
इस तरीके से दिए गए इनपुट बफ़र में, सीधे तौर पर कोड में बदली गई स्ट्रिंग की वैल्यू एक सीधे तौर पर पॉइंटर दिखती है. सफल होने के लिए, इस तरीके के लिए ज़रूरी है कि स्ट्रिंग की वैल्यू पूरी तरह से एक ही बफ़र में हो. नहीं तो, तरीका WEAVE_ERROR_TLV_UNDERRUN दिखाता है. यह, बहुत ज़्यादा परेशान करने वाले बफ़र से डेटा पढ़ते समय, इस्तेमाल को सीमित करने का तरीका है.
जानकारी | |||||||||
---|---|---|---|---|---|---|---|---|---|
पैरामीटर |
|
||||||||
सामान लौटाने की वैल्यू |
|
लंबाई बढ़ाएं
uint32_t GetLength( void ) const
मौजूदा TLV एलिमेंट से जुड़े डेटा की लंबाई दिखाता है.
डेटा की लंबाई सिर्फ़ UTF8 स्ट्रिंग या बाइट स्ट्रिंग टाइप के एलिमेंट पर लागू होती है. UTF8 स्ट्रिंग के लिए, स्ट्रिंग में बाइट की संख्या दिखती है, न कि वर्णों की संख्या.
जानकारी | |
---|---|
लौटाए गए सामान |
मौजूदा TLV एलिमेंट से जुड़े डेटा की लंबाई (बाइट में) या अगर मौजूदा एलिमेंट UTF8 स्ट्रिंग या बाइट स्ट्रिंग नहीं है या रीडर का किसी एलिमेंट पर पोज़िशन नहीं है, तो 0 (बाइट में).
|
GetLengthपढ़ें
uint32_t GetLengthRead( void ) const
रीडर शुरू करने के बाद से पढ़े गए बाइट की कुल संख्या दिखाता है.
जानकारी | |
---|---|
लौटाए गए सामान |
रीडर शुरू किए जाने के बाद से पढ़े गए बाइट की कुल संख्या.
|
GetReadPoint
const uint8_t * GetReadPoint( void ) const
दिए गए इनपुट बफ़र में पॉइंट पाएं जो रीडर की मौजूदा स्थिति से मेल खाता है.
जानकारी | |
---|---|
लौटाए गए सामान |
दिए गए इनपुट बफ़र में एक पॉइंटर जो रीडर की मौजूदा स्थिति से मेल खाता है.
|
बाकी समय
uint32_t GetRemainingLength( void ) const
तब तक बाइट की कुल संख्या दिखाता है, जब तक कि पढ़ने की अधिकतम लंबाई पूरी नहीं हो जाती.
जानकारी | |
---|---|
लौटाए गए सामान |
पढ़ने की ज़्यादा से ज़्यादा लंबाई पूरी होने तक पढ़े जा सकने वाले बाइट की कुल संख्या.
|
पाएं स्ट्रिंग
WEAVE_ERROR GetString( char *buf, uint32_t bufSize )
मौजूदा बाइट या UTF8 स्ट्रिंग एलिमेंट की वैल्यू, शून्य की गई स्ट्रिंग के तौर पर पाएं.
ज़रूरी इनपुट बफ़र साइज़ तय करने के लिए, GetBytes() को कॉल करने से पहले, GetLength() तरीके को कॉल करें. शून्य वर्णों को शामिल करने के लिए, इनपुट बफ़र, स्ट्रिंग की लंबाई से कम से कम एक बाइट बड़ा होना चाहिए.
जानकारी | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
पैरामीटर |
|
||||||||||
सामान लौटाने की वैल्यू |
|
GetTag
uint64_t GetTag( void ) const
मौजूदा TLV एलिमेंट से जुड़ा टैग दिखाता है.
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 )
एक सिंगल PacketBuffer से पढ़ने के लिए, TLVReader ऑब्जेक्ट को शुरू करता है.
पार्सिंग शुरू होने की शुरुआत, बफ़र और #39;s के शुरू होने की जगह (buf->DataStart()) से होती है और बफ़र के डेटा के आखिर तक बनी रहती है (जैसा कि buf->Datalen() के ज़रिए दिखाया गया है) या maxLen बाइट को पार्स किया गया है.
जानकारी | |||||
---|---|---|---|---|---|
पैरामीटर |
|
इनिट
void Init( PacketBuffer *buf, uint32_t maxLen, bool allowDiscontiguousBuffers )
एक या एक से ज़्यादा PacketBuffers से पढ़ने के लिए, TLVReader ऑब्जेक्ट शुरू करता है.
पार्सिंग की शुरुआत, बफ़र की शुरुआती स्थिति (#f&&tt;DataStart()) से होती है. अगर allowDiscontiguousBuffers सही पर सेट है, तो बफ़र अपने Next() पॉइंटर से लिंक किए गए बफ़र की चेन में आगे बढ़ जाएंगे. पार्स होने की प्रक्रिया तब तक जारी रहती है, जब तक बफ़र चेन का सारा डेटा इस्तेमाल नहीं हो जाता (जैसा कि buf->Datalen() से दिखाया गया है) या maxLen बाइट पार्स हो गए हैं.
जानकारी | |||||||
---|---|---|---|---|---|---|---|
पैरामीटर |
|
आगे बढ़ें
WEAVE_ERROR Next( void )
TLVReader ऑब्जेक्ट को अगले TLV एलिमेंट में पढ़ने के लिए बेहतर बनाता है.
Next() मैथड, रीडर ऑब्जेक्ट को अगले एलिमेंट पर TLV एन्कोडिंग में पोज़िशन करता है. यह इसी कंटेनमेंट के रेफ़रंस में मौजूद होता है. खास तौर पर, अगर रीडर को टीएलवी कोड में बदलने के सबसे बाहरी लेवल पर रखा गया है, तो Next() को कॉल करने पर, रीडर अगले एलिमेंट पर जाएगा. अगर रीडर को टीएलवी कंटेनर एलिमेंट (कोई स्ट्रक्चर, पाथ या पाथ) में रखा गया है, तो Next() को कॉल करने पर, रीडर कंटेनर के अगले सदस्य एलिमेंट पर पहुंच जाएगा.
Next(), पाठक के मोशन को मौजूदा कंटेनमेंट पर लागू होने से रोकता है. जब रीडर किसी कंटेनर एलिमेंट पर लगा होता है, तो वह Next() को कॉल करने से, कंटेनर पर आगे बढ़ जाता है. ऐसा तब तक होता है, जब तक वह कंटेनर के पहले एलिमेंट पर नहीं चला जाता और उसके किसी एलिमेंट का सदस्य नेस्ट नहीं होता.
जब किसी खास कंटेनेंस के कॉन्टेक्स्ट में कोई और एलिमेंट नहीं होता, तो Next() मेथड WEAVE_END_OF_TLV गड़बड़ी दिखाएगा. साथ ही, रीडर की पोज़िशन में कोई बदलाव नहीं होगा.
जानकारी | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
सामान लौटाने की वैल्यू |
|
आगे बढ़ें
WEAVE_ERROR Next( TLVType expectedType, uint64_t expectedTag )
TLVReader ऑब्जेक्ट को अगले TLV एलिमेंट पर ले जाता है, ताकि वह नए एलिमेंट के टाइप और टैग पर दावा करे.
Next(TLVType ट्रस्टType) uint64_t अपेक्षित टैग) एक सुविधा विधि है, जिसका व्यवहार Next() जैसा ही होता है, लेकिन यह भी पुष्टि करता है कि नए TLV एलिमेंट का प्रकार और टैग दिए गए तर्कों से मेल खाते हैं.
जानकारी | |||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
पैरामीटर |
|
||||||||||||||||
सामान लौटाने की वैल्यू |
|
ओपन कंटेनर
WEAVE_ERROR OpenContainer( TLVReader & containerReader )
TLV कंटेनर एलिमेंट के सदस्यों को पढ़ने के लिए, एक नए TLVReader ऑब्जेक्ट की शुरुआत करता है.
OpenCONTAINER() मैथड से, TLV कंटेनर (किसी स्ट्रक्चर, कलेक्शन या पाथ) के सदस्य एलिमेंट को पढ़ने के लिए, एक नया TLVReader ऑब्जेक्ट शुरू होता है. OpenCONTAINER() को कॉल करने पर, मौजूदा TLVReader ऑब्जेक्ट को, पढ़े जाने वाले कंटेनर एलिमेंट पर पोज़ीशन किया जाना चाहिए. इस मेथड को नए रीडर का रेफ़रंस दिया जाता है. यह कंटेनर पढ़ने के लिए शुरू किया जाएगा. इस रीडर को कंटेनर रीडर के तौर पर जाना जाता है. साथ ही, जिस रीडर पर OpenCONTAINER() को कॉल किया जाता है उसे पैरंट रीडर कहा जाता है.
OpenCONTAINER() तरीके के वापस आने पर, कंटेनर रीडर को कंटेनर के पहले सदस्य के ठीक पहले रखा जाता है. कंटेनर रीडर पर Next() को कॉल करने से, कलेक्शन के सदस्यों के आखिर तक तब तक आगे बढ़ा जा सकता है, जब तक कि रीडर WEAVE_END_OF_TLV न दिखाए.
कंटेनर रीडर खुला होने पर, ऐप्लिकेशन को कॉल नहीं करना चाहिए या पैरंट रीडर की स्थिति में बदलाव नहीं करना चाहिए. जब ऐप्लिकेशन कंटेनर कंटेनर का इस्तेमाल कर लेता है, तो उसे पैरंट रीडर पर ClosedCONTAINER() पर कॉल करके उसे बंद करना होगा. ऐप्लिकेशन में, कंटेनर रीडर में मौजूद सभी एलिमेंट को पढ़ने के साथ-साथ, कभी भी कंटेनर रीडर बंद किया जा सकता है. कंटेनर रीडर बंद होने के बाद, ऐप्लिकेशन, पैरंट रीडर का इस्तेमाल जारी रख सकते हैं.
कंटेनर रीडर को पैरंट रीडर से कई कॉन्फ़िगरेशन प्रॉपर्टी इनहेरिट की जाती हैं. इनके उदाहरण हैं:
- इंप्लिसिट प्रोफ़ाइल आईडी (ImplicitProfileId)
- ऐप्लिकेशन डेटा पॉइंटर (AppData)
- GetNextBuffer फ़ंक्शन पॉइंटर
जानकारी | |||||
---|---|---|---|---|---|
पैरामीटर |
|
||||
सामान लौटाने की वैल्यू |
|
अभी नहीं
WEAVE_ERROR Skip( void )
TLVReader ऑब्जेक्ट को मौजूदा TLV एलिमेंट के तुरंत बाद बेहतर बनाता है.
स्किप() मैथड, रीडर ऑब्जेक्ट को मौजूदा TLV एलिमेंट के ठीक बाद स्टेटस करता है, ताकि Next() के बाद होने वाले कॉल, रीडर को नीचे दिए गए एलिमेंट पर ले जाएं. Next() की तरह ही, अगर कॉल के समय रीडर को कंटेनर के किसी एलिमेंट पर रखा जाता है, तो कंटेनर के सदस्यों को छोड़ दिया जाएगा. अगर किसी एलिमेंट को रीडर के सामने नहीं रखा गया है, तो उसकी पोज़िशन में कोई बदलाव नहीं होगा.
जानकारी | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
सामान लौटाने की वैल्यू |
|
EndEndOfCONTAINER
WEAVE_ERROR VerifyEndOfContainer( void )
पुष्टि करता है कि TVLReader ऑब्जेक्ट, TLV कंटेनर के आखिर में है.
VerifyEndOfCONTAINER() मैथड से यह पुष्टि होती है कि मौजूदा TLV कंटेनर में कोई और TLV एलिमेंट नहीं पढ़ा जा सकता. यह एक सुविधा का तरीका है, जो Next() को कॉल करने और WEAVE_END_OF_TLV के रिटर्न वैल्यू की जांच करने के बराबर है.
जानकारी | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
सामान लौटाने की वैल्यू |
|
सुरक्षित फ़ंक्शन
ClearElementState
void ClearElementState( void )
एलिमेंट टाइप
TLVElementType ElementType( void ) const
यह एक निजी तरीका है. यह mControlByte से TLV ElementType दिखाता है.
पक्का करें कि डेटा
WEAVE_ERROR EnsureData( WEAVE_ERROR noDataErr )
GetElementheadLength
WEAVE_ERROR GetElementHeadLength( uint8_t & elemHeadBytes ) const
यह एक निजी तरीका है, जिसका इस्तेमाल TLV एलिमेंट के सिर की लंबाई की गिनती करने के लिए किया जाता है.
IsCONTAINEROpen
bool IsContainerOpen( void ) const
डेटा पढ़ें
WEAVE_ERROR ReadData( uint8_t *buf, uint32_t len )
ReadElement
WEAVE_ERROR ReadElement( void )
टैग पढ़ें
uint64_t ReadTag( TLVTagControl tagControl, const uint8_t *& p )
सेट कंटेनर ओपन
void SetContainerOpen( bool aContainerOpen )
डेटा छोड़ें
WEAVE_ERROR SkipData( void )
डेस्टिनेशन बफ़र के बिना, मौजूदा टीएलवी में मौजूद किसी भी डेटा को पढ़कर सुनाएं.
जानकारी | |||||
---|---|---|---|---|---|
सामान लौटाने की वैल्यू |
|
स्किप कंटेनर
WEAVE_ERROR SkipToEndOfContainer( void )
एलिमेंट की पुष्टि करना
WEAVE_ERROR VerifyElement( void )
सुरक्षित किए गए स्टैटिक फ़ंक्शन
फ़ेलगेटअगलाBuffer
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 )