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)
TLV कंटेनर एलिमेंट के सदस्य पढ़ने के लिए, TLVReader ऑब्जेक्ट तैयार करता है.
ExitContainer(TLVType outerContainerType)
टीएलवी कंटेनर की रीडिंग को पूरा करता है. साथ ही, कंटेनर के बाद एलिमेंट को पढ़ने के लिए, TLVReader ऑब्जेक्ट तैयार करता है.
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
किसी दूसरे TLVReader ऑब्जेक्ट से, TLVReader ऑब्जेक्ट को शुरू करता है.
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)
TLVReader ऑब्जेक्ट को, पढ़े जाने वाले अगले TLV एलिमेंट पर ले जाता है.
Next(TLVType expectedType, uint64_t expectedTag)
यह TLVReader ऑब्जेक्ट को, पढ़े जाने वाले अगले TLV एलिमेंट में ले जाता है. इससे नए एलिमेंट के टाइप और टैग के बारे में पता चलता है.
OpenContainer(TLVReader & containerReader)
TLV कंटेनर एलिमेंट के सदस्यों को पढ़ने के लिए, एक नए TLVReader ऑब्जेक्ट को शुरू करता है.
Skip(void)
TLVReader ऑब्जेक्ट को, मौजूदा TLV एलिमेंट के तुरंत बाद ले जाता है.
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 पर फ़ीड करने के लिए किया जाता है. जब कॉल किया जाता है, तो फ़ंक्शन से अतिरिक्त डेटा जनरेट होने की संभावना होती है. इससे, पाठक को पार्स कर सकता है या यह सिग्नल मिल सकता है कि कोई और डेटा उपलब्ध नहीं है.

जानकारी
पैरामीटर
[in] reader
इनपुट डेटा का अनुरोध करने वाले TLVReader ऑब्जेक्ट का रेफ़रंस.
[in,out] bufHandle
uintptr_t वैल्यू का रेफ़रंस. यह फ़ंक्शन, कॉल के बीच कॉन्टेक्स्ट का डेटा स्टोर करने के लिए इसका इस्तेमाल कर सकता है. पहली कॉल शुरू होने से पहले, यह वैल्यू 0 पर शुरू की जाती है.
[in,out] bufStart
डेटा पॉइंटर का रेफ़रंस. फ़ंक्शन में जाने पर, bufStart, पाठक के इस्तेमाल किए गए आखिरी TLV डेटा बाइट से एक बाइट ज़्यादा पॉइंट करता है. बाहर निकलने पर, bufStart पार्स किए जाने वाले नए TLV डेटा के पहले बाइट पर ले जाएगा. नई पॉइंटर की वैल्यू, पहले इस्तेमाल किए गए डेटा के बफ़र के बीच हो सकती है. इसके अलावा, यह पूरी तरह से नए बफ़र की जानकारी भी दे सकती है.
[out] bufLen
साइन नहीं किए गए पूर्णांक का रेफ़रंस, जिसे फ़ंक्शन को, लौटाए जा रहे TLV डेटा बाइट की संख्या पर सेट करना चाहिए. अगर इनपुट टीएलवी का डेटा खत्म हो गया है, तो फ़ंक्शन को इस वैल्यू को 0 पर सेट करना चाहिए.
रिटर्न वैल्यू
WEAVE_NO_ERROR
अगर फ़ंक्शन ने ज़्यादा टीएलवी डेटा जनरेट किया है या इनपुट डेटा की आखिरी वैल्यू मिल गई है, तो (इस मामले में, bufLen को 0 पर सेट किया जाना चाहिए).
other
अन्य Weave या प्लैटफ़ॉर्म के खास गड़बड़ी कोड बताते हैं कि फ़ंक्शन में कोई गड़बड़ी हुई है जिसकी वजह से वह अनुरोध किया गया डेटा तैयार नहीं कर पा रहा है.

सार्वजनिक एट्रिब्यूट

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() को कॉल किए जाने के बाद, ऐप्लिकेशन को कंटेनर रीडर को 'इनीशियलाइज़ नहीं किया गया' समझना चाहिए. साथ ही, उसे फिर से शुरू किए बिना इसका इस्तेमाल नहीं करना चाहिए.

जानकारी
पैरामीटर
[in] containerReader
TLVReader ऑब्जेक्ट का रेफ़रंस, जो OpenContainer() तरीके को सप्लाई किया गया.
रिटर्न वैल्यू
WEAVE_NO_ERROR
अगर तरीका काम कर गया है.
WEAVE_ERROR_INCORRECT_STATE
अगर OpenContainer() को रीडर पर कॉल नहीं किया गया है या कंटेनर रीडर, OpenContainer() तरीके को पास किए गए डेटा से मेल नहीं खाता है.
WEAVE_ERROR_TLV_UNDERRUN
अगर मौजूदा टीएलवी एन्कोडिंग समय से पहले खत्म हो गई हो.
WEAVE_ERROR_INVALID_TLV_ELEMENT
अगर रीडर को किसी अमान्य या काम न करने वाले TLV एलिमेंट टाइप का सामना करना पड़ा.
WEAVE_ERROR_INVALID_TLV_TAG
अगर पाठक को किसी अमान्य कॉन्टेक्स्ट में टीएलवी टैग मिला है.
other
कॉन्फ़िगर किए गए GetNextBuffer() फ़ंक्शन से मिले अन्य Weave या प्लैटफ़ॉर्म गड़बड़ी कोड. केवल तभी संभव है जब getNextBuffer गैर-NULL हो.

DupBytes

WEAVE_ERROR DupBytes(
  uint8_t *& buf,
  uint32_t & dataLen
)

यह फ़ंक्शन, मौजूदा बाइट या UTF8 स्ट्रिंग की वैल्यू वाला बफ़र तय करता है और उसे लौटाता है.

