nl::Weave::TLV::TLVReader

#include <src/lib/core/WeaveTLV.h>

Weave TLV फ़ॉर्मैट में एन्कोड किए गए डेटा के लिए एक मेमोरी कुशल पार्सर देता है.

खास जानकारी

TLVReader, Weave TLV डेटा के लिए एक फ़ॉरवर्ड-ओनली, “पुल-स्टाइल” पार्सर लागू करता है. TLVReader ऑब्जेक्ट, कर्सर की तरह काम करता है. इसका इस्तेमाल, TLV एलिमेंट के क्रम को दोहराने और उनके कॉन्टेंट को समझने के लिए किया जा सकता है. किसी एलिमेंट के साथ रखे जाने पर, ऐप्लिकेशन मौजूदा एलिमेंट के टाइप और टैग के बारे में क्वेरी करने और उससे जुड़ी वैल्यू को एक्सट्रैक्ट करने के लिए, पाठक के Get() तरीकों को कॉल कर सकते हैं. एक एलिमेंट से दूसरे एलिमेंट पर जाने के लिए, रीडर के Next() तरीके का इस्तेमाल किया जाता है.

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

जब रीडर, TLV एन्कोडिंग के आखिर या कंटेनर के आखिरी एलिमेंट तक पहुंचता है, तो यह Next() तरीके से WEAVE_END_OF_TLV गड़बड़ी लौटाकर ऐप्लिकेशन को सिग्नल देता है. जब तक इसे फिर से चालू नहीं किया जाता, तब तक रीडर WEAVE_END_OF_TLV दिखाता रहेगा या मौजूदा कंटेनर (CloseContainer() / 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)
TLV कंटेनर एलिमेंट के सदस्यों को पढ़ने के लिए, TLVReader ऑब्जेक्ट तैयार करता है.
ExitContainer(TLVType outerContainerType)
यह फ़ंक्शन, TLV कंटेनर की रीडिंग को पूरा करता है. साथ ही, कंटेनर के बाद एलिमेंट को पढ़ने के लिए, 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)
TLV बाइट या 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
यह विकल्प, मौजूदा TLV एलिमेंट से जुड़ा टैग दिखाता है.
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
किसी एक PacketBuffer से पढ़ने के लिए, TLVReader ऑब्जेक्ट को शुरू करता है.
Init(PacketBuffer *buf, uint32_t maxLen, bool allowDiscontiguousBuffers)
void
एक या ज़्यादा PacketBuffers से पढ़ने के लिए, 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
यह एक निजी तरीका है, जिसका इस्तेमाल 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)
मौजूदा TLV में शामिल किसी भी डेटा को छोड़कर, उसे डेस्टिनेशन बफ़र के बिना पढ़े.
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 पर फ़ीड करने के लिए किया जाता है. कॉल किए जाने पर, फ़ंक्शन से पाठक के लिए अतिरिक्त डेटा जनरेट करने की उम्मीद की जाती है, ताकि वह पार्स करने या पढ़ने वाले को यह सिग्नल दे सके कि उसके पास कोई और डेटा नहीं है.

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

सार्वजनिक विशेषताएं

AppData

void * AppData

एक पॉइंटर फ़ील्ड, जिसका इस्तेमाल ऐप्लिकेशन-विशिष्ट डेटा के लिए किया जा सकता है.

GetNextBuffer

GetNextBufferFunct GetNextBuffer

किसी फ़ंक्शन का पॉइंटर, जो TLVReader ऑब्जेक्ट के लिए इनपुट डेटा जनरेट करेगा.

अगर इस वैल्यू को शून्य (डिफ़ॉल्ट वैल्यू) पर सेट किया जाता है, तो पाठक यह मानेगा कि कोई और इनपुट डेटा उपलब्ध नहीं है.

GetNextBuffer को किसी भी समय ऐप्लिकेशन की मदद से सेट किया जा सकता है. हालांकि, आम तौर पर इसे तब सेट किया जाता है, जब रीडर शुरू किया जाता है.

GetNextBufferFunct प्रकार की परिभाषा देखें और GetNextBuffer फ़ंक्शन को लागू करने के बारे में ज़्यादा जानकारी पाएं.

ImplicitProfileId

uint32_t ImplicitProfileId

अस्पष्ट रूप में एन्कोड किए गए प्रोफ़ाइल टैग के लिए उपयोग की जाने वाली प्रोफ़ाइल आईडी.

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

डिफ़ॉल्ट रूप से, ImplicitProfileId प्रॉपर्टी kProfileIdNotEdit पर सेट होती है. TLV को डिकोड करते समय, जिसमें साफ़ तौर पर कोड में बदले गए टैग शामिल हैं, ऐप्लिकेशन को इस तरह के टैग वाले किसी भी TLV एलिमेंट को पढ़ने से पहले ImplicitProfileId को सेट करना चाहिए. सही प्रोफ़ाइल आईडी आम तौर पर, ऐप्लिकेशन के संदर्भ या बोले जा रहे प्रोटोकॉल पर निर्भर करता है.

