संग्रह की मदद से व्यवस्थित रहें अपनी प्राथमिकताओं के आधार पर, कॉन्टेंट को सेव करें और कैटगरी में बांटें.

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

जानकारी
पैरामीटर
[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 शून्य पर सेट होना चाहिए.
other
अन्य Weave या प्लैटफ़ॉर्म के हिसाब से गड़बड़ी के कोड, जो बताते हैं कि कोई गड़बड़ी होने की वजह से फ़ंक्शन को अनुरोध किया गया डेटा नहीं मिल पा रहा था.

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

ऐप्लिकेशन का डेटा

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' पर विचार करना चाहिए. इसे फिर से शुरू किए बिना इसका इस्तेमाल नहीं करना चाहिए.

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

डपबाइट

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

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

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

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

डपस्ट्रिंग

WEAVE_ERROR DupString(
  char *& buf
)

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

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

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

कंटेनर डालें

WEAVE_ERROR EnterContainer(
  TLVType & outerContainerType
)

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

Enterकंटेनर() तरीका TLVReader ऑब्जेक्ट को TLV कंटेनर (अरे, पाथ या पाथ) के सदस्य एलिमेंट पढ़ने के लिए तैयार करता है. EnterCONTAINER() ऐप्लिकेशन पर किए जाने वाले हर कॉल के लिए, Exitकंटेनर() से जुड़ा कॉल करना ज़रूरी है.

जब EnterCONTAINER() को TLVReader ऑब्जेक्ट कहा जाता है, तो उसे पढ़ने के लिए कंटेनर एलिमेंट पर पोज़िशन करना ज़रूरी है. इस तरीके को एक TLVType मान के रूप में एक तर्क के रूप में लिया जाता है. इसका इस्तेमाल रीडर के संदर्भ को सेव करते समय किया जाता है, जब वह कंटेनर को पढ़ रहा होता है.

EnterCONTAINER() तरीके से रिटर्न करने पर, रीडर को कंटेनर के पहले सदस्य के पहले सेट किया जाता है. बार-बार Next() को कॉल करने पर, रीडर को कलेक्शन के सदस्यों के आखिर तक तब तक भेजा जाएगा, जब तक कि वह खत्म नहीं हो जाता. इस दौरान, रीडर WEAVE_END_OF_TLV दिखाएगा.

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

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

प्रोग्राम से बाहर निकलें

WEAVE_ERROR ExitContainer(
  TLVType outerContainerType
)

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

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

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

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

जानकारी
पैरामीटर
[in] outerContainerType
TLVType मान जो EnterCONTAINER() तरीके से लौटाया गया था.
सामान लौटाने की वैल्यू
WEAVE_NO_ERROR
अगर तरीका पूरा हो गया हो.
WEAVE_ERROR_INCORRECT_STATE
अगर OpenCONTAINER() को, रीडर पर कॉल नहीं किया गया है या अगर कंटेनर रीडर, Openकंटेनर() पास किए गए तरीके से मेल नहीं खाता है.
WEAVE_ERROR_TLV_UNDERRUN
अगर उसमें मौजूद टीएलवी एन्कोडिंग समय से पहले खत्म हो गई है.
WEAVE_ERROR_INVALID_TLV_ELEMENT
अगर रीडर को अमान्य या काम न करने वाला टीएलवी एलिमेंट टाइप मिला है.
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
अगर मौजूदा एलिमेंट टीएलवी बूलियन टाइप नहीं है या एलिमेंट को रीडर पर नहीं रखा गया है.

पाएं

WEAVE_ERROR Get(
  int8_t & v
)

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

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

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

पाएं

WEAVE_ERROR Get(
  int16_t & v
)

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

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

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

पाएं

WEAVE_ERROR Get(
  int32_t & v
)

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

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

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

पाएं

WEAVE_ERROR Get(
  int64_t & v
)

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

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

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

पाएं

WEAVE_ERROR Get(
  uint8_t & v
)

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

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

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

पाएं

WEAVE_ERROR Get(
  uint16_t & v
)

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

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

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

पाएं

WEAVE_ERROR Get(
  uint32_t & v
)

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

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

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

पाएं

WEAVE_ERROR Get(
  uint64_t & v
)

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

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

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

पाएं

WEAVE_ERROR Get(
  float & v
)

पाएं

WEAVE_ERROR Get(
  double & v
)

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

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

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

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

लंबाई बढ़ाएं

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

जानकारी
पैरामीटर
[in] buf
बाइट स्ट्रिंग डेटा पाने के लिए बफ़र की ओर एक पॉइंटर.
[in] bufSize
बफ़र के साइज़ की जानकारी, buf में दी गई है.
सामान लौटाने की वैल्यू
WEAVE_NO_ERROR
अगर तरीका पूरा हो गया हो.
WEAVE_ERROR_WRONG_TLV_TYPE
अगर मौजूदा एलिमेंट TLV बाइट या UTF8 स्ट्रिंग नहीं है या रीडर किसी एलिमेंट पर पोज़िशन नहीं है.
WEAVE_ERROR_BUFFER_TOO_SMALL
अगर उपलब्ध बफ़र, मौजूदा एलिमेंट से जुड़े डेटा को होल्ड करने के लिए बहुत छोटा है.
WEAVE_ERROR_TLV_UNDERRUN
अगर उसमें मौजूद टीएलवी एन्कोडिंग समय से पहले खत्म हो गई है.
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_Not specified होगी.

इनिट

void Init(
  const TLVReader & aReader
)

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

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

इनिट

void Init(
  const uint8_t *data,
  uint32_t dataLen
)

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

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

इनिट

void Init(
  PacketBuffer *buf,
  uint32_t maxLen
)

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

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

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

इनिट

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

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

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

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

आगे बढ़ें

WEAVE_ERROR Next(
  void
)

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

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

आगे बढ़ें

WEAVE_ERROR Next(
  TLVType expectedType,
  uint64_t expectedTag
)

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

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

ओपन कंटेनर

WEAVE_ERROR OpenContainer(
  TLVReader & containerReader
)

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

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

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

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

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

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

EndEndOfCONTAINER

WEAVE_ERROR VerifyEndOfContainer(
  void
)

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

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

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

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

ClearElementState

void ClearElementState(
  void
)

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

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

एलिमेंट टाइप

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

स्किप कंटेनर

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
)