यह तरीका, के लिए एक बफ़र बनाता है और मौजूदा पोज़िशन पर, बाइट या UTF-8 स्ट्रिंग एलिमेंट से जुड़े डेटा की कॉपी दिखाता है. बफ़र की मेमोरी को Malloc() का इस्तेमाल करके हासिल किया जाता है. साथ ही, इसे कॉलर की मदद से तब खाली किया जाना चाहिए, जब इसकी ज़रूरत न हो.

जानकारी
पैरामीटर
[out] buf
ऐसे पॉइंटर का रेफ़रंस जिसमें पूरा होने पर, dataLen बाइट का हीप ऐलोकेशन बफ़र असाइन किया जाएगा.
[out] dataLen
सफल होने पर, buf के साइज़ को बाइट में दिखाने के लिए, स्टोरेज का रेफ़रंस.
रिटर्न वैल्यू
WEAVE_NO_ERROR
अगर तरीका काम कर गया है.
WEAVE_ERROR_WRONG_TLV_TYPE
अगर मौजूदा एलिमेंट टीएलवी बाइट या UTF8 स्ट्रिंग नहीं है या रीडर को किसी एलिमेंट पर नहीं रखा गया है.
WEAVE_ERROR_NO_MEMORY
अगर आउटपुट बफ़र के लिए मेमोरी असाइन नहीं की जा सकी.
WEAVE_ERROR_TLV_UNDERRUN
अगर मौजूदा टीएलवी एन्कोडिंग समय से पहले खत्म हो गई हो.
WEAVE_ERROR_UNSUPPORTED_WEAVE_FEATURE
अगर टारगेट प्लैटफ़ॉर्म,maloc() और free() के साथ काम नहीं करता.
other
कॉन्फ़िगर किए गए GetNextBuffer() फ़ंक्शन से मिले अन्य Weave या प्लैटफ़ॉर्म गड़बड़ी कोड. केवल तभी संभव है जब getNextBuffer गैर-NULL हो.

DupString

WEAVE_ERROR DupString(
  char *& buf
)

यह फ़ंक्शन, मौजूदा बाइट या UTF8 स्ट्रिंग की शून्य से खत्म होने वाली वैल्यू वाले बफ़र को असाइन करता है और दिखाता है.

यह तरीका, डेटा के लिए बफ़र बनाता है और मौजूदा पोज़िशन पर बाइट या UTF-8 स्ट्रिंग एलिमेंट से जुड़े डेटा की, शून्य से खत्म होने वाली कॉपी दिखाता है. बफ़र की मेमोरी को Malloc() का इस्तेमाल करके हासिल किया जाता है. साथ ही, इसे कॉलर की मदद से तब खाली किया जाना चाहिए, जब इसकी ज़रूरत न हो.

जानकारी
पैरामीटर
[out] buf
ऐसे पॉइंटर का रेफ़रंस जिसके लिए हीप में असाइन किए गए बफ़र को असाइन किया जाएगा.
रिटर्न वैल्यू
WEAVE_NO_ERROR
अगर तरीका काम कर गया है.
WEAVE_ERROR_WRONG_TLV_TYPE
अगर मौजूदा एलिमेंट टीएलवी बाइट या UTF8 स्ट्रिंग नहीं है या रीडर को किसी एलिमेंट पर नहीं रखा गया है.
WEAVE_ERROR_NO_MEMORY
अगर आउटपुट बफ़र के लिए मेमोरी असाइन नहीं की जा सकी.
WEAVE_ERROR_TLV_UNDERRUN
अगर मौजूदा टीएलवी एन्कोडिंग समय से पहले खत्म हो गई हो.
WEAVE_ERROR_UNSUPPORTED_WEAVE_FEATURE
अगर टारगेट प्लैटफ़ॉर्म,maloc() और free() के साथ काम नहीं करता.
other
कॉन्फ़िगर किए गए GetNextBuffer() फ़ंक्शन से मिले अन्य Weave या प्लैटफ़ॉर्म गड़बड़ी कोड. केवल तभी संभव है जब getNextBuffer गैर-NULL हो.

EnterContainer

WEAVE_ERROR EnterContainer(
  TLVType & outerContainerType
)

TLV कंटेनर एलिमेंट के सदस्य पढ़ने के लिए, TLVReader ऑब्जेक्ट तैयार करता है.

EnterContainer() तरीका, TLV कंटेनर (स्ट्रक्चर, अरे या पाथ) के मेंबर एलिमेंट को पढ़ने के लिए, मौजूदा TLVReader ऑब्जेक्ट को तैयार करता है. EnterContainer() ऐप्लिकेशन को किए जाने वाले हर कॉल के लिए, आपको ExitContainer() को एक संबंधित कॉल करना होगा.

जब EnterContainer() को कहा जाता है, तो TLVReader ऑब्जेक्ट को पढ़ने के लिए, उसे कंटेनर एलिमेंट पर रखा जाना चाहिए. यह तरीका, तर्क के तौर पर TLVType वैल्यू का रेफ़रंस लेता है. इसका इस्तेमाल, कंटेनर को पढ़ते समय, रीडर के कॉन्टेक्स्ट को सेव करने के लिए किया जाएगा.

जब EnterContainer() मेथड दिखाया जाता है, तो रीडर को कंटेनर के पहले सदस्य से ठीक पहले रखा जाता है. बार-बार Next() को कॉल करने से, संग्रह के सदस्यों के ज़रिए पाठक को तब तक आगे भेजा जाएगा, जब तक कि पूरा अंक नहीं मिल जाता, इसके बाद रीडर को WEAVE_END_OF_TLV मिलेगा.

जब ऐप्लिकेशन किसी कंटेनर को पढ़ लेता है, तो वह ExitContainer() तरीके को कॉल करके, कंटेनर के बाद के एलिमेंट को पढ़ना जारी रख सकता है.

