nl:: Weave:: TLV:: TLVWriter
#include <src/lib/core/WeaveTLV.h>
यह Weave TLV फ़ॉर्मैट में, डेटा लिखने के लिए मेमोरी की बचत करने वाला एन्कोडर देता है.
खास जानकारी
TLVWriter, Weave TLV डेटा के लिए सिर्फ़ फ़ॉरवर्ड करने की सुविधा वाला स्ट्रीम-स्टाइल एन्कोडर लागू करता है. ऐप्लिकेशन, लेखक के किसी put() तरीके को कॉल करके, डेटा को कोड में बदलने के तरीके में लिखते हैं. साथ ही, इससे जुड़े टैग और वैल्यू की जानकारी को ज़रूरत के हिसाब से पास करते हैं. इसी तरह ऐप्लिकेशन, लेखक के OpenContainer() या EnterContainer() तरीकों का इस्तेमाल करके, TLV कंटेनर टाइप (स्ट्रक्चर, ऐरे या पाथ) को कोड में बदल सकते हैं.
TLVWriter ऑब्जेक्ट, सीधे किसी तय आउटपुट बफ़र या एक या एक से ज़्यादाPetBuffer ऑब्जेक्ट की चेन में डेटा लिख सकता है. इसके अलावा, ऐप्लिकेशन अपने खुद के GetNewBuffer
और FinalizeBuffer
फ़ंक्शन देकर, आउटपुट को किसी आर्बिट्रेरी डेस्टिनेशन पर ले जा सकते हैं. जैसे, सॉकेट या इवेंट सूची.
इनहेरिटेंस
सीधे तौर पर मालूम सब-क्लास: nl::Weave::TLV::CircularTLVWriter
सुरक्षित किए गए टाइप |
|
---|---|
@72{
|
enum |
सार्वजनिक टाइप |
|
---|---|
FinalizeBufferFunct)(TLVWriter &writer, uintptr_t bufHandle, uint8_t *bufStart, uint32_t bufLen)
|
WEAVE_ERROR(*) TLVWriter ऑब्जेक्ट के आउटपुट को फ़ाइनल करने के लिए इस्तेमाल किया जाने वाला फ़ंक्शन. |
GetNewBufferFunct)(TLVWriter &writer, uintptr_t &bufHandle, uint8_t *&bufStart, uint32_t &bufLen)
|
WEAVE_ERROR(*) ऐसा फ़ंक्शन जो TLVWriter को नया आउटपुट बफ़र स्पेस देता है. |
सार्वजनिक एट्रिब्यूट |
|
---|---|
AppData
|
void *
पॉइंटर फ़ील्ड, जिसका इस्तेमाल ऐप्लिकेशन से जुड़े डेटा के लिए किया जा सकता है.
|
FinalizeBuffer
|
किसी फ़ंक्शन का पॉइंटर, जिसे TLVWriter को फ़ाइनल करने के बाद कॉल किया जाएगा.
|
GetNewBuffer
|
किसी फ़ंक्शन के लिए पॉइंटर, जो TLVWriter को नया आउटपुट बफ़र स्पेस देगा.
|
ImplicitProfileId
|
uint32_t
उन टैग का प्रोफ़ाइल आईडी जिन्हें इंप्लिसिट फ़ॉर्म में एन्कोड किया जाना चाहिए.
|
सुरक्षित एट्रिब्यूट |
|
---|---|
mBufHandle
|
uintptr_t
|
mBufStart
|
uint8_t *
|
mContainerType
|
|
mLenWritten
|
uint32_t
|
mMaxLen
|
uint32_t
|
mRemainingLen
|
uint32_t
|
mWritePoint
|
uint8_t *
|
सार्वजनिक फ़ंक्शन |
|
---|---|
CloseContainer(TLVWriter & containerWriter)
|
OpenContainer() को कॉल करने के बाद, टीएलवी कंटेनर को लिखने की प्रोसेस को पूरा करता है.
|
ContinuePutBytes(const uint8_t *buf, uint32_t len)
|
TLV बाइट स्ट्रिंग वैल्यू को कोड में बदलता है.
|
CopyContainer(TLVReader & container)
|
|
CopyContainer(uint64_t tag, TLVReader & container)
|
सदस्य एलिमेंट के पहले से कोड में बदले गए सेट से, टीएलवी कंटेनर एलिमेंट को कोड में बदलता है.
|
CopyContainer(uint64_t tag, const uint8_t *encodedContainer, uint16_t encodedContainerLen)
|
ऐसे टीएलवी कंटेनर एलिमेंट को कोड में बदलता है जिसमें पहले से कोड में बदले गए कंटेनर के मेंबर एलिमेंट शामिल होते हैं.
|
CopyElement(TLVReader & reader)
|
रीडर ऑब्जेक्ट से टीएलवी एलिमेंट को लेखक में कॉपी करता है.
|
CopyElement(uint64_t tag, TLVReader & reader)
|
|
EndContainer(TLVType outerContainerType)
|
टीएलवी कंटेनर एलिमेंट के कोड में बदलने की प्रोसेस पूरी करता है.
|
Finalize(void)
|
टीएलवी एन्कोडिंग का लिखना पूरा करें.
|
GetContainerType(void) const
|
उस कंटेनर का टाइप दिखाता है जिसमें TLVWriter अभी लिख रहा है.
|
GetLengthWritten(void)
|
uint32_t
लेखक के शुरू होने के बाद से अब तक लिखे गए बाइट की कुल संख्या दिखाता है.
|
Init(uint8_t *buf, uint32_t maxLen)
|
void
एक ही आउटपुट बफ़र में लिखने के लिए, TLVWriter ऑब्जेक्ट को शुरू करता है.
|
Init(PacketBuffer *buf, uint32_t maxLen)
|
void
किसी एक पैकेटबफ़र में लिखने के लिए, TLVWriter ऑब्जेक्ट को शुरू करता है.
|
Init(PacketBuffer *buf, uint32_t maxLen, bool allowDiscontiguousBuffers)
|
void
एक या उससे ज़्यादा BoxetBuffers में लिखने के लिए, TLVWriter ऑब्जेक्ट को शुरू करता है.
|
InitMalloced(uint8_t *& outBuf, uint32_t initialBufSize, uint32_t maxLen)
|
void
डाइनैमिक बफ़र में लिखने के लिए, TLVWriter ऑब्जेक्ट को शुरू करता है.
|
OpenContainer(uint64_t tag, TLVType containerType, TLVWriter & containerWriter)
|
|
Put(uint64_t tag, int8_t v)
|
टीएलवी की हस्ताक्षर की गई पूर्णांक वैल्यू को कोड में बदलता है.
|
Put(uint64_t tag, int8_t v, bool preserveSize)
|
टीएलवी की हस्ताक्षर की गई पूर्णांक वैल्यू को कोड में बदलता है.
|
Put(uint64_t tag, int16_t v)
|
|
Put(uint64_t tag, int16_t v, bool preserveSize)
|
|
Put(uint64_t tag, int32_t v)
|
|
Put(uint64_t tag, int32_t v, bool preserveSize)
|
|
Put(uint64_t tag, int64_t v)
|
|
Put(uint64_t tag, int64_t v, bool preserveSize)
|
|
Put(uint64_t tag, uint8_t v)
|
टीएलवी की ऐसी वैल्यू को कोड में बदलता है जिसे साइन नहीं किया गया है.
|
Put(uint64_t tag, uint8_t v, bool preserveSize)
|
टीएलवी की ऐसी वैल्यू को कोड में बदलता है जिसे साइन नहीं किया गया है.
|
Put(uint64_t tag, uint16_t v)
|
|
Put(uint64_t tag, uint16_t v, bool preserveSize)
|
|
Put(uint64_t tag, uint32_t v)
|
|
Put(uint64_t tag, uint32_t v, bool preserveSize)
|
|
Put(uint64_t tag, uint64_t v)
|
|
Put(uint64_t tag, uint64_t v, bool preserveSize)
|
|
Put(uint64_t tag, float v)
|
|
Put(uint64_t tag, double v)
|
टीएलवी के फ़्लोटिंग पॉइंट वैल्यू को कोड में बदलता है.
|
PutBoolean(uint64_t tag, bool v)
|
TLV बूलियन वैल्यू को कोड में बदलता है.
|
PutBytes(uint64_t tag, const uint8_t *buf, uint32_t len)
|
TLV बाइट स्ट्रिंग वैल्यू को कोड में बदलता है.
|
PutNull(uint64_t tag)
|
टीएलवी की शून्य वैल्यू को कोड में बदलता है.
|
PutPreEncodedContainer(uint64_t tag, TLVType containerType, const uint8_t *data, uint32_t dataLen)
|
सदस्य एलिमेंट के पहले से कोड में बदले गए सेट से, टीएलवी कंटेनर एलिमेंट को कोड में बदलता है.
|
PutString(uint64_t tag, const char *buf)
|
TLV UTF8 स्ट्रिंग वैल्यू को कोड में बदलता है.
|
PutString(uint64_t tag, const char *buf, uint32_t len)
|
TLV UTF8 स्ट्रिंग वैल्यू को कोड में बदलता है.
|
PutStringF(uint64_t tag, const char *fmt, ...)
|
टीएलवी एलिमेंट में दिए गए फ़ॉर्मैट के हिसाब से फ़ॉर्मैट किए गए स्ट्रिंग आउटपुट को कोड में बदलें.
|
StartContainer(uint64_t tag, TLVType containerType, TLVType & outerContainerType)
|
नए टीएलवी कंटेनर एलिमेंट को कोड में बदलना शुरू करता है.
|
StartPutBytes(uint64_t tag, uint32_t totalLen)
|
टीएलवी बाइट स्ट्रिंग को कई हिस्सों में कोड में बदलता है.
|
VPutStringF(uint64_t tag, const char *fmt, va_list ap)
|
टीएलवी एलिमेंट में दिए गए फ़ॉर्मैट के हिसाब से फ़ॉर्मैट किए गए स्ट्रिंग आउटपुट को कोड में बदलें.
|
सार्वजनिक स्टैटिक फ़ंक्शन |
|
---|---|
FinalizePacketBuffer(TLVWriter & writer, uintptr_t bufHandle, uint8_t *bufStart, uint32_t dataLen)
|
BoxetBuffers की चेन में लिखने के लिए, TLVWriter FinalizeBuffer फ़ंक्शन को लागू करना.
|
GetNewBuffer_Malloced(TLVWriter & writer, uintptr_t & bufHandle, uint8_t *& bufStart, uint32_t & bufLen)
|
किसी डाइनैमिक बफ़र में लिखने के लिए, TLVWriter के GetNewBuffer फ़ंक्शन को लागू करना.
|
GetNewPacketBuffer(TLVWriter & writer, uintptr_t & bufHandle, uint8_t *& bufStart, uint32_t & bufLen)
|
0PaetBuffers की चेन में लिखने के लिए, TLVWriter के GetNewBuffer फ़ंक्शन को लागू किया जाता है.
|
सुरक्षित किए गए फ़ंक्शन |
|
---|---|
IsCloseContainerReserved(void) const
|
bool
तय करें कि कंटेनर को शुरू करने / खोलने के पॉइंट पर कंटेनर को क्लोज़ कंटेनर के निशान के लिए जगह खाली करनी चाहिए या नहीं.
|
IsContainerOpen(void) const
|
bool
|
SetCloseContainerReserved(bool aCloseContainerReserved)
|
void
सेट करें कि कंटेनर को शुरू करते / खोलते समय, कंटेनर को उस जगह के आइकॉन के लिए जगह खाली करनी चाहिए या नहीं जहां इसे होना चाहिए.
|
SetContainerOpen(bool aContainerOpen)
|
void
|
WriteData(const uint8_t *p, uint32_t len)
|
|
WriteElementHead(TLVElementType elemType, uint64_t tag, uint64_t lenOrVal)
|
|
WriteElementWithData(TLVType type, uint64_t tag, const uint8_t *data, uint32_t dataLen)
|
सुरक्षित किए गए टाइप
@72
@72
सार्वजनिक टाइप
FinalizeBufferFunct
WEAVE_ERROR(* FinalizeBufferFunct)(TLVWriter &writer, uintptr_t bufHandle, uint8_t *bufStart, uint32_t bufLen)
TLVWriter ऑब्जेक्ट के आउटपुट को फ़ाइनल करने के लिए इस्तेमाल किया जाने वाला फ़ंक्शन.
इस तरह के फ़ंक्शन तब कॉल किए जाते हैं, जब किसी TLVWriter के फ़ाइनलाइज़() तरीके को कॉल किया जाता है. इस फ़ंक्शन से लेखक ऑब्जेक्ट के आउटपुट के इस्तेमाल से जुड़ी, कोई भी ज़रूरी क्लीनअप या फ़ाइनल प्रोसेस करने की उम्मीद की जाती है. इसके उदाहरणों में, एन्कोडिंग की आखिरी लंबाई को रिकॉर्ड करना या फ़ाइल डिस्क्रिप्टर को बंद करना जैसी चीज़ें शामिल हैं.
जानकारी | |||||||||
---|---|---|---|---|---|---|---|---|---|
पैरामीटर |
|
||||||||
रिटर्न वैल्यू |
|
GetNewBufferFunct
WEAVE_ERROR(* GetNewBufferFunct)(TLVWriter &writer, uintptr_t &bufHandle, uint8_t *&bufStart, uint32_t &bufLen)
ऐसा फ़ंक्शन जो TLVWriter को नया आउटपुट बफ़र स्पेस देता है.
इस तरह के फ़ंक्शन का इस्तेमाल, TLVWriter के लिए नया बफ़र स्पेस तैयार करने के लिए किया जाता है. कॉल किए जाने पर, फ़ंक्शन से उम्मीद की जाती है कि वह पॉइंटर उस मेमोरी में वापस चले जाए जहां नया डेटा लिखा जाना चाहिए. साथ ही, फ़ंक्शन के लिए तय की गई ज़्यादा से ज़्यादा लंबाई भी शामिल होनी चाहिए. यह फ़ंक्शन, डेटा को होल्ड करने के लिए नया बफ़र तय करके या किसी मौजूदा बफ़र से पहले से लिखे गए डेटा को मिटाकर, राइट स्पेस उपलब्ध करा सकता है.
जानकारी | |||||||||
---|---|---|---|---|---|---|---|---|---|
पैरामीटर |
|
||||||||
रिटर्न वैल्यू |
|
सार्वजनिक एट्रिब्यूट
AppData
void * AppData
पॉइंटर फ़ील्ड, जिसका इस्तेमाल ऐप्लिकेशन से जुड़े डेटा के लिए किया जा सकता है.
FinalizeBuffer
FinalizeBufferFunct FinalizeBuffer
किसी फ़ंक्शन का पॉइंटर, जिसे TLVWriter को फ़ाइनल करने के बाद कॉल किया जाएगा.
जब भी फ़ाइनलाइज़() मेथड को कॉल किया जाएगा, तब TLVWriter ऑब्जेक्ट, FinalizeBuffer फ़ंक्शन को कॉल करेगा. ऐप्लिकेशन फ़ाइनल() को कॉल करने से पहले किसी भी समय फ़ंक्शन पॉइंटर सेट कर सकते हैं. डिफ़ॉल्ट रूप से, पॉइंटर NULL पर सेट होता है. इसकी वजह से, फ़ाइनलाइज़() तरीके से फ़ंक्शन को कॉल करने से पहले ही रोका जा सकता है.
FinalizeBuffer फ़ंक्शन को लागू करने के बारे में ज़्यादा जानकारी पाने के लिए, FinalizeBufferFuntt टाइप की परिभाषा देखें.
GetNewBuffer
GetNewBufferFunct GetNewBuffer
किसी फ़ंक्शन के लिए पॉइंटर, जो TLVWriter को नया आउटपुट बफ़र स्पेस देगा.
जब भी ऐसा डेटा लिखने की कोशिश की जाएगी जो मौजूदा आउटपुट बफ़र के साइज़ से ज़्यादा है, तो TLVWriter ऑब्जेक्ट, GetNewBuffer फ़ंक्शन को कॉल करेगा. अगर वैल्यू को NULL (डिफ़ॉल्ट वैल्यू) पर सेट किया जाता है, तो आउटपुट डेटा मौजूदा बफ़र से ओवरफ़्लो होने पर लेखक, WEAVE_ERROR_NO_MEMORY दिखाएगा.
getNewBuffer को किसी ऐप्लिकेशन की मदद से किसी भी समय सेट किया जा सकता है. हालांकि, आम तौर पर इसे राइटर शुरू करते समय सेट किया जाता है.
getNewBuffer फ़ंक्शन को लागू करने के बारे में ज़्यादा जानकारी के लिए, GetNewBufferF ऐक्शन के टाइप की परिभाषा देखें.
ImplicitProfileId
uint32_t ImplicitProfileId
उन टैग का प्रोफ़ाइल आईडी जिन्हें इंप्लिसिट फ़ॉर्म में एन्कोड किया जाना चाहिए.
जब किसी लेखक को किसी नए एलिमेंट को कोड में बदलने के लिए कहा जाता है, तो नए एलिमेंट से जुड़े टैग का प्रोफ़ाइल आईडी, ImplicitProfileId
के सदस्य की वैल्यू से मेल खाता है. ऐसे में, लेखक इस प्रोसेस में प्रोफ़ाइल आईडी को छोड़कर, इंप्लिसिट फ़ॉर्म में टैग को कोड में बदल देगा.
डिफ़ॉल्ट रूप से, ImplicitProfileId
प्रॉपर्टी kProfileIdNotSpecification पर सेट होती है, जो लिखने वाले को निर्देश देती है कि वह इंप्लिसिट तरीके से कोड में बदले गए टैग का इस्तेमाल न करे. कोड में बदलने के टैग को इंप्लिसिट फ़ॉर्म में चालू करने के लिए, ऐप्लिकेशन किसी भी समय ImplicitProfileId
को सेट कर सकते हैं. यह सुविधा, कोड में बदलने के मौजूदा पॉइंट से शुरू होती है. सेट की जाने वाली सही प्रोफ़ाइल आईडी, आम तौर पर ऐप्लिकेशन के संदर्भ या बोले जा रहे प्रोटोकॉल पर निर्भर करती है.
सुरक्षित एट्रिब्यूट
mBufHandle
uintptr_t mBufHandle
mBufStart
uint8_t * mBufStart
mContainerType
TLVType mContainerType
mLenWritten
uint32_t mLenWritten
mMaxLen
uint32_t mMaxLen
mRemainingLen
uint32_t mRemainingLen
mWritePoint
uint8_t * mWritePoint
सार्वजनिक फ़ंक्शन
CloseContainer
WEAVE_ERROR CloseContainer( TLVWriter & containerWriter )
OpenContainer() को कॉल करने के बाद, टीएलवी कंटेनर को लिखने की प्रोसेस को पूरा करता है.
CloseContainer() का इस्तेमाल करके, OpenContainer() को कॉल करने के बाद, पैरंट TLVWriter ऑब्जेक्ट की स्थिति को पहले जैसा किया जाता है. OpenContainer() को किए जाने वाले हर कॉल के लिए, इसे CloseContainer() को एक मिलता-जुलता कॉल करना चाहिए. साथ ही, दोनों तरीकों के लिए एक ही कंटेनर राइटर का रेफ़रंस पास करना चाहिए.
जब CloseContainer() की वैल्यू दिखती है, तो हो सकता है कि ऐप्लिकेशन, कंटेनर एलिमेंट के बाद दिखने वाले अतिरिक्त TLV एलिमेंट लिखने के लिए, पैरंट राइटर का इस्तेमाल करना जारी रखें. इस स्थिति में, दिए गए कंटेनर राइटर को 'शुरू नहीं किया गया' माना जाना चाहिए और उसे फिर से शुरू किए बिना इस्तेमाल नहीं किया जाना चाहिए.
जानकारी | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
पैरामीटर |
|
||||||||||||
रिटर्न वैल्यू |
|
ContinuePutBytes
WEAVE_ERROR ContinuePutBytes( const uint8_t *buf, uint32_t len )
TLV बाइट स्ट्रिंग वैल्यू को कोड में बदलता है.
इसका इस्तेमाल StartputBytes के साथ करना चाहिए.
जानकारी | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
पैरामीटर |
|
||||||||||||
रिटर्न वैल्यू |
|
CopyContainer
WEAVE_ERROR CopyContainer( TLVReader & container )
TLVReader ऑब्जेक्ट से, TLV कंटेनर एलिमेंट कॉपी किया जा सकता है
CopyContainer() TLVReader ऑब्जेक्ट की मौजूदा जगह पर मौजूद, पहले से कोड में बदले गए कंटेनर एलिमेंट को कॉपी करके, एक नए TLV कंटेनर एलिमेंट को कोड में बदलता है. यह तरीका, नए कंटेनर के पूरे एलिमेंट को एक कॉल में लिखता है और सोर्स एन्कोडिंग से कंटेनर के टाइप, टैग, और एलिमेंट को कॉपी करता है. जब तरीका रिटर्न करता है, तो कंटेनर एलिमेंट के बाद, अतिरिक्त टीएलवी एलिमेंट लिखने के लिए, राइटर ऑब्जेक्ट का इस्तेमाल किया जा सकता है.
जानकारी | |||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
पैरामीटर |
|
||||||||||||||||||
रिटर्न वैल्यू |
|
CopyContainer
WEAVE_ERROR CopyContainer( uint64_t tag, TLVReader & container )
सदस्य एलिमेंट के पहले से कोड में बदले गए सेट से, टीएलवी कंटेनर एलिमेंट को कोड में बदलता है.
CopyContainer() तरीका एक नए TLV कंटेनर एलिमेंट (स्ट्रक्चर, ऐरे या पाथ) को कोड में बदलता है जिसमें TLVReader ऑब्जेक्ट से लिए गए मेंबर एलिमेंट का सेट शामिल होता है. तरीके को कॉल करने पर, दिए गए रीडर ऑब्जेक्ट को टीएलवी कंटेनर एलिमेंट पर रखा जाना चाहिए. कोड में बदले गए नए कंटेनर का टाइप और सदस्य, इनपुट कंटेनर के जैसे ही होंगे. नए कंटेनर के टैग को इनपुट पैरामीटर के तौर पर सेट किया गया है.
जब तरीका रिटर्न करता है, तो कंटेनर एलिमेंट के बाद, अतिरिक्त टीएलवी एलिमेंट लिखने के लिए, राइटर ऑब्जेक्ट का इस्तेमाल किया जा सकता है.
जानकारी | |||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
पैरामीटर |
|
||||||||||||||||||
रिटर्न वैल्यू |
|
CopyContainer
WEAVE_ERROR CopyContainer( uint64_t tag, const uint8_t *encodedContainer, uint16_t encodedContainerLen )
ऐसे टीएलवी कंटेनर एलिमेंट को कोड में बदलता है जिसमें पहले से कोड में बदले गए कंटेनर के मेंबर एलिमेंट शामिल होते हैं.
CopyContainer() तरीका एक नए TLV कंटेनर एलिमेंट (स्ट्रक्चर, ऐरे या पाथ) को कोड में बदलता है जिसमें, पहले से कोड में बदले गए कंटेनर के कॉन्टेंट से लिए गए, मेंबर के एलिमेंट का सेट शामिल होता है. जब तरीके को कॉल किया जाता है, तो दिए गए इनपुट बफ़र में डेटा को TLV कंटेनर एलिमेंट के रूप में पार्स किया जाता है. एक नया कंटेनर लिखा जाता है जिसका टाइप और सदस्य इनपुट कंटेनर के समान होते हैं. नए कंटेनर के टैग को इनपुट पैरामीटर के तौर पर सेट किया गया है.
जब तरीका रिटर्न करता है, तो कंटेनर एलिमेंट के बाद, अतिरिक्त टीएलवी एलिमेंट लिखने के लिए, राइटर ऑब्जेक्ट का इस्तेमाल किया जा सकता है.
जानकारी | |||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
पैरामीटर |
|
||||||||||||||||
रिटर्न वैल्यू |
|
CopyElement
WEAVE_ERROR CopyElement( TLVReader & reader )
रीडर ऑब्जेक्ट से टीएलवी एलिमेंट को लेखक में कॉपी करता है.
CopyElement() तरीका, एक नए TLV एलिमेंट को कोड में बदलता है. इसका टाइप, टैग, और वैल्यू, TLVReader ऑब्जेक्ट से ली जाती है. जब तरीके को कॉल किया जाता है, तो सप्लाई किए गए रीडर ऑब्जेक्ट को सोर्स टीएलवी एलिमेंट पर रखा जाना चाहिए. कोड में बदले गए नए एलिमेंट का टाइप, टैग, और कॉन्टेंट, इनपुट कंटेनर जैसा ही होगा. अगर दिया गया एलिमेंट TLV कंटेनर (स्ट्रक्चर, ऐरे या पाथ) है, तो कंटेनर का पूरा कॉन्टेंट कॉपी किया जाएगा.
जानकारी | |||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
पैरामीटर |
|
||||||||||||||||||
रिटर्न वैल्यू |
|
CopyElement
WEAVE_ERROR CopyElement( uint64_t tag, TLVReader & reader )
EndContainer
WEAVE_ERROR EndContainer( TLVType outerContainerType )
टीएलवी कंटेनर एलिमेंट के कोड में बदलने की प्रोसेस पूरी करता है.
EndContainer() की मदद से, TLV कंटेनर एलिमेंट को कोड में बदला जाता है और StartContainer() को पहले कॉल किए जाने के बाद, TLVWrite ऑब्जेक्ट की स्थिति को पहले जैसा किया जाता है. StartContainer() को हर कॉल के लिए, EndContainer() को हर कॉल करने के लिए, StartContainer() कॉल से मिलने वाली TLVType वैल्यू पास करनी चाहिए. जब EndContainer() की वैल्यू मिलती है, तब राइटर ऑब्जेक्ट का इस्तेमाल, कंटेनर एलिमेंट के बाद आने वाले TLV एलिमेंट लिखने के लिए किया जा सकता है.
जानकारी | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
पैरामीटर |
|
||||||||||||
रिटर्न वैल्यू |
|
फ़ाइनल करें
WEAVE_ERROR Finalize( void )
टीएलवी एन्कोडिंग का लिखना पूरा करें.
फ़ाइनलाइज़() तरीका, आउटपुट बफ़र के लिए टीएलवी एन्कोडिंग लिखने की प्रोसेस को पूरा करता है. बफ़र के कॉन्टेंट का इस्तेमाल करने से पहले ऐप्लिकेशन को यह तरीका कॉल करना होगा. फ़ाइनल() को सिर्फ़ तब कॉल किया जा सकता है, जब मौजूदा लेखक के लिए कोई कंटेनर राइटर नहीं खोला गया हो. (OpenContainer()
देखें).
जानकारी | |||||||
---|---|---|---|---|---|---|---|
रिटर्न वैल्यू |
|
GetContainerType
TLVType GetContainerType( void ) const
उस कंटेनर का टाइप दिखाता है जिसमें TLVWriter अभी लिख रहा है.
GetContainerType() तरीका, TLV कंटेनर का टाइप दिखाता है जिसमें अभी TLVWriter को शामिल किया जा रहा है. अगर TLVWriter किसी कंटेनर के अंदर एलिमेंट नहीं लिख रहा है (जैसे, अगर डेटा को कोड में बदलने के सबसे बाहरी लेवल पर लिखा जा रहा है), तो यह तरीका kTLVType_NotAllowed दिखाता है.
जानकारी | |
---|---|
लौटाए गए सामान |
मौजूदा कंटेनर का TLVType या अगर TLVWriter, किसी कंटेनर के अंदर एलिमेंट नहीं लिख रहा है, तो उसे kTLVType_NotAllowed चाहिए.
|
GetLengthWritten
uint32_t GetLengthWritten( void )
लेखक के शुरू होने के बाद से अब तक लिखे गए बाइट की कुल संख्या दिखाता है.
जानकारी | |
---|---|
लौटाए गए सामान |
राइटर शुरू करने के बाद से अब तक लिखे गए बाइट की कुल संख्या.
|
शुरू करें
void Init( uint8_t *buf, uint32_t maxLen )
शुरू करें
void Init( PacketBuffer *buf, uint32_t maxLen )
किसी एक पैकेटबफ़र में लिखने के लिए, TLVWriter ऑब्जेक्ट को शुरू करता है.
दिए गए बफ़र में मौजूदा डेटा के आखिरी बाइट के तुरंत बाद राइटिंग शुरू हो जाती है.
जानकारी | |||||
---|---|---|---|---|---|
पैरामीटर |
|
शुरू करें
void Init( PacketBuffer *buf, uint32_t maxLen, bool allowDiscontiguousBuffers )
एक या उससे ज़्यादा BoxetBuffers में लिखने के लिए, TLVWriter ऑब्जेक्ट को शुरू करता है.
तय किए गए बफ़र में मौजूदा डेटा के आखिरी बाइट के तुरंत बाद राइटिंग शुरू हो जाती है. अगर allowDiscontiguousBuffers
सही है, तो अतिरिक्त पैकेटबफ़र असाइन किए जाएंगे और उन्हें दिए गए बफ़र के साथ जोड़ा जाएगा. ऐसा, लिखे गए डेटा के हिसाब से किया जाएगा. अगर बताया गया आउटपुट बफ़र पहले से ही बफ़र की किसी चेन का हेड है, तो किसी भी नए बफ़र को तय करने से पहले, आउटपुट को चेन में बाद में आने वाले बफ़र में लिखा जाएगा.
जानकारी | |||||||
---|---|---|---|---|---|---|---|
पैरामीटर |
|
InitMalloced
void InitMalloced( uint8_t *& outBuf, uint32_t initialBufSize, uint32_t maxLen )
डाइनैमिक बफ़र में लिखने के लिए, TLVWriter ऑब्जेक्ट को शुरू करता है.
जानकारी | |||||||
---|---|---|---|---|---|---|---|
पैरामीटर |
|
OpenContainer
WEAVE_ERROR OpenContainer( uint64_t tag, TLVType containerType, TLVWriter & containerWriter )
TLV कंटेनर एलिमेंट के सदस्य लिखने के लिए, एक नए TLVWriter ऑब्जेक्ट को शुरू करता है.
OpenContainer() तरीके का इस्तेमाल, किसी एन्कोडिंग में TLV कंटेनर एलिमेंट (स्ट्रक्चर, ऐरे या पाथ) को लिखने के लिए किया जाता है. यह तरीका, नए कंटेनर के टाइप और टैग (अगर कोई है) और नए राइटर ऑब्जेक्ट (कंटेनर राइटर) का रेफ़रंस लेता है, जिसे कंटेनर के एलिमेंट लिखने के मकसद से शुरू किया जाएगा. ऐप्लिकेशन, कंटेनर राइटर का इस्तेमाल करके नए कंटेनर के सदस्यों को लिखते हैं और फिर कंटेनर एन्कोडिंग को पूरा करने के लिए, CloseContainer() को कॉल करते हैं.
कंटेनर राइटर खुला होने पर, ऐप्लिकेशन में कोई कॉल चालू नहीं किया जाना चाहिए. साथ ही, पैरंट राइटर की स्थिति में भी कोई बदलाव नहीं किया जाना चाहिए.
कंटेनर राइटर, पैरंट राइटर से कई कॉन्फ़िगरेशन प्रॉपर्टी इनहेरिट करता है. इनके उदाहरण हैं:
- इंप्लिसिट प्रोफ़ाइल आईडी (ImplicitProfileId)
- ऐप्लिकेशन डेटा पॉइंटर (AppData)
- GetNewBuffer और FinalizeBuffer फ़ंक्शन के पॉइंटर
जानकारी | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
पैरामीटर |
|
||||||||||||||
रिटर्न वैल्यू |
|
रखें
WEAVE_ERROR Put( uint64_t tag, int8_t v )
टीएलवी की हस्ताक्षर की गई पूर्णांक वैल्यू को कोड में बदलता है.
सुविधा के लिए दिया गया एक सदस्य का फ़ंक्शन ओवरलोड है. यह ऊपर दिए गए फ़ंक्शन से सिर्फ़ इस बात में अलग है कि वह किस तर्क को स्वीकार करता है.
जानकारी | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
पैरामीटर |
|
||||||||||||
रिटर्न वैल्यू |
|
रखें
WEAVE_ERROR Put( uint64_t tag, int8_t v, bool preserveSize )
टीएलवी की हस्ताक्षर की गई पूर्णांक वैल्यू को कोड में बदलता है.
सुविधा के लिए दिया गया एक सदस्य का फ़ंक्शन ओवरलोड है. यह ऊपर दिए गए फ़ंक्शन से सिर्फ़ इस बात में अलग है कि वह किस तर्क को स्वीकार करता है.
जानकारी | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
पैरामीटर |
|
||||||||||||
रिटर्न वैल्यू |
|
रखें
WEAVE_ERROR Put( uint64_t tag, int16_t v )
रखें
WEAVE_ERROR Put( uint64_t tag, int16_t v, bool preserveSize )
रखें
WEAVE_ERROR Put( uint64_t tag, int32_t v )
रखें
WEAVE_ERROR Put( uint64_t tag, int32_t v, bool preserveSize )
रखें
WEAVE_ERROR Put( uint64_t tag, int64_t v )
रखें
WEAVE_ERROR Put( uint64_t tag, int64_t v, bool preserveSize )
रखें
WEAVE_ERROR Put( uint64_t tag, uint8_t v )
टीएलवी की ऐसी वैल्यू को कोड में बदलता है जिसे साइन नहीं किया गया है.
सुविधा के लिए दिया गया एक सदस्य का फ़ंक्शन ओवरलोड है. यह ऊपर दिए गए फ़ंक्शन से सिर्फ़ इस बात में अलग है कि वह किस तर्क को स्वीकार करता है.
जानकारी | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
पैरामीटर |
|
||||||||||||
रिटर्न वैल्यू |
|
रखें
WEAVE_ERROR Put( uint64_t tag, uint8_t v, bool preserveSize )
टीएलवी की ऐसी वैल्यू को कोड में बदलता है जिसे साइन नहीं किया गया है.
सुविधा के लिए दिया गया एक सदस्य का फ़ंक्शन ओवरलोड है. यह ऊपर दिए गए फ़ंक्शन से सिर्फ़ इस बात में अलग है कि वह किस तर्क को स्वीकार करता है.
जानकारी | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
पैरामीटर |
|
||||||||||||
रिटर्न वैल्यू |
|
रखें
WEAVE_ERROR Put( uint64_t tag, uint16_t v )
रखें
WEAVE_ERROR Put( uint64_t tag, uint16_t v, bool preserveSize )
रखें
WEAVE_ERROR Put( uint64_t tag, uint32_t v )
रखें
WEAVE_ERROR Put( uint64_t tag, uint32_t v, bool preserveSize )
रखें
WEAVE_ERROR Put( uint64_t tag, uint64_t v )
रखें
WEAVE_ERROR Put( uint64_t tag, uint64_t v, bool preserveSize )
रखें
WEAVE_ERROR Put( uint64_t tag, float v )
रखें
WEAVE_ERROR Put( uint64_t tag, double v )
टीएलवी के फ़्लोटिंग पॉइंट वैल्यू को कोड में बदलता है.
सुविधा के लिए दिया गया एक सदस्य का फ़ंक्शन ओवरलोड है. यह ऊपर दिए गए फ़ंक्शन से सिर्फ़ इस बात में अलग है कि वह किस तर्क को स्वीकार करता है.
जानकारी | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
पैरामीटर |
|
||||||||||||
रिटर्न वैल्यू |
|
PutBoolean
WEAVE_ERROR PutBoolean( uint64_t tag, bool v )
TLV बूलियन वैल्यू को कोड में बदलता है.
जानकारी | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
पैरामीटर |
|
||||||||||||
रिटर्न वैल्यू |
|
PutBytes
WEAVE_ERROR PutBytes( uint64_t tag, const uint8_t *buf, uint32_t len )
TLV बाइट स्ट्रिंग वैल्यू को कोड में बदलता है.
जानकारी | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
पैरामीटर |
|
||||||||||||
रिटर्न वैल्यू |
|
PutNull
WEAVE_ERROR PutNull( uint64_t tag )
टीएलवी की शून्य वैल्यू को कोड में बदलता है.
जानकारी | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
पैरामीटर |
|
||||||||||||
रिटर्न वैल्यू |
|
PutPreEncodedContainer
WEAVE_ERROR PutPreEncodedContainer( uint64_t tag, TLVType containerType, const uint8_t *data, uint32_t dataLen )
सदस्य एलिमेंट के पहले से कोड में बदले गए सेट से, टीएलवी कंटेनर एलिमेंट को कोड में बदलता है.
PutPreEncodedContainer() का इस्तेमाल करने से, एक नए TLV कंटेनर एलिमेंट (स्ट्रक्चर, ऐरे या पाथ) को कोड में बदला जाता है. इसमें, पहले से कोड में बदले गए बफ़र से सदस्य के एलिमेंट का सेट शामिल होता है. इनपुट बफ़र में शून्य या ज़्यादा कोड में बदले गए TLV एलिमेंट शामिल होने चाहिए, जिनमें बताए गए कंटेनर टाइप से जुड़े नियमों का पालन करने वाले टैग शामिल हैं (उदाहरण के लिए, स्ट्रक्चर के सदस्यों के पास टैग होने चाहिए, जबकि ऐरे के सदस्यों के लिए नहीं).
यह तरीका, एक ही कॉल में पूरे कंटेनर एलिमेंट को कोड में बदल देता है. जब PutPreEncodedContainer() की वैल्यू दिखती है, तो कंटेनर एलिमेंट के बाद, अतिरिक्त TLV एलिमेंट लिखने के लिए, राइटर ऑब्जेक्ट का इस्तेमाल किया जा सकता है.
जानकारी | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
पैरामीटर |
|
||||||||||||||
रिटर्न वैल्यू |
|
PutString
WEAVE_ERROR PutString( uint64_t tag, const char *buf )
TLV UTF8 स्ट्रिंग वैल्यू को कोड में बदलता है.
जानकारी | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
पैरामीटर |
|
||||||||||||
रिटर्न वैल्यू |
|
PutString
WEAVE_ERROR PutString( uint64_t tag, const char *buf, uint32_t len )
TLV UTF8 स्ट्रिंग वैल्यू को कोड में बदलता है.
जानकारी | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
पैरामीटर |
|
||||||||||||
रिटर्न वैल्यू |
|
PutStringF
WEAVE_ERROR PutStringF( uint64_t tag, const char *fmt, ... )
टीएलवी एलिमेंट में दिए गए फ़ॉर्मैट के हिसाब से फ़ॉर्मैट किए गए स्ट्रिंग आउटपुट को कोड में बदलें.
पुट स्ट्रिंगएफ़, sprintf का एक ऐनलॉग है. इसमें आउटपुट को कैरेक्टर बफ़र के बजाय टीएलवी एलिमेंट में स्टोर किया जाता है. जब प्रिंट फ़ंक्शन को बढ़ाने की सुविधा उपलब्ध होती है, तब यह फ़ंक्शन नतीजे वाली स्ट्रिंग को स्टोरेज में इस्तेमाल कर पाता है. इसे लागू करने के दौरान, नीचे दिए गए Printf को बेहतर बनाने के लिए इस्तेमाल किया जा सकता है:
यह प्लैटफ़ॉर्म, कॉलबैक-आधारित vcbprintf
उपलब्ध कराता है. इसमें पुटचर की जगह, कस्टम कॉलबैक को कॉल किया जा सकता है.
यह प्लैटफ़ॉर्म vsnprintf
का एक वैरिएंट उपलब्ध कराता है, जिसे vsnprintf_ex
कहते हैं. यह पूरी तरह से Vnprintf की तरह ही काम करता है. हालांकि, इसमें आउटपुट के पहले n
वर्णों को छोड़ने के प्रावधान शामिल हैं.
ध्यान दें कि कॉलबैक-आधारित फ़ंक्शन सबसे आसान हो सकता है और कम से कम कोड का इस्तेमाल कर सकता है. हालांकि, vsprintf_ex
वाले फ़ंक्शन कम स्टैक का इस्तेमाल करेंगे.
अगर इनमें से कोई भी तरीका उपलब्ध नहीं है, लेकिन प्लैटफ़ॉर्म malloc
उपलब्ध कराता है, तो आउटपुट को होल्ड करने के लिए फ़ंक्शन अस्थायी बफ़र देगा. जब प्लैटफ़ॉर्म, Printf फ़ैमिली या मैलक के लिए न तो बेहतर बनाता है, तो आउटपुट में काट-छांट की जाती है, ताकि यह मौजूदा टीएलवी स्टोरेज में एक जैसी स्थिति में फ़िट हो सके
जानकारी | |||||||
---|---|---|---|---|---|---|---|
पैरामीटर |
|
||||||
रिटर्न वैल्यू |
|
StartContainer
WEAVE_ERROR StartContainer( uint64_t tag, TLVType containerType, TLVType & outerContainerType )
नए टीएलवी कंटेनर एलिमेंट को कोड में बदलना शुरू करता है.
StartContainer() तरीके का इस्तेमाल, एन्कोडिंग में TLV कंटेनर एलिमेंट (स्ट्रक्चर, ऐरे या पाथ) को लिखने के लिए किया जाता है. यह तरीका, नए कंटेनर के टाइप और टैग (अगर कोई हो) और TLVType वैल्यू का रेफ़रंस लेता है. इसका इस्तेमाल, कंटेनर में लिखने के दौरान लेखक के मौजूदा कॉन्टेक्स्ट को सेव करने के लिए किया जाता है.
जब StartContainer() तरीका काम करता है, तब कंटेनर के एलिमेंट लिखने के लिए, ऐप्लिकेशन को मौजूदा TLVWriter ऑब्जेक्ट का इस्तेमाल करना चाहिए. काम पूरा हो जाने के बाद, कंटेनर की एन्कोडिंग को पूरा करने के लिए, ऐप्लिकेशन को EndContainer() तरीके को कॉल करना चाहिए.
जानकारी | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
पैरामीटर |
|
||||||||||||||
रिटर्न वैल्यू |
|
StartPutBytes
WEAVE_ERROR StartPutBytes( uint64_t tag, uint32_t totalLen )
टीएलवी बाइट स्ट्रिंग को कई हिस्सों में कोड में बदलता है.
इसका इस्तेमाल कंटिन्यूइटबाइट्स के साथ किया जाना चाहिए.
जानकारी | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
पैरामीटर |
|
||||||||||||
रिटर्न वैल्यू |
|
वीपूटस्ट्रिंगएफ़
WEAVE_ERROR VPutStringF( uint64_t tag, const char *fmt, va_list ap )
टीएलवी एलिमेंट में दिए गए फ़ॉर्मैट के हिसाब से फ़ॉर्मैट किए गए स्ट्रिंग आउटपुट को कोड में बदलें.
पुट स्ट्रिंगएफ़, sprintf का एक ऐनलॉग है. इसमें आउटपुट को कैरेक्टर बफ़र के बजाय टीएलवी एलिमेंट में स्टोर किया जाता है. जब प्रिंट फ़ंक्शन को बढ़ाने की सुविधा उपलब्ध होती है, तब यह फ़ंक्शन नतीजे वाली स्ट्रिंग को स्टोरेज में इस्तेमाल कर पाता है. इसे लागू करने के दौरान, नीचे दिए गए Printf को बेहतर बनाने के लिए इस्तेमाल किया जा सकता है:
यह प्लैटफ़ॉर्म, कॉलबैक-आधारित vcbprintf
उपलब्ध कराता है. इसमें पुटचर की जगह, कस्टम कॉलबैक को कॉल किया जा सकता है.
यह प्लैटफ़ॉर्म vsnprintf
का एक वैरिएंट उपलब्ध कराता है, जिसे vsnprintf_ex
कहते हैं. यह पूरी तरह से Vnprintf की तरह ही काम करता है. हालांकि, इसमें आउटपुट के पहले n
वर्णों को छोड़ने के प्रावधान शामिल हैं.
ध्यान दें कि कॉलबैक-आधारित फ़ंक्शन सबसे आसान हो सकता है और कम से कम कोड का इस्तेमाल कर सकता है. हालांकि, vsprintf_ex
वाले फ़ंक्शन कम स्टैक का इस्तेमाल करेंगे.
अगर इनमें से कोई भी तरीका उपलब्ध नहीं है, लेकिन प्लैटफ़ॉर्म malloc
उपलब्ध कराता है, तो आउटपुट को होल्ड करने के लिए फ़ंक्शन अस्थायी बफ़र देगा. जब प्लैटफ़ॉर्म, Printf फ़ैमिली या मैलक के लिए न तो बेहतर बनाता है, तो आउटपुट में काट-छांट की जाती है, ताकि यह मौजूदा टीएलवी स्टोरेज में एक जैसी स्थिति में फ़िट हो सके
जानकारी | |||||||
---|---|---|---|---|---|---|---|
पैरामीटर |
|
||||||
रिटर्न वैल्यू |
|
सार्वजनिक स्टैटिक फ़ंक्शन
FinalizePacketBuffer
WEAVE_ERROR FinalizePacketBuffer( TLVWriter & writer, uintptr_t bufHandle, uint8_t *bufStart, uint32_t dataLen )
BoxetBuffers की चेन में लिखने के लिए, TLVWriter FinalizeBuffer फ़ंक्शन को लागू करना.
PaetBuffers की चेन में लिखने के लिए, TLVWriter का इस्तेमाल करते समय, FinalizePacketBuffer() फ़ंक्शन ज़रूरी फ़ाइनलाइज़ेशन करता है. फ़ंक्शन को GetNewPacketBuffer() फ़ंक्शन के साथ इस्तेमाल करने के लिए डिज़ाइन किया गया है.
FinalizePacketBuffer() फ़ंक्शन के एपीआई के बारे में ज़्यादा जानकारी के लिए, FinalizeBufferFuntt टाइप की परिभाषा देखें.
GetNewBuffer_Malloced
WEAVE_ERROR GetNewBuffer_Malloced( TLVWriter & writer, uintptr_t & bufHandle, uint8_t *& bufStart, uint32_t & bufLen )
किसी डाइनैमिक बफ़र में लिखने के लिए, TLVWriter के GetNewBuffer फ़ंक्शन को लागू करना.
GetNewBuffer_Malloced() फ़ंक्शन, एन्कोडिंग को स्टोर करने के लिए, मौजूदा डाइनैमिक बफ़र का साइज़ दोगुना करके TLVWriter को नया आउटपुट स्पेस देता है. इस फ़ंक्शन को इस तरह से डिज़ाइन किया गया है कि इसे TLVWriter GetNewBuffer फ़ंक्शन पॉइंटर को असाइन किया जा सके.
GetNewBuffer_Malloced() फ़ंक्शन के एपीआई के बारे में ज़्यादा जानकारी के लिए getNewBufferFuntt टाइप की परिभाषा देखें.
GetNewPacketBuffer
WEAVE_ERROR GetNewPacketBuffer( TLVWriter & writer, uintptr_t & bufHandle, uint8_t *& bufStart, uint32_t & bufLen )
0PaetBuffers की चेन में लिखने के लिए, TLVWriter के GetNewBuffer फ़ंक्शन को लागू किया जाता है.
GetNewPacketBuffer() फ़ंक्शन, TLVWriter को नया आउटपुट स्पेस देता है. इसके लिए, वह एन्कोडिंग को स्टोर करने के लिए, एक या एक से ज़्यादाPacketBuffers की चेन को ज़रूरत के हिसाब से तय करता है. इस फ़ंक्शन को इस तरह से डिज़ाइन किया गया है कि इसे TLVWriter GetNewBuffer फ़ंक्शन पॉइंटर को असाइन किया जा सके.
ध्यान रखें कि TLVWriter के साथ getNewPacketBuffer का इस्तेमाल करते समय, बफ़र चेन को फ़ाइनल करने के लिए, इससे जुड़े FinalizePacketBuffer() फ़ंक्शन (या इसके बराबर का कोई दूसरा फ़ंक्शन) का भी इस्तेमाल किया जाना चाहिए.
GetNewPacketBuffer() फ़ंक्शन के एपीआई के बारे में ज़्यादा जानकारी के लिए, GetNewBufferF ऐक्शन के टाइप की परिभाषा देखें.
सुरक्षित किए गए फ़ंक्शन
IsCloseContainerReserved
bool IsCloseContainerReserved( void ) const
तय करें कि कंटेनर को शुरू करने / खोलने के पॉइंट पर कंटेनर को क्लोज़ कंटेनर के निशान के लिए जगह खाली करनी चाहिए या नहीं.
IsContainerOpen
bool IsContainerOpen( void ) const
SetCloseContainerReserved
void SetCloseContainerReserved( bool aCloseContainerReserved )
सेट करें कि कंटेनर को शुरू करते / खोलते समय, कंटेनर को उस जगह के आइकॉन के लिए जगह खाली करनी चाहिए या नहीं जहां इसे होना चाहिए.
SetContainerOpen
void SetContainerOpen( bool aContainerOpen )
WriteData
WEAVE_ERROR WriteData( const uint8_t *p, uint32_t len )
WriteElementHead
WEAVE_ERROR WriteElementHead( TLVElementType elemType, uint64_t tag, uint64_t lenOrVal )
WriteElementWithData
WEAVE_ERROR WriteElementWithData( TLVType type, uint64_t tag, const uint8_t *data, uint32_t dataLen )