अगर ImplicitProfileId को kProfileIdNotSpecification पर सेट किया जाता है और अगर कोड में बदला गया कोई टैग मिलता है, तो रीडर 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 कंटेनर की रीडिंग पूरी होती है.

OpenContainer() को कॉल करने के बाद, CloseContainer() तरीका, पैरंट TLVReader ऑब्जेक्ट की स्थिति को पहले जैसा करता है. OpenContainer() को किए जाने वाले हर कॉल के लिए, CloseContainer() के लिए एक कॉल करना चाहिए. इससे, दोनों तरीकों में एक ही कंटेनर रीडर का रेफ़रंस पास किया जाता है.

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

ऐप्लिकेशन किसी भी समय पैरंट रीडर पर, Close CloseContainer() को कॉल कर सकते हैं. भले ही, मौजूदा कंटेनर के सभी एलिमेंट पढ़े गए हों. CloseContainer() को कॉल करने के बाद, ऐप्लिकेशन को कंटेनर रीडर 'de-startized' पर विचार करना चाहिए और इसे फिर से शुरू किए बिना इसका इस्तेमाल न करें.

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

DupBytes

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

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

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

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

DupString

WEAVE_ERROR DupString(
  char *& buf
)

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

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

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

EnterContainer

WEAVE_ERROR EnterContainer(
  TLVType & outerContainerType
)

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

EnterContainer() तरीका, मौजूदा TLVReader ऑब्जेक्ट को किसी TLV कंटेनर (संरचना, अरे या पाथ) के सदस्य एलिमेंट को पढ़ना शुरू करने के लिए तैयार करता है. 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
)

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

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

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

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

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

पाएं

WEAVE_ERROR Get(
  bool & v
)

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

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

पाएं

WEAVE_ERROR Get(
  int8_t & v
)

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

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

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

पाएं

WEAVE_ERROR Get(
  int16_t & v
)

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

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

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

पाएं

WEAVE_ERROR Get(
  int32_t & v
)

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

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

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

पाएं

WEAVE_ERROR Get(
  int64_t & v
)

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

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

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

पाएं

WEAVE_ERROR Get(
  uint8_t & v
)

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

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

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

पाएं

WEAVE_ERROR Get(
  uint16_t & v
)

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

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

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

पाएं

WEAVE_ERROR Get(
  uint32_t & v
)

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

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

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

पाएं

WEAVE_ERROR Get(
  uint64_t & v
)

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

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

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

पाएं

WEAVE_ERROR Get(
  float & v
)

पाएं

WEAVE_ERROR Get(
  double & v
)

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

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

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
अगर मौजूदा एलिमेंट, TLV बाइट या UTF8 स्ट्रिंग नहीं है या रीडर को किसी एलिमेंट पर पोज़िशन नहीं किया गया है.
WEAVE_ERROR_BUFFER_TOO_SMALL
अगर दिया गया बफ़र, मौजूदा एलिमेंट से जुड़े डेटा को सेव रखने के लिए बहुत छोटा है.
WEAVE_ERROR_TLV_UNDERRUN
अगर मौजूद TLV एन्कोडिंग समय से पहले खत्म हो गई.
other
कॉन्फ़िगर किए गए GetNextBuffer() फ़ंक्शन से मिले अन्य Weave या प्लैटफ़ॉर्म की गड़बड़ी के कोड. सिर्फ़ तब मुमकिन है, जब GetNextBuffer शून्य हो.

GetContainerType

TLVType GetContainerType(
  void
) const 

उस कंटेनर का टाइप दिखाता है जिसमें TLVReader दिख रहा है.

GetContainerType() तरीका, TLV कंटेनर का टाइप दिखाता है, जिसमें TLVReader डेटा पढ़ा जा रहा है. अगर TLVReader को TLV एन्कोडिंग के सबसे बाहरी लेवल पर सेट किया गया है (जैसे कि सबसे बाहरी TLV एलिमेंट के पहले, उस पर या बाद में), तो यह तरीका kTLVType_NotSafe दिखाएगा.

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

GetControlByte

uint16_t GetControlByte(
  void
) const 

यह फ़ंक्शन मौजूदा TLV एलिमेंट से जुड़ा कंट्रोल बाइट दिखाता है.

आम तौर पर, किसी को भी कंट्रोल बाइट के बारे में जानने की ज़रूरत नहीं होती है. इसका ऐक्सेस, सिर्फ़ TLV के इंटरनल इंप्लिमेंटेशन के पास होना चाहिए. इसके बावजूद, कंट्रोल बाइट का ऐक्सेस होने से, TLVDebugउपयोगिताएं की मदद से डीबग करने में मदद मिलती है. ये सुविधाएं, TLV बफ़र कॉन्टेंट को अच्छी तरह से प्रिंट करते समय, टैग कंट्रोल बाइट को डिकोड करने की कोशिश करती हैं.

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