जानकारी
पैरामीटर
[out] outerContainerType
TLVType वैल्यू का रेफ़रंस, जिसे पाठक के बारे में जानकारी मिलेगी.
रिटर्न वैल्यू
WEAVE_NO_ERROR
अगर तरीका काम कर गया है.
WEAVE_ERROR_INCORRECT_STATE
अगर मौजूदा एलिमेंट किसी कंटेनर एलिमेंट पर नहीं है.

ExitContainer

WEAVE_ERROR ExitContainer(
  TLVType outerContainerType
)

टीएलवी कंटेनर की रीडिंग को पूरा करता है. साथ ही, कंटेनर के बाद एलिमेंट को पढ़ने के लिए, TLVReader ऑब्जेक्ट तैयार करता है.

ExitContainer() तरीका, EnterContainer() को कॉल करने के बाद, TLVReader ऑब्जेक्ट की स्थिति को पहले जैसा करता है. EnterContainer() को किए जाने वाले हर कॉल के लिए, आपको EnterContainer() तरीके से मिले कॉन्टेक्स्ट की वैल्यू को ExitContainer() के लिए कॉल करना होगा.

जब ExitContainer() नतीजा दिखाता है, तब रीडर को कंटेनर के बाद आने वाले पहले एलिमेंट के ठीक पहले रखा जाता है. यहां से कोई ऐप्लिकेशन, बचे हुए किसी भी एलिमेंट पर जाने के लिए Next() तरीके का इस्तेमाल कर सकता है.

EnterContainer() को कॉल करने के बाद, ऐप्लिकेशन किसी भी समय रीडर पर ExitContainer() को कॉल कर सकते हैं, भले ही दिए गए कंटेनर के सभी एलिमेंट पढ़ लिए गए हों.

जानकारी
पैरामीटर
[in] outerContainerType
EnterContainer() तरीके से मिली TLVType वैल्यू.
रिटर्न वैल्यू
WEAVE_NO_ERROR
अगर तरीका काम कर गया है.
WEAVE_ERROR_INCORRECT_STATE
अगर OpenContainer() को रीडर पर कॉल नहीं किया गया है या कंटेनर रीडर, OpenContainer() तरीके को पास किए गए डेटा से मेल नहीं खाता है.
WEAVE_ERROR_TLV_UNDERRUN
अगर मौजूदा टीएलवी एन्कोडिंग समय से पहले खत्म हो गई हो.
WEAVE_ERROR_INVALID_TLV_ELEMENT
अगर रीडर को किसी अमान्य या काम न करने वाले TLV एलिमेंट टाइप का सामना करना पड़ा.
WEAVE_ERROR_INVALID_TLV_TAG
अगर पाठक को किसी अमान्य कॉन्टेक्स्ट में टीएलवी टैग मिला है.
other
कॉन्फ़िगर किए गए GetNextBuffer() फ़ंक्शन से मिले अन्य Weave या प्लैटफ़ॉर्म गड़बड़ी कोड. केवल तभी संभव है जब getNextBuffer गैर-NULL हो.

पाएं

WEAVE_ERROR Get(
  bool & v
)

मौजूदा एलिमेंट की वैल्यू बूल टाइप के तौर पर पाएं.

जानकारी
पैरामीटर
[out] v
मौजूदा टीएलवी एलिमेंट से जुड़ी वैल्यू पाता है.
रिटर्न वैल्यू
WEAVE_NO_ERROR
अगर तरीका काम कर गया है.
WEAVE_ERROR_WRONG_TLV_TYPE
अगर मौजूदा एलिमेंट टीएलवी बूलियन टाइप नहीं है या रीडर को किसी एलिमेंट पर पोज़िशन नहीं किया गया है.

पाएं

WEAVE_ERROR Get(
  int8_t & v
)

मौजूदा एलिमेंट की वैल्यू को, साइन किए गए 8-बिट पूर्णांक के तौर पर पाएं.

अगर कोड में बदला गया पूर्णांक की वैल्यू, आउटपुट डेटा टाइप से ज़्यादा है, तो नतीजे के तौर पर मिली वैल्यू को काट दिया जाएगा.

जानकारी
पैरामीटर
[out] v
मौजूदा टीएलवी एलिमेंट से जुड़ी वैल्यू पाता है.
रिटर्न वैल्यू
WEAVE_NO_ERROR
अगर तरीका काम कर गया है.
WEAVE_ERROR_WRONG_TLV_TYPE
अगर मौजूदा एलिमेंट टीएलवी पूर्णांक टाइप (साइन किया गया या साइन नहीं किया गया) नहीं है या रीडर को किसी एलिमेंट पर नहीं रखा गया है.

पाएं

WEAVE_ERROR Get(
  int16_t & v
)

मौजूदा एलिमेंट की वैल्यू को, साइन किए गए 16-बिट पूर्णांक के तौर पर पाएं.

अगर कोड में बदला गया पूर्णांक की वैल्यू, आउटपुट डेटा टाइप से ज़्यादा है, तो नतीजे के तौर पर मिली वैल्यू को काट दिया जाएगा.

जानकारी
पैरामीटर
[out] v
मौजूदा टीएलवी एलिमेंट से जुड़ी वैल्यू पाता है.
रिटर्न वैल्यू
WEAVE_NO_ERROR
अगर तरीका काम कर गया है.
WEAVE_ERROR_WRONG_TLV_TYPE
अगर मौजूदा एलिमेंट टीएलवी पूर्णांक टाइप (साइन किया गया या साइन नहीं किया गया) नहीं है या रीडर को किसी एलिमेंट पर नहीं रखा गया है.

पाएं

WEAVE_ERROR Get(
  int32_t & v
)

मौजूदा एलिमेंट की वैल्यू को, साइन किए गए 32-बिट पूर्णांक के तौर पर पाएं.

अगर कोड में बदला गया पूर्णांक की वैल्यू, आउटपुट डेटा टाइप से ज़्यादा है, तो नतीजे के तौर पर मिली वैल्यू को काट दिया जाएगा.

जानकारी
पैरामीटर
[out] v
मौजूदा टीएलवी एलिमेंट से जुड़ी वैल्यू पाता है.
रिटर्न वैल्यू
WEAVE_NO_ERROR
अगर तरीका काम कर गया है.
WEAVE_ERROR_WRONG_TLV_TYPE
अगर मौजूदा एलिमेंट टीएलवी पूर्णांक टाइप (साइन किया गया या साइन नहीं किया गया) नहीं है या रीडर को किसी एलिमेंट पर नहीं रखा गया है.

पाएं

WEAVE_ERROR Get(
  int64_t & v
)

मौजूदा एलिमेंट की वैल्यू को, साइन किए गए 64-बिट पूर्णांक के तौर पर पाएं.

अगर कोड में बदला गया पूर्णांक की वैल्यू, आउटपुट डेटा टाइप से ज़्यादा है, तो नतीजे के तौर पर मिली वैल्यू को काट दिया जाएगा.

जानकारी
पैरामीटर
[out] v
मौजूदा टीएलवी एलिमेंट से जुड़ी वैल्यू पाता है.
रिटर्न वैल्यू
WEAVE_NO_ERROR
अगर तरीका काम कर गया है.
WEAVE_ERROR_WRONG_TLV_TYPE
अगर मौजूदा एलिमेंट टीएलवी पूर्णांक टाइप (साइन किया गया या साइन नहीं किया गया) नहीं है या रीडर को किसी एलिमेंट पर नहीं रखा गया है.

पाएं

WEAVE_ERROR Get(
  uint8_t & v
)

मौजूदा एलिमेंट की वैल्यू को, 8-बिट बिना साइन वाले पूर्णांक के रूप में पाएं.

अगर कोड में बदला गया पूर्णांक की वैल्यू, आउटपुट डेटा टाइप से ज़्यादा है, तो नतीजे के तौर पर मिली वैल्यू को काट दिया जाएगा. इसी तरह, अगर कोड में बदले गए पूर्णांक की वैल्यू नेगेटिव है, तो वैल्यू को 'साइन नहीं किया गया' में बदल दिया जाएगा.

जानकारी
पैरामीटर
[out] v
मौजूदा टीएलवी एलिमेंट से जुड़ी वैल्यू पाता है.
रिटर्न वैल्यू
WEAVE_NO_ERROR
अगर तरीका काम कर गया है.
WEAVE_ERROR_WRONG_TLV_TYPE
अगर मौजूदा एलिमेंट टीएलवी पूर्णांक टाइप (साइन किया गया या साइन नहीं किया गया) नहीं है या रीडर को किसी एलिमेंट पर नहीं रखा गया है.

पाएं

WEAVE_ERROR Get(
  uint16_t & v
)

मौजूदा एलिमेंट की वैल्यू को, 16-बिट बिना साइन वाले पूर्णांक के रूप में पाएं.

अगर कोड में बदला गया पूर्णांक की वैल्यू, आउटपुट डेटा टाइप से ज़्यादा है, तो नतीजे के तौर पर मिली वैल्यू को काट दिया जाएगा. इसी तरह, अगर कोड में बदले गए पूर्णांक की वैल्यू नेगेटिव है, तो वैल्यू को 'साइन नहीं किया गया' में बदल दिया जाएगा.

जानकारी
पैरामीटर
[out] v
मौजूदा टीएलवी एलिमेंट से जुड़ी वैल्यू पाता है.
रिटर्न वैल्यू
WEAVE_NO_ERROR
अगर तरीका काम कर गया है.
WEAVE_ERROR_WRONG_TLV_TYPE
अगर मौजूदा एलिमेंट टीएलवी पूर्णांक टाइप (साइन किया गया या साइन नहीं किया गया) नहीं है या रीडर को किसी एलिमेंट पर नहीं रखा गया है.

पाएं

WEAVE_ERROR Get(
  uint32_t & v
)

मौजूदा एलिमेंट की वैल्यू को, 32-बिट बिना साइन वाले पूर्णांक के रूप में पाएं.

अगर कोड में बदला गया पूर्णांक की वैल्यू, आउटपुट डेटा टाइप से ज़्यादा है, तो नतीजे के तौर पर मिली वैल्यू को काट दिया जाएगा. इसी तरह, अगर कोड में बदले गए पूर्णांक की वैल्यू नेगेटिव है, तो वैल्यू को 'साइन नहीं किया गया' में बदल दिया जाएगा.

जानकारी
पैरामीटर
[out] v
मौजूदा टीएलवी एलिमेंट से जुड़ी वैल्यू पाता है.
रिटर्न वैल्यू
WEAVE_NO_ERROR
अगर तरीका काम कर गया है.
WEAVE_ERROR_WRONG_TLV_TYPE
अगर मौजूदा एलिमेंट टीएलवी पूर्णांक टाइप (साइन किया गया या साइन नहीं किया गया) नहीं है या रीडर को किसी एलिमेंट पर नहीं रखा गया है.

पाएं

WEAVE_ERROR Get(
  uint64_t & v
)

मौजूदा एलिमेंट की वैल्यू, 64-बिट बिना साइन वाले पूर्णांक के रूप में पाएं.

अगर कोड में बदले गए पूर्णांक की वैल्यू नेगेटिव है, तो वैल्यू को 'साइन नहीं किया गया' में बदल दिया जाएगा.

जानकारी
पैरामीटर
[out] v
मौजूदा टीएलवी एलिमेंट से जुड़ी वैल्यू पाता है.
रिटर्न वैल्यू
WEAVE_NO_ERROR
अगर तरीका काम कर गया है.
WEAVE_ERROR_WRONG_TLV_TYPE
अगर मौजूदा एलिमेंट टीएलवी पूर्णांक टाइप (साइन किया गया या साइन नहीं किया गया) नहीं है या रीडर को किसी एलिमेंट पर नहीं रखा गया है.

पाएं

WEAVE_ERROR Get(
  float & v
)

पाएं

WEAVE_ERROR Get(
  double & v
)

मौजूदा एलिमेंट की वैल्यू को दो बार सटीक फ़्लोटिंग पॉइंट नंबर के तौर पर पाएं.

जानकारी
पैरामीटर
[out] v
मौजूदा टीएलवी एलिमेंट से जुड़ी वैल्यू पाता है.
रिटर्न वैल्यू
WEAVE_NO_ERROR
अगर तरीका काम कर गया है.
WEAVE_ERROR_WRONG_TLV_TYPE
अगर मौजूदा एलिमेंट टीएलवी फ़्लोटिंग पॉइंट टाइप नहीं है या रीडर को किसी एलिमेंट पर नहीं रखा गया है.

GetBufHandle

uintptr_t GetBufHandle(
  void
) const 

GetBytes

WEAVE_ERROR GetBytes(
  uint8_t *buf,
  uint32_t bufSize
)

मौजूदा बाइट या UTF8 स्ट्रिंग एलिमेंट की वैल्यू पाएं.

इनपुट बफ़र साइज़ तय करने के लिए, GetBytes() को कॉल करने से पहले GetLength() तरीके को कॉल करें.

जानकारी
पैरामीटर
[in] buf
स्ट्रिंग डेटा पाने के लिए बफ़र का पॉइंटर.
[in] bufSize
बफ़र का बाइट में साइज़, जिसे buf ने बताया है.
रिटर्न वैल्यू
WEAVE_NO_ERROR
अगर तरीका काम कर गया है.
WEAVE_ERROR_WRONG_TLV_TYPE
अगर मौजूदा एलिमेंट टीएलवी बाइट या UTF8 स्ट्रिंग नहीं है या रीडर को किसी एलिमेंट पर नहीं रखा गया है.
WEAVE_ERROR_BUFFER_TOO_SMALL
अगर दिया गया बफ़र मौजूदा एलिमेंट से जुड़े डेटा को होल्ड करने के लिए बहुत छोटा है.
WEAVE_ERROR_TLV_UNDERRUN
अगर मौजूदा टीएलवी एन्कोडिंग समय से पहले खत्म हो गई हो.
other
कॉन्फ़िगर किए गए GetNextBuffer() फ़ंक्शन से मिले अन्य Weave या प्लैटफ़ॉर्म गड़बड़ी कोड. केवल तभी संभव है जब getNextBuffer गैर-NULL हो.

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 दिखाता है. इससे कई बार एक साथ काम न करने वाले बफ़र से डेटा पढ़ते समय, इसका इस्तेमाल सीमित तौर पर किया जा सकता है.

जानकारी
पैरामीटर
[out] data
ऐसे कॉन्स पॉइंटर का रेफ़रंस जिसे दिए गए स्ट्रिंग डेटा के लिए पॉइंटर मिलेगा.
रिटर्न वैल्यू
WEAVE_NO_ERROR
अगर तरीका काम कर गया है.
WEAVE_ERROR_WRONG_TLV_TYPE
अगर मौजूदा एलिमेंट टीएलवी बाइट या UTF8 स्ट्रिंग नहीं है या रीडर को किसी एलिमेंट पर नहीं रखा गया है.
WEAVE_ERROR_TLV_UNDERRUN
अगर मौजूदा TLV एन्कोडिंग समय से पहले खत्म हो गई या मौजूदा स्ट्रिंग एलिमेंट की वैल्यू, लगातार एक ही बफ़र में मौजूद नहीं है.
other
कॉन्फ़िगर किए गए GetNextBuffer() फ़ंक्शन से मिले अन्य Weave या प्लैटफ़ॉर्म गड़बड़ी कोड. केवल तभी संभव है जब getNextBuffer गैर-NULL हो.

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() तरीके को कॉल करें. इनपुट बफ़र कम से कम एक बाइट का होना चाहिए, जो शून्य वर्ण को फ़िट करने वाली स्ट्रिंग की लंबाई से ज़्यादा हो.

जानकारी
पैरामीटर
[in] buf
बाइट स्ट्रिंग डेटा पाने के लिए, बफ़र का पॉइंटर.
[in] bufSize
बफ़र का बाइट में साइज़, जिसे buf ने बताया है.
रिटर्न वैल्यू
WEAVE_NO_ERROR
अगर तरीका काम कर गया है.
WEAVE_ERROR_WRONG_TLV_TYPE
अगर मौजूदा एलिमेंट टीएलवी बाइट या UTF8 स्ट्रिंग नहीं है या रीडर को किसी एलिमेंट पर नहीं रखा गया है.
WEAVE_ERROR_BUFFER_TOO_SMALL
अगर दिया गया बफ़र मौजूदा एलिमेंट से जुड़े डेटा को होल्ड करने के लिए बहुत छोटा है.
WEAVE_ERROR_TLV_UNDERRUN
अगर मौजूदा टीएलवी एन्कोडिंग समय से पहले खत्म हो गई हो.
other
कॉन्फ़िगर किए गए GetNextBuffer() फ़ंक्शन से मिले अन्य Weave या प्लैटफ़ॉर्म गड़बड़ी कोड. केवल तभी संभव है जब getNextBuffer गैर-NULL हो.

GetTag

uint64_t GetTag(
  void
) const 

मौजूदा टीएलवी एलिमेंट से जुड़ा टैग दिखाता है.

टैग टाइप तय करने और अलग-अलग टैग फ़ील्ड वैल्यू निकालने के लिए, GetTag() से मिलने वाली वैल्यू का इस्तेमाल, टैग यूटिलिटी फ़ंक्शन (IsProfileTag(), IsContextTag(), ProfileIdFromTag() वगैरह) के साथ किया जा सकता है.