GetDataPtr

WEAVE_ERROR GetDataPtr(
  const uint8_t *& data
)

TLV बाइट या UTF8 स्ट्रिंग एलिमेंट के शुरुआती एन्कोड किए गए बाइट का पॉइंटर पाएं.

यह तरीका, दिए गए इनपुट बफ़र में कोड में बदली गई स्ट्रिंग की वैल्यू का डायरेक्ट पॉइंटर दिखाता है. सफल होने के लिए, तरीके में स्ट्रिंग की पूरी वैल्यू एक बफ़र में होनी चाहिए. ऐसा न होने पर, यह तरीका WEAVE_ERROR_TLV_UNDERRUN दिखाता है. यह एक से ज़्यादा अलग-अलग बफ़र से डेटा पढ़ते समय, सीमित इस्तेमाल के तरीके को बनाता है.

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

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
अगर मौजूदा एलिमेंट, TLV बाइट या UTF8 स्ट्रिंग नहीं है या रीडर को किसी एलिमेंट पर पोज़िशन नहीं किया गया है.
WEAVE_ERROR_BUFFER_TOO_SMALL
अगर दिया गया बफ़र, मौजूदा एलिमेंट से जुड़े डेटा को सेव रखने के लिए बहुत छोटा है.
WEAVE_ERROR_TLV_UNDERRUN
अगर मौजूद TLV एन्कोडिंग समय से पहले खत्म हो गई.
other
कॉन्फ़िगर किए गए GetNextBuffer() फ़ंक्शन से मिले अन्य Weave या प्लैटफ़ॉर्म की गड़बड़ी के कोड. सिर्फ़ तब मुमकिन है, जब GetNextBuffer शून्य हो.

GetTag

uint64_t GetTag(
  void
) const 

यह विकल्प, मौजूदा TLV एलिमेंट से जुड़ा टैग दिखाता है.

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

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

GetType

TLVType GetType(
  void
) const 

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

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

Init

void Init(
  const TLVReader & aReader
)

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

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

Init

void Init(
  const uint8_t *data,
  uint32_t dataLen
)

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

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

Init

void Init(
  PacketBuffer *buf,
  uint32_t maxLen
)

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

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

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

Init

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

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

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

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

अगला

WEAVE_ERROR Next(
  void
)

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

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

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

जब किसी खास कंटेनमेंट में कोई और एलिमेंट नहीं होगा, तो Next() तरीका WEAVE_END_OF_TLV दिखाएगा. साथ ही, पाठक की पोज़िशन में कोई बदलाव नहीं होगा.

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

अगला

WEAVE_ERROR Next(
  TLVType expectedType,
  uint64_t expectedTag
)

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

Next(TLVType अपेक्षितType, 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
अगर मौजूद TLV एन्कोडिंग समय से पहले खत्म हो गई.
WEAVE_ERROR_INVALID_TLV_ELEMENT
अगर रीडर को अमान्य या काम न करने वाले TLV एलिमेंट टाइप का पता चला है.
WEAVE_ERROR_INVALID_TLV_TAG
अगर पाठक को किसी अमान्य कॉन्टेक्स्ट में TLV टैग मिला है.
other
कॉन्फ़िगर किए गए GetNextBuffer() फ़ंक्शन से मिले अन्य Weave या प्लैटफ़ॉर्म की गड़बड़ी के कोड. सिर्फ़ तब मुमकिन है, जब GetNextBuffer शून्य हो.

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
अगर मौजूद TLV एन्कोडिंग समय से पहले खत्म हो गई.
WEAVE_ERROR_INVALID_TLV_ELEMENT
अगर रीडर को अमान्य या काम न करने वाले TLV एलिमेंट टाइप का पता चला है.
WEAVE_ERROR_INVALID_TLV_TAG
अगर पाठक को किसी अमान्य कॉन्टेक्स्ट में TLV टैग मिला है.
other
कॉन्फ़िगर किए गए GetNextBuffer() फ़ंक्शन से मिले अन्य Weave या प्लैटफ़ॉर्म की गड़बड़ी के कोड. सिर्फ़ तब मुमकिन है, जब GetNextBuffer शून्य हो.

VerifyEndOfContainer

WEAVE_ERROR VerifyEndOfContainer(
  void
)

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

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

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

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

ClearElementState

void ClearElementState(
  void
)

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

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

ElementType

TLVElementType ElementType(
  void
) const 

यह एक निजी तरीका है, जो mControlByte से TLVElementType दिखाता है.

EnsureData

WEAVE_ERROR EnsureData(
  WEAVE_ERROR noDataErr
)

GetElementHeadLength

WEAVE_ERROR GetElementHeadLength(
  uint8_t & elemHeadBytes
) const 

यह एक निजी तरीका है, जिसका इस्तेमाल TLV एलिमेंट हेड की लंबाई का पता लगाने के लिए किया जाता है.

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
)

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

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

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
)