जानकारी
लौटाए गए सामान
साइन नहीं किया गया एक पूर्णांक, जिसमें मौजूदा TLV एलिमेंट से जुड़े टैग के बारे में जानकारी होती है.

GetType

TLVType GetType(
  void
) const 

मौजूदा TLV एलिमेंट का टाइप दिखाता है.

जानकारी
लौटाए गए सामान
मौजूदा TLV एलिमेंट के डेटा टाइप की जानकारी देने वाली TLVType वैल्यू. अगर रीडर को TLV एलिमेंट पर नहीं रखा गया है, तो रिटर्न वैल्यू kTLVType_Notspecified होगी.

शुरू करें

void Init(
  const TLVReader & aReader
)

किसी दूसरे TLVReader ऑब्जेक्ट से, TLVReader ऑब्जेक्ट को शुरू करता है.

जानकारी
पैरामीटर
[in] aReader
इसे शुरू करने के लिए, TLVReader का रीड-ओनली रेफ़रंस.

शुरू करें

void Init(
  const uint8_t *data,
  uint32_t dataLen
)

एक ही इनपुट बफ़र से पढ़ने के लिए, TLVReader ऑब्जेक्ट को शुरू करता है.

जानकारी
पैरामीटर
[in] data
उस बफ़र का पॉइंटर जिसमें पार्स किया जाने वाला टीएलवी डेटा है.
[in] dataLen
पार्स किए जाने वाले TLV डेटा की लंबाई.

शुरू करें

void Init(
  PacketBuffer *buf,
  uint32_t maxLen
)

एक ही PaetBuffer से पढ़ने के लिए, TLVReader ऑब्जेक्ट को शुरू करता है.

पार्स करना, बफ़र की शुरुआती स्थिति (buf->DataStart()) पर शुरू होता है और बफ़र में डेटा के खत्म होने (जैसा कि buf->Datalen() से दिखाया गया है) या maxLen बाइट तक पार्स होने तक जारी रहता है.

जानकारी
पैरामीटर
[in] buf
उस पैकेटबफ़र का पॉइंटर जिसमें पार्स किया जाने वाला टीएलवी डेटा होता है.
[in] maxLen
पार्स करने के लिए ज़्यादा से ज़्यादा बाइट. यह वैल्यू, इनपुट बफ़र में डिफ़ॉल्ट रूप से डेटा की मात्रा तय करती है.

शुरू करें

void Init(
  PacketBuffer *buf,
  uint32_t maxLen,
  bool allowDiscontiguousBuffers
)

एक या एक से ज़्यादा BoxetBuffers से पढ़ने के लिए, TLVReader ऑब्जेक्ट को शुरू करता है.

पार्स करना, शुरुआती बफ़र की शुरुआती पोज़िशन (buf->DataStart()) पर शुरू होता है. अगर allowDiscotiguousBuffers सही हो, तो उपयोगकर्ता अपने Next() पॉइंटर से जोड़े गए बफ़र की चेन से आगे बढ़ जाएगा. पार्स करना तब तक जारी रहता है, जब तक बफ़र चेन का पूरा डेटा इस्तेमाल नहीं हो जाता (जैसा कि buf->Datalen() से दिखाया गया है) या maxLen बाइट को पार्स कर दिया जाता है.

जानकारी
पैरामीटर
[in] buf
उस पैकेटबफ़र का पॉइंटर जिसमें पार्स किया जाने वाला टीएलवी डेटा होता है.
[in] maxLen
पार्स करने के लिए ज़्यादा से ज़्यादा बाइट. यह वैल्यू, इनपुट बफ़र चेन में डेटा की कुल संख्या को डिफ़ॉल्ट के तौर पर सेट करती है.
[in] allowDiscontiguousBuffers
वैल्यू सही होने पर, मौजूदा बफ़र का पूरा डेटा खत्म होने के बाद, चेन में अगले बफ़र पर जाएं. गलत होने पर, शुरुआती बफ़र के आखिर में पार्स करना बंद करें.

आगे बढ़ें

WEAVE_ERROR Next(
  void
)

TLVReader ऑब्जेक्ट को, पढ़े जाने वाले अगले TLV एलिमेंट पर ले जाता है.

Next() तरीका, रीडर ऑब्जेक्ट को टीएलवी एन्कोडिंग में अगले एलिमेंट पर पोज़ीशन करता है, जो उसी कंटेनमेंट कॉन्टेक्स्ट में रहता है. खास तौर पर, अगर रीडर को कोड में बदलने के लिए टीएलवी के सबसे बाहरी स्तर पर रखा गया है, तो Next() को कॉल करने से पाठक को अगले, सबसे ऊपर वाले एलिमेंट पर भेज दिया जाएगा. अगर रीडर को किसी टीएलवी कंटेनर एलिमेंट (स्ट्रक्चर, ऐरे या पाथ) के अंदर रखा जाता है, तो Next() को कॉल करने पर, रीडर कंटेनर के अगले मेंबर एलिमेंट पर पहुंच जाएगा.

Next() पाठक की गति को मौजूदा कंटेनमेंट कॉन्टेक्स्ट तक सीमित कर देता है, इसलिए Next() को कॉल करने से, जब रीडर को किसी कंटेनर एलिमेंट पर पोज़ किया जाता है, तो वह एलिमेंट के बाद एलिमेंट को स्किप कर देगा (और नेस्ट किए गए कंटेनर को छोड़ने के बाद, एलिमेंट को स्किप कर देगा.)

जब किसी कंटेनमेंट कॉन्टेक्स्ट में कोई और एलिमेंट नहीं होता है, तो Next() तरीका WEAVE_END_OF_TLV गड़बड़ी दिखाएगा और रीडर की जगह में कोई बदलाव नहीं करेगा.

जानकारी
रिटर्न वैल्यू
WEAVE_NO_ERROR
पाठक को किसी नए एलिमेंट पर लगाया गया है या नहीं.
WEAVE_END_OF_TLV
अगर कोई और एलिमेंट उपलब्ध नहीं है.
WEAVE_ERROR_TLV_UNDERRUN
अगर मौजूदा टीएलवी एन्कोडिंग समय से पहले खत्म हो गई हो.
WEAVE_ERROR_INVALID_TLV_ELEMENT
अगर रीडर को किसी अमान्य या काम न करने वाले TLV एलिमेंट टाइप का सामना करना पड़ा.
WEAVE_ERROR_INVALID_TLV_TAG
अगर पाठक को किसी अमान्य कॉन्टेक्स्ट में टीएलवी टैग मिला है.
WEAVE_ERROR_UNKNOWN_IMPLICIT_TLV_TAG
अगर पाठक को किसी और तरीके से कोड में बदला गया टीएलवी टैग मिला है, जिसके लिए प्रोफ़ाइल आईडी की जानकारी नहीं है, तो
other
कॉन्फ़िगर किए गए GetNextBuffer() फ़ंक्शन से मिले अन्य Weave या प्लैटफ़ॉर्म गड़बड़ी कोड. केवल तभी संभव है जब getNextBuffer गैर-NULL हो.

आगे बढ़ें

WEAVE_ERROR Next(
  TLVType expectedType,
  uint64_t expectedTag
)

यह TLVReader ऑब्जेक्ट को, पढ़े जाने वाले अगले TLV एलिमेंट में ले जाता है. इससे नए एलिमेंट के टाइप और टैग के बारे में पता चलता है.

Next(TLVTypeexpectedType, uint64_texpectedTag) तरीका, सुविधा का एक तरीका है, जिसका व्यवहार Next() जैसा ही है. हालांकि, यह यह भी पुष्टि करता है कि नए TLV एलिमेंट का टाइप और टैग, दिए गए तर्कों से मेल खाता है.

जानकारी
पैरामीटर
[in] expectedType
अगले एलिमेंट के लिए अनुमानित डेटा टाइप.
[in] expectedTag
अगले एलीमेंट के लिए अपेक्षित टैग.
रिटर्न वैल्यू
WEAVE_NO_ERROR
पाठक को किसी नए एलिमेंट पर लगाया गया है या नहीं.
WEAVE_END_OF_TLV
अगर कोई और एलिमेंट उपलब्ध नहीं है.
WEAVE_ERROR_WRONG_TLV_TYPE
अगर नए एलिमेंट का टाइप, expectedType आर्ग्युमेंट की वैल्यू से मेल नहीं खाता है.
WEAVE_ERROR_UNEXPECTED_TLV_ELEMENT
अगर नए एलिमेंट से जुड़ा टैग, expectedTag आर्ग्युमेंट की वैल्यू से मेल नहीं खाता है.
WEAVE_ERROR_TLV_UNDERRUN
अगर मौजूदा टीएलवी एन्कोडिंग समय से पहले खत्म हो गई हो.
WEAVE_ERROR_INVALID_TLV_ELEMENT
अगर रीडर को किसी अमान्य या काम न करने वाले TLV एलिमेंट टाइप का सामना करना पड़ा.
WEAVE_ERROR_INVALID_TLV_TAG
अगर पाठक को किसी अमान्य कॉन्टेक्स्ट में टीएलवी टैग मिला है.
other
कॉन्फ़िगर किए गए GetNextBuffer() फ़ंक्शन से मिले अन्य Weave या प्लैटफ़ॉर्म गड़बड़ी कोड. केवल तभी संभव है जब getNextBuffer गैर-NULL हो.

OpenContainer

WEAVE_ERROR OpenContainer(
  TLVReader & containerReader
)

TLV कंटेनर एलिमेंट के सदस्यों को पढ़ने के लिए, एक नए TLVReader ऑब्जेक्ट को शुरू करता है.

OpenContainer() का इस्तेमाल करके, TLV कंटेनर यानी स्ट्रक्चर, ऐरे या पाथ के मेंबर एलिमेंट को पढ़ने के लिए, एक नया TLVReader ऑब्जेक्ट शुरू किया जाता है. जब OpenContainer() को कॉल किया जाता है, तो मौजूदा TLVReader ऑब्जेक्ट को, पढ़ने के लिए कंटेनर एलिमेंट पर रखा जाना चाहिए. यह तरीका अपने तर्क के तौर पर, एक ऐसे नए रीडर का रेफ़रंस लेता है जिसे कंटेनर को पढ़ने के लिए शुरू किया जाएगा. इस रीडर को कंटेनर रीडर के तौर पर जाना जाता है. वहीं, जिस रीडर पर OpenContainer() को कॉल किया जाता है उसे पैरंट रीडर कहा जाता है.

जब OpenContainer() तरीका लौटाता है, तो कंटेनर रीडर को कंटेनर के पहले सदस्य से ठीक पहले पोज़िशन किया जाता है. कंटेनर रीडर पर Next() को कॉल करने से, कलेक्शन के सदस्य आगे बढ़ते जाएंगे और आखिर तक पहुंचते हैं. इसके बाद, रीडर को WEAVE_END_OF_TLV मिलेगा.

कंटेनर रीडर के खुले होने पर, ऐप्लिकेशन को कॉल करने या पैरंट रीडर की स्थिति में कोई बदलाव नहीं करने चाहिए. जब कोई ऐप्लिकेशन कंटेनर रीडर का इस्तेमाल कर लेता है, तो उसे पैरंट रीडर पर CloseContainer() को कॉल करके कंटेनर रीडर को एक तर्क के रूप में पास करके उसे बंद करना होगा. ऐप्लिकेशन दिए गए कंटेनर में मौजूद सभी एलिमेंट को पढ़े बिना या उन्हें पढ़े बिना, किसी भी समय कंटेनर रीडर को बंद कर सकते हैं. कंटेनर रीडर बंद होने के बाद, ऐप्लिकेशन में पैरंट रीडर का इस्तेमाल किया जा सकता है.

कंटेनर रीडर, पैरंट रीडर से कई कॉन्फ़िगरेशन प्रॉपर्टी इनहेरिट करता है. इनके उदाहरण हैं:

  • इंप्लिसिट प्रोफ़ाइल आईडी (ImplicitProfileId)
  • ऐप्लिकेशन डेटा पॉइंटर (AppData)
  • GetNextBuffer फ़ंक्शन पॉइंटर

जानकारी
पैरामीटर
[out] containerReader
TLVReader ऑब्जेक्ट का रेफ़रंस, जिसे मौजूदा कंटेनर एलिमेंट के सदस्यों को पढ़ने के लिए शुरू किया जाएगा. दिए गए ऑब्जेक्ट से जुड़ा कोई भी डेटा ओवरराइट हो जाता है.
रिटर्न वैल्यू
WEAVE_NO_ERROR
अगर तरीका काम कर गया है.
WEAVE_ERROR_INCORRECT_STATE
अगर मौजूदा एलिमेंट किसी कंटेनर एलिमेंट पर नहीं है.

स्किप करें

WEAVE_ERROR Skip(
  void
)

TLVReader ऑब्जेक्ट को, मौजूदा TLV एलिमेंट के तुरंत बाद ले जाता है.

स्किप() तरीका मौजूदा TLV एलिमेंट के बाद, रीडर ऑब्जेक्ट को इस तरह से सेट करता है कि Next() को बाद में किया जाने वाला कॉल, रीडर को नीचे दिए गए एलिमेंट पर भेज देगा. Next() की तरह ही, अगर रीडर को कॉल के समय किसी कंटेनर एलिमेंट पर रखा जाता है, तो कंटेनर के सदस्यों को स्किप कर दिया जाएगा. अगर रीडर को किसी एलिमेंट पर नहीं रखा गया है, तो उसकी पोज़िशन में कोई बदलाव नहीं होता.

जानकारी
रिटर्न वैल्यू
WEAVE_NO_ERROR
पाठक को किसी नए एलिमेंट पर लगाया गया है या नहीं.
WEAVE_END_OF_TLV
अगर कोई और एलिमेंट उपलब्ध नहीं है.
WEAVE_ERROR_TLV_UNDERRUN
अगर मौजूदा टीएलवी एन्कोडिंग समय से पहले खत्म हो गई हो.
WEAVE_ERROR_INVALID_TLV_ELEMENT
अगर रीडर को किसी अमान्य या काम न करने वाले TLV एलिमेंट टाइप का सामना करना पड़ा.
WEAVE_ERROR_INVALID_TLV_TAG
अगर पाठक को किसी अमान्य कॉन्टेक्स्ट में टीएलवी टैग मिला है.
other
कॉन्फ़िगर किए गए GetNextBuffer() फ़ंक्शन से मिले अन्य Weave या प्लैटफ़ॉर्म गड़बड़ी कोड. केवल तभी संभव है जब getNextBuffer गैर-NULL हो.

VerifyEndOfContainer

WEAVE_ERROR VerifyEndOfContainer(
  void
)

इससे यह पुष्टि होती है कि TVLReader ऑब्जेक्ट, TLV कंटेनर के आखिर में है.

VerifyEndOfContainer() का इस्तेमाल करके, यह पुष्टि की जाती है कि मौजूदा TLV कंटेनर में, पढ़ने के लिए कोई और TLV एलिमेंट नहीं है. यह एक सुविधा का तरीका है, जो Next() को कॉल करने और WEAVE_END_OF_TLV की रिटर्न वैल्यू की जांच करने के बराबर है.

जानकारी
रिटर्न वैल्यू
WEAVE_NO_ERROR
अगर पढ़ने के लिए कोई और टीएलवी एलिमेंट नहीं है, तो
WEAVE_ERROR_UNEXPECTED_TLV_ELEMENT
अगर कलेक्शन में कोई दूसरा TLV एलिमेंट मिला.
WEAVE_ERROR_TLV_UNDERRUN
अगर मौजूदा टीएलवी एन्कोडिंग समय से पहले खत्म हो गई हो.
WEAVE_ERROR_INVALID_TLV_ELEMENT
अगर रीडर को किसी अमान्य या काम न करने वाले TLV एलिमेंट टाइप का सामना करना पड़ा.
WEAVE_ERROR_INVALID_TLV_TAG
अगर पाठक को किसी अमान्य कॉन्टेक्स्ट में टीएलवी टैग मिला है.
other
कॉन्फ़िगर किए गए GetNextBuffer() फ़ंक्शन से मिले अन्य Weave या प्लैटफ़ॉर्म गड़बड़ी कोड. केवल तभी संभव है जब getNextBuffer गैर-NULL हो.

सुरक्षित किए गए फ़ंक्शन

ClearElementState

void ClearElementState(
  void
)

TLVReader की स्थिति हटाएं.

इस तरीके का इस्तेमाल, लोगों को टीएलवी के पहले टीएलवी से पहले, टीएलवी के बीच या आखिरी टीएलवी के बाद की पोज़िशन में करने के लिए किया जाता है.

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
)

डेस्टिनेशन बफ़र के बिना, मौजूदा टीएलवी में मौजूद किसी भी डेटा को पढ़ें और उसे छोड़ दें.

जानकारी
रिटर्न वैल्यू
WEAVE_NO_ERROR
क्या रीडर को डेटा के आखिर में रखा गया था.
other
कॉन्फ़िगर किए गए GetNextBuffer() फ़ंक्शन से मिले अन्य Weave या प्लैटफ़ॉर्म गड़बड़ी कोड. केवल तभी संभव है जब getNextBuffer गैर-NULL हो.

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
)