nl:: बुना::TLV::TLVWriter

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

Weave TLV प्रारूप में डेटा लिखने के लिए मेमोरी बचाने वाला एक एन्कोडर उपलब्ध कराता है.

खास जानकारी

TLVWriter, Weave TLV डेटा के लिए फ़ॉरवर्ड-ओनली, स्ट्रीम-स्टाइल एन्कोडर लागू करता है. ऐप्लिकेशन, लेखक और #39;s Put() मेथड में से किसी एक को कॉल करके, कोड में बदलने का तरीका बताते हैं. इसके लिए, ज़रूरत के मुताबिक टैग और वैल्यू की जानकारी दी जाती है. इसी तरह, ऐप्लिकेशन, लेखक और #39;s OpenContainer() या EnterContainer() तरीके को कॉल करके, TLV कंटेनर टाइप (इंफ़्रास्ट्रक्चर, कैटगरी या पाथ) को कोड में बदल सकते हैं.

TLVWriter ऑब्जेक्ट, सीधे तय किए गए आउटपुट बफ़र या एक या ज़्यादा PacketBuffer ऑब्जेक्ट की चेन पर डेटा लिख सकता है. साथ ही, ऐप्लिकेशन किसी आर्बिट्रेरी डेस्टिनेशन, जैसे कि सॉकेट या इवेंट की सूची में आउटपुट भेजने के लिए, अपने GetNewBuffer और FinalizeBuffer फ़ंक्शन दे सकते हैं.

इनहेरिटेंस

सीधे तौर पर मालूम सब-क्लास: nl::Weave::TLV::CircularTLVWriter

सुरक्षित प्रकार

@72{
  kEndOfContainerMarkerSize = 1
}
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() पर कॉल करने के बाद, TLV कंटेनर को लिखने का काम पूरा कर लेता है.
ContinuePutBytes(const uint8_t *buf, uint32_t len)
TLV बाइट स्ट्रिंग मान को कोड में बदलता है.
CopyContainer(TLVReader & container)
TLVReader ऑब्जेक्ट से, TLV कंटेनर एलिमेंट कॉपी करता है.
CopyContainer(uint64_t tag, TLVReader & container)
यह पहले से एन्कोड किए गए सदस्य एलिमेंट से TLV कंटेनर एलिमेंट को कोड में बदलता है.
CopyContainer(uint64_t tag, const uint8_t *encodedContainer, uint16_t encodedContainerLen)
यह TLV कंटेनर एलिमेंट को कोड में बदलता है, जिसमें पहले से एन्कोड किए गए कंटेनर के सदस्य एलिमेंट शामिल हैं.
CopyElement(TLVReader & reader)
रीडर ऑब्जेक्ट में से TLV एलिमेंट को लेखक में कॉपी करता है.
CopyElement(uint64_t tag, TLVReader & reader)
EndContainer(TLVType outerContainerType)
यह TLV कंटेनर एलिमेंट की एन्कोडिंग को पूरा करता है.
Finalize(void)
TLV एन्कोडिंग लिखने की प्रक्रिया पूरी करें.
GetContainerType(void) const
उस तरह का कंटेनर दिखाता है जिसमें TLVWriter इस समय लिख रहा है.
GetLengthWritten(void)
uint32_t
लेखक के शुरू करने के बाद से लिखे गए बाइट की कुल संख्या दिखाता है.
Init(uint8_t *buf, uint32_t maxLen)
void
शुरू करने के लिए, एक आउटपुट बफ़र में लिखने के लिए TLVWriter ऑब्जेक्ट शुरू करता है.
Init(PacketBuffer *buf, uint32_t maxLen)
void
एक PacketBuffer में लिखने के लिए, TLVWriter ऑब्जेक्ट की शुरुआत करता है.
Init(PacketBuffer *buf, uint32_t maxLen, bool allowDiscontiguousBuffers)
void
एक या ज़्यादा PacketBuffers में लिखने के लिए, TLVWriter ऑब्जेक्ट शुरू करता है.
InitMalloced(uint8_t *& outBuf, uint32_t initialBufSize, uint32_t maxLen)
void
डाइनैमिक बफ़र में लिखने के लिए TLVWriter ऑब्जेक्ट की शुरुआत करता है.
OpenContainer(uint64_t tag, TLVType containerType, TLVWriter & containerWriter)
TLV कंटेनर एलिमेंट के सदस्यों को लिखने के लिए, एक नया TLVWriter ऑब्जेक्ट शुरू करता है.
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)
TLV असाइन किए गए पूर्णांक मान को कोड में बदलता है.
Put(uint64_t tag, uint8_t v, bool preserveSize)
TLV असाइन किए गए पूर्णांक मान को कोड में बदलता है.
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)
TLV फ़्लोटिंग-पॉइंट वैल्यू को कोड में बदलता है.
PutBoolean(uint64_t tag, bool v)
TLV बूलियन मान को कोड में बदलता है.
PutBytes(uint64_t tag, const uint8_t *buf, uint32_t len)
TLV बाइट स्ट्रिंग मान को कोड में बदलता है.
PutNull(uint64_t tag)
TLV शून्य मान को कोड में बदलता है.
PutPreEncodedContainer(uint64_t tag, TLVType containerType, const uint8_t *data, uint32_t dataLen)
यह पहले से एन्कोड किए गए सदस्य एलिमेंट से TLV कंटेनर एलिमेंट को कोड में बदलता है.
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, ...)
TLV एलिमेंट के फ़ॉर्मैट के मुताबिक फ़ॉर्मैट किए गए स्ट्रिंग आउटपुट को कोड में बदलें.
StartContainer(uint64_t tag, TLVType containerType, TLVType & outerContainerType)
नए TLV कंटेनर एलिमेंट को एन्कोड करने से शुरू होता है.
StartPutBytes(uint64_t tag, uint32_t totalLen)
इसे TLV बाइट स्ट्रिंग को कई हिस्सों में कोड में बदलता है.
VPutStringF(uint64_t tag, const char *fmt, va_list ap)
TLV एलिमेंट के फ़ॉर्मैट के मुताबिक फ़ॉर्मैट किए गए स्ट्रिंग आउटपुट को कोड में बदलें.

सार्वजनिक स्थिर फ़ंक्शन

FinalizePacketBuffer(TLVWriter & writer, uintptr_t bufHandle, uint8_t *bufStart, uint32_t dataLen)
PacketBuffers की चेन के लिए, 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)
PacketBuffers की चेन के लिए, TLVWriter GetNewBuffer फ़ंक्शन लागू करना.

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

IsCloseContainerReserved(void) const
bool
यह तय करें कि कंटेनर को शुरू करने / खोलने के समय, कंटेनर को CloseContainer के निशान के लिए जगह रिज़र्व करनी चाहिए या नहीं.
IsContainerOpen(void) const
bool
SetCloseContainerReserved(bool aCloseContainerReserved)
void
सेट करें कि कंटेनर को शुरू करने / खोलने पर, कंटेनर को CloseContainer के निशान के लिए खाली जगह रखनी चाहिए या नहीं.
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

सार्वजनिक प्रकार

FinalifyBufferFunct

WEAVE_ERROR(* FinalizeBufferFunct)(TLVWriter &writer, uintptr_t bufHandle, uint8_t *bufStart, uint32_t bufLen)

TLVWriter ऑब्जेक्ट से आउटपुट को फ़ाइनल करने के लिए इस्तेमाल किया जाने वाला फ़ंक्शन.

इस तरह के फ़ंक्शन तब कॉल किए जाते हैं, जब TLVWriter's finalize() तरीके को कॉल किया जाता है. फ़ंक्शन को लेखक ऑब्जेक्ट के आउटपुट का उपभोग करने से संबंधित कोई भी ज़रूरी सफ़ाई या अंतिम रूप देने की उम्मीद है. इसके उदाहरणों में शामिल हैं, एन्कोडिंग की अंतिम लंबाई रिकॉर्ड करना, या किसी फ़ाइल वर्णनकर्ता को बंद करना.

ब्यौरा
पैरामीटर
[in] writer
TLVWriter ऑब्जेक्ट का रेफ़रंस जो फ़ाइनल किया जा रहा है.
[in,out] bufHandle
एक uintptr_t कॉन्टेक्स्ट वैल्यू, जो GetNewBuffer फ़ंक्शन पर पिछले कॉल से सेट की गई थी.
[in,out] bufStart
मौजूदा और आखिरी आउटपुट बफ़र की शुरुआत का पॉइंटर.
[in,out] bufLen
बफ़र में मौजूद बाइट की संख्या bufStart में बताई गई है.
सामान लौटाने की वैल्यू
WEAVE_NO_ERROR
अगर बदलाव पूरा हो गया है.
other
वेब या प्लैटफ़ॉर्म से जुड़े अन्य गड़बड़ी कोड, जो बताते हैं कि पूरा होने के दौरान गड़बड़ी हुई.

NewBufferFunct पाएं

WEAVE_ERROR(* GetNewBufferFunct)(TLVWriter &writer, uintptr_t &bufHandle, uint8_t *&bufStart, uint32_t &bufLen)

एक फ़ंक्शन, जो TLVWriter को नए आउटपुट बफ़र की जगह देता है.

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

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

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

AppData

void * AppData

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

FinalifyBuffer

FinalizeBufferFunct FinalizeBuffer

फ़ंक्शन के लिए पॉइंटर, जिसे TLVWriter तय किए जाने पर कॉल किया जाएगा.

जब भी इसके finalize() तरीके को कॉल किया जाएगा, तब TLVWriter ऑब्जेक्ट को FinalizeBuffer फ़ंक्शन कॉल करेगा. finalize() कॉल करने से पहले, ऐप्लिकेशन किसी भी समय फ़ंक्शन पॉइंटर को सेट कर सकते हैं. डिफ़ॉल्ट रूप से पॉइंटर को NULL पर सेट किया जाता है, जिसकी वजह से finalize() तरीके से फ़ंक्शन को कॉल करना बंद हो जाता है.

FinalizeBuffer फ़ंक्शन लागू करने के बारे में ज़्यादा जानकारी के लिए, FinalizeBufferFunct टाइप की परिभाषा देखें.

GetBuffer

GetNewBufferFunct GetNewBuffer

ऐसे फ़ंक्शन के लिए पॉइंटर जो TLVWriter को नए आउटपुट बफ़र स्पेस की सुविधा देता है.

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

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

GetNewBuffer फ़ंक्शन लागू करने के बारे में ज़्यादा जानकारी के लिए, GetNewBufferFunct टाइप की परिभाषा देखें.

ImplicitProfileId

uint32_t ImplicitProfileId

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

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

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

सुरक्षित एट्रिब्यूट

MbufHandle

uintptr_t mBufHandle

mBufStart

uint8_t * mBufStart

mCONTAINERType

TLVType mContainerType

मि॰लीन

uint32_t mLenWritten

mMaxLen

uint32_t mMaxLen

MremainingLen

uint32_t mRemainingLen

mWritePoint

uint8_t * mWritePoint

सार्वजनिक फ़ंक्शन

क्लोज़ कंटेनर

WEAVE_ERROR CloseContainer(
  TLVWriter & containerWriter
)

OpenContainer() पर कॉल करने के बाद, TLV कंटेनर को लिखने का काम पूरा कर लेता है.

closeContainer() मैथड, OpenContainer() पर कॉल करने के बाद, पैरंट TLVWriter ऑब्जेक्ट की स्थिति को पहले जैसा करता है. OpenCONTAINER() ऐप्लिकेशन पर किए जाने वाले हर कॉल के लिए, दोनों कंटेनर को एक ही कंटेनर लेखक का रेफ़रंस पास करते हुए, CloseContainer() पर उससे जुड़ा कॉल करना ज़रूरी है.

जब CloseContainer() रिटर्न होता है, तो हो सकता है कि ऐप्लिकेशन, पैरंट लेखक का इस्तेमाल करके, ऐसे दूसरे TLV एलिमेंट लिखें जो कंटेनर एलिमेंट के बाद दिखते हैं. इस समय, दिए गए कंटेनर लेखक को 'शुरुआती और #39; माना जाना चाहिए. इसे फिर से शुरू किए बिना इस्तेमाल नहीं किया जाना चाहिए.

ब्यौरा
पैरामीटर
[in] containerWriter
OpenContainer() तरीके से मिलने वाले TLVWriter ऑब्जेक्ट का रेफ़रंस.
सामान लौटाने की वैल्यू
WEAVE_NO_ERROR
अगर तरीका सफल हो गया है.
WEAVE_ERROR_INCORRECT_STATE
अगर दिया गया कंटेनर लेखक सही स्थिति में नहीं है.
WEAVE_ERROR_TLV_CONTAINER_OPEN
अगर सप्लाई किए गए कंटेनर लेखक पर दूसरा कंटेनर लेखक खोला गया है, लेकिन अभी तक बंद नहीं किया गया है.
WEAVE_ERROR_BUFFER_TOO_SMALL
अगर कंटेनर को कोड में बदलने का तरीका पूरा हो गया है, तो लेखक ने शुरुआत करने के समय तय की गई बाइट की सीमा पार कर ली है.
WEAVE_ERROR_NO_MEMORY
अगर मेमोरी कम होने की वजह से, आउटपुट बफ़र असाइन नहीं किया जा सका.
other
कॉन्फ़िगर किए गए GetNewBuffer() या finalizeBuffer() फ़ंक्शन के ज़रिए, अलग-अलग Weave या प्लैटफ़ॉर्म के हिसाब से होने वाली गड़बड़ियां.

जारी रखें PutBytes

WEAVE_ERROR ContinuePutBytes(
  const uint8_t *buf,
  uint32_t len
)

TLV बाइट स्ट्रिंग मान को कोड में बदलता है.

इसका इस्तेमाल StartPutBytes के साथ किया जाना चाहिए.

ब्यौरा
पैरामीटर
[in] buf
बफ़र के लिए एक पॉइंटर, जिसमें कोड में बदली गई बाइट स्ट्रिंग हो.
[in] len
एन्कोड किए जाने वाले बाइट की संख्या.
सामान लौटाने की वैल्यू
WEAVE_NO_ERROR
अगर तरीका सफल हो गया है.
WEAVE_ERROR_TLV_CONTAINER_OPEN
अगर कंटेनर लेखक को मौजूदा लेखक पर खोला गया है और अभी तक बंद नहीं किया गया है.
WEAVE_ERROR_INVALID_TLV_TAG
अगर दी गई टैग वैल्यू अमान्य है या उस संदर्भ में गलत है जिसमें वैल्यू लिखी जा रही है.
WEAVE_ERROR_BUFFER_TOO_SMALL
अगर लेखक की वैल्यू लिखने की संख्या, लेखक के शुरू करने के समय तय की गई बाइट की सीमा से ज़्यादा है.
WEAVE_ERROR_NO_MEMORY
अगर मेमोरी कम होने की वजह से, आउटपुट बफ़र असाइन नहीं किया जा सका.
other
कॉन्फ़िगर किए गए GetNewBuffer() या finalizeBuffer() फ़ंक्शन के ज़रिए, अलग-अलग Weave या प्लैटफ़ॉर्म के हिसाब से होने वाली गड़बड़ियां.

कॉपी कंटेनर

WEAVE_ERROR CopyContainer(
  TLVReader & container
)

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

copyCONTAINER(), TLVReader ऑब्जेक्ट की मौजूदा स्थिति पर पहले से कोड किए गए कंटेनर एलिमेंट को कॉपी करके, नए TLV कंटेनर एलिमेंट को कोड में बदलता है. इस तरीके से एक ही कॉल में नए कंटेनर एलिमेंट की पूरी जानकारी बनाई जाती है. साथ ही, सोर्स एन्कोडिंग के कंटेनर, टाइप, टैग, और एलिमेंट को कॉपी किया जाता है. जब तरीका रिटर्न होता है, तो लेखक ऑब्जेक्ट का इस्तेमाल कंटेनर एलिमेंट के बाद आने वाले अतिरिक्त TLV एलिमेंट लिखने के लिए किया जा सकता है.

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

कॉपी कंटेनर

WEAVE_ERROR CopyContainer(
  uint64_t tag,
  TLVReader & container
)

यह पहले से एन्कोड किए गए सदस्य एलिमेंट से TLV कंटेनर एलिमेंट को कोड में बदलता है.

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

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

ब्यौरा
पैरामीटर
[in] tag
कंटेनर के साथ एन्कोड करने के लिए TLV टैग होना चाहिए या अगर कंटेनर को टैग के बिना एन्कोड किया जाना चाहिए, तो AnonymousTag. टैग की वैल्यू को टैग प्रोफ़ाइल के किसी एक फ़ंक्शन ProfileTag(), ContextTag() या GeneralTag() की मदद से बनाया जाना चाहिए.
[in] container
TLVReader ऑब्जेक्ट का रेफ़रंस, जो पहले से एन्कोड किए गए TLV कंटेनर की पहचान करता है. इसका टाइप और सदस्य कॉपी किया जाना चाहिए.
सामान लौटाने की वैल्यू
WEAVE_NO_ERROR
अगर तरीका सफल हो गया है.
WEAVE_ERROR_INCORRECT_STATE
अगर दिया गया रीडर किसी कंटेनर एलिमेंट पर नहीं है.
WEAVE_ERROR_TLV_CONTAINER_OPEN
अगर कंटेनर लेखक को मौजूदा लेखक पर खोला गया है और अभी तक बंद नहीं किया गया है.
WEAVE_ERROR_TLV_UNDERRUN
अगर दिए गए रीडर से जुड़ी बुनियादी TLV एन्कोडिंग समय से पहले खत्म हो गई.
WEAVE_ERROR_INVALID_TLV_ELEMENT
अगर दिया गया रीडर अमान्य या काम नहीं करने वाला TLV एलिमेंट टाइप का इस्तेमाल करता है.
WEAVE_ERROR_INVALID_TLV_TAG
अगर दिया गया रीडर किसी अमान्य संदर्भ के साथ TLV टैग का इस्तेमाल करता है या दिया गया टैग अमान्य है या उस मामले में गलत है जिसमें नया कंटेनर लिखा जा रहा है.
WEAVE_ERROR_BUFFER_TOO_SMALL
अगर लेखक की वैल्यू लिखने की संख्या, लेखक के शुरू करने के समय तय की गई बाइट की सीमा से ज़्यादा है.
WEAVE_ERROR_NO_MEMORY
अगर मेमोरी कम होने की वजह से, आउटपुट बफ़र असाइन नहीं किया जा सका.
other
कॉन्फ़िगर किए गए GetNewBuffer() या finalizeBuffer() फ़ंक्शन के साथ-साथ, Weave या प्लैटफ़ॉर्म के हिसाब से होने वाली अन्य गड़बड़ियां या रीडर ऑब्जेक्ट से जुड़े GetNextBuffer() फ़ंक्शन की वजह से.

कॉपी कंटेनर

WEAVE_ERROR CopyContainer(
  uint64_t tag,
  const uint8_t *encodedContainer,
  uint16_t encodedContainerLen
)

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

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

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

ब्यौरा
पैरामीटर
[in] tag
कंटेनर के साथ एन्कोड करने के लिए TLV टैग होना चाहिए या अगर कंटेनर को टैग के बिना एन्कोड किया जाना चाहिए, तो AnonymousTag. टैग की वैल्यू को टैग प्रोफ़ाइल के किसी एक फ़ंक्शन ProfileTag(), ContextTag() या GeneralTag() की मदद से बनाया जाना चाहिए.
[in] encodedContainer
पहले से एन्कोड किए गए TLV कंटेनर वाला एक बफ़र जिसके प्रकार और सदस्यों को कॉपी किया जाना चाहिए.
[in] encodedContainerLen
पहले से एन्कोड किए गए कंटेनर की बाइट में लंबाई.
सामान लौटाने की वैल्यू
WEAVE_NO_ERROR
अगर तरीका सफल हो गया है.
WEAVE_ERROR_TLV_CONTAINER_OPEN
अगर कंटेनर लेखक को मौजूदा लेखक पर खोला गया है और अभी तक बंद नहीं किया गया है.
WEAVE_ERROR_TLV_UNDERRUN
अगर कोड में बदला गया कंटेनर समय से पहले खत्म हो गया है.
WEAVE_ERROR_INVALID_TLV_ELEMENT
अगर एन्कोड किए गए कंटेनर में अमान्य या काम न करने वाला TLV एलिमेंट टाइप है.
WEAVE_ERROR_INVALID_TLV_TAG
अगर एन्कोड किए गए कंटेनर में अमान्य संदर्भ में TLV टैग है या अगर दिया गया टैग अमान्य है या उस संदर्भ में गलत है जिसमें नया कंटेनर लिखा जा रहा है.
WEAVE_ERROR_BUFFER_TOO_SMALL
अगर लेखक की वैल्यू लिखने की संख्या, लेखक के शुरू करने के समय तय की गई बाइट की सीमा से ज़्यादा है.
WEAVE_ERROR_NO_MEMORY
अगर मेमोरी कम होने की वजह से, आउटपुट बफ़र असाइन नहीं किया जा सका.
other
कॉन्फ़िगर किए गए GetNewBuffer() या finalizeBuffer() फ़ंक्शन के साथ-साथ, Weave या प्लैटफ़ॉर्म के हिसाब से होने वाली अन्य गड़बड़ियां या रीडर ऑब्जेक्ट से जुड़े GetNextBuffer() फ़ंक्शन की वजह से.

कॉपी एलिमेंट

WEAVE_ERROR CopyElement(
  TLVReader & reader
)

रीडर ऑब्जेक्ट में से TLV एलिमेंट को लेखक में कॉपी करता है.

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

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

कॉपी एलिमेंट

WEAVE_ERROR CopyElement(
  uint64_t tag,
  TLVReader & reader
)

एंड कंटेनर

WEAVE_ERROR EndContainer(
  TLVType outerContainerType
)

यह TLV कंटेनर एलिमेंट की एन्कोडिंग को पूरा करता है.

EndContainer() तरीके से TLV कंटेनर एलिमेंट की एन्कोडिंग पूरी होती है और StartContainer() पर पहले किए गए कॉल के बाद TLVWrite ऑब्जेक्ट की स्थिति वापस आता है. StartContainer() ऐप्लिकेशन को किए जाने वाले हर कॉल के लिए, EndContainer() को एक कॉल करना होगा, जो StartContainer() कॉल से मिली TLVType वैल्यू को पास करता हो. EndCONTAINER() के रिटर्न होने पर, लेखक ऑब्जेक्ट का इस्तेमाल, कंटेनर एलिमेंट के बाद आने वाले दूसरे TLV एलिमेंट को लिखने के लिए किया जा सकता है.

ब्यौरा
पैरामीटर
[in] outerContainerType
StartContainer() तरीके से लौटाया गया TLVType मान.
सामान लौटाने की वैल्यू
WEAVE_NO_ERROR
अगर तरीका सफल हो गया है.
WEAVE_ERROR_INCORRECT_STATE
अगर संबंधित StartContainer() कॉल नहीं हुआ है.
WEAVE_ERROR_TLV_CONTAINER_OPEN
अगर कंटेनर लेखक को मौजूदा लेखक पर खोला गया है और अभी तक बंद नहीं किया गया है.
WEAVE_ERROR_BUFFER_TOO_SMALL
अगर लेखक की वैल्यू लिखने की संख्या, लेखक के शुरू करने के समय तय की गई बाइट की सीमा से ज़्यादा है.
WEAVE_ERROR_NO_MEMORY
अगर मेमोरी कम होने की वजह से, आउटपुट बफ़र असाइन नहीं किया जा सका.
other
कॉन्फ़िगर किए गए GetNewBuffer() या finalizeBuffer() फ़ंक्शन के ज़रिए, अलग-अलग Weave या प्लैटफ़ॉर्म के हिसाब से होने वाली गड़बड़ियां.

अंतिम रूप दें

WEAVE_ERROR Finalize(
  void
)

TLV एन्कोडिंग लिखने की प्रक्रिया पूरी करें.

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

ब्यौरा
सामान लौटाने की वैल्यू
WEAVE_NO_ERROR
अगर कोड में बदलने का तरीका सफल रहा है, तो
WEAVE_ERROR_TLV_CONTAINER_OPEN
अगर कंटेनर लेखक को मौजूदा लेखक पर खोला गया है और अभी तक बंद नहीं किया गया है.
other
कॉन्फ़िगर किए गए finalizeBuffer() फ़ंक्शन की मदद से, वीव या प्लैटफ़ॉर्म के हिसाब से होने वाली दूसरी गड़बड़ियां मिलती हैं.

GetCONTAINERType

TLVType GetContainerType(
  void
) const 

उस तरह का कंटेनर दिखाता है जिसमें TLVWriter इस समय लिख रहा है.

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

ब्यौरा
लौटाए गए सामान
मौजूदा कंटेनर का TLVType, या अगर किसी TLVWriter, कंटेनर के अंदर एलिमेंट नहीं लिख रहे हैं, तो यह TLTLVType_Not specified.

लंबाई लिखा हुआ है

uint32_t GetLengthWritten(
  void
)

लेखक के शुरू करने के बाद से लिखे गए बाइट की कुल संख्या दिखाता है.

ब्यौरा
लौटाए गए सामान
लेखक के शुरू करने के बाद से लिखे गए बाइट की कुल संख्या.

इनिट

void Init(
  uint8_t *buf,
  uint32_t maxLen
)

शुरू करने के लिए, एक आउटपुट बफ़र में लिखने के लिए TLVWriter ऑब्जेक्ट शुरू करता है.

ब्यौरा
पैरामीटर
[in] buf
उस बफ़र के लिए पॉइंटर जिसमें TLV लिखा जाना चाहिए.
[in] maxLen
आउटपुट बफ़र में ज़्यादा से ज़्यादा बाइट की संख्या लिखनी चाहिए.

इनिट

void Init(
  PacketBuffer *buf,
  uint32_t maxLen
)

एक PacketBuffer में लिखने के लिए, TLVWriter ऑब्जेक्ट की शुरुआत करता है.

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

ब्यौरा
पैरामीटर
[in] buf
PackeBuffer का एक पॉइंटर जिसमें TLV लिखा जाना चाहिए.
[in] maxLen
आउटपुट बफ़र में ज़्यादा से ज़्यादा बाइट की संख्या लिखनी चाहिए.

इनिट

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

एक या ज़्यादा PacketBuffers में लिखने के लिए, TLVWriter ऑब्जेक्ट शुरू करता है.

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

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

इनिटमालोज़्ड

void InitMalloced(
  uint8_t *& outBuf,
  uint32_t initialBufSize,
  uint32_t maxLen
)

डाइनैमिक बफ़र में लिखने के लिए TLVWriter ऑब्जेक्ट की शुरुआत करता है.

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

ओपनकंटेनर

WEAVE_ERROR OpenContainer(
  uint64_t tag,
  TLVType containerType,
  TLVWriter & containerWriter
)

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

OpenContainer() तरीके का इस्तेमाल करके, कोड में बदलने के लिए TLV कंटेनर एलिमेंट (स्ट्रक्चर्ड, कैटगरी या पाथ) लिखे जाते हैं. इस तरीके में नए कंटेनर का टाइप और टैग (अगर कोई है) शामिल हो जाता है. साथ ही, नए लेखक ऑब्जेक्ट (कंटेनर लेखक) का रेफ़रंस मिलता है जिसे कंटेनर के #&39; एलिमेंट के बारे में बताने के लिए शुरू किया जाएगा. ऐप्लिकेशन, कंटेनर लेखक का इस्तेमाल करके नए कंटेनर के सदस्य लिखते हैं और फिर कंटेनर एन्कोडिंग को पूरा करने के लिए, CloseContainer() को कॉल करते हैं.

जब कंटेनर लेखक खुला होता है, तो ऐप्लिकेशन को पैरंट लेखक की स्थिति को चालू नहीं करना चाहिए या न ही उन्हें कॉल करना चाहिए.

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

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

ब्यौरा
पैरामीटर
[in] tag
कंटेनर के साथ एन्कोड करने के लिए TLV टैग होना चाहिए या अगर कंटेनर को टैग के बिना एन्कोड किया जाना चाहिए, तो AnonymousTag. टैग की वैल्यू को टैग प्रोफ़ाइल के किसी एक फ़ंक्शन ProfileTag(), ContextTag() या GeneralTag() की मदद से बनाया जाना चाहिए.
[in] containerType
कोड में बदलने के लिए कंटेनर का टाइप. kTLVType_Structure, kTLVType_Array या kTLVType_Path में से एक होना चाहिए.
[out] containerWriter
TLVWriter ऑब्जेक्ट का रेफ़रंस, जो नए कंटेनर एलिमेंट के सदस्यों को लिखने के लिए शुरू किया जाएगा. दिए गए ऑब्जेक्ट से जुड़ा कोई भी डेटा ओवरराइट कर दिया गया है.
सामान लौटाने की वैल्यू
WEAVE_NO_ERROR
अगर तरीका सफल हो गया है.
WEAVE_ERROR_WRONG_TLV_TYPE
अगर कंटेनर टाइप के लिए तय की गई वैल्यू गलत है.
WEAVE_ERROR_TLV_CONTAINER_OPEN
अगर कंटेनर लेखक को मौजूदा लेखक पर खोला गया है और अभी तक बंद नहीं किया गया है.
WEAVE_ERROR_INVALID_TLV_TAG
अगर दी गई टैग वैल्यू अमान्य है या उस संदर्भ में गलत है जिसमें वैल्यू लिखी जा रही है.
WEAVE_ERROR_BUFFER_TOO_SMALL
अगर लेखक की वैल्यू लिखने की संख्या, लेखक के शुरू करने के समय तय की गई बाइट की सीमा से ज़्यादा है.
WEAVE_ERROR_NO_MEMORY
अगर मेमोरी कम होने की वजह से, आउटपुट बफ़र असाइन नहीं किया जा सका.
other
कॉन्फ़िगर किए गए GetNewBuffer() या finalizeBuffer() फ़ंक्शन के ज़रिए, अलग-अलग Weave या प्लैटफ़ॉर्म के हिसाब से होने वाली गड़बड़ियां.

रखें

WEAVE_ERROR Put(
  uint64_t tag,
  int8_t v
)

कोड में शामिल टीएलवी वैल्यू को कोड में बदलता है.

यह सुविधा इस्तेमाल करने के लिए एक खास फ़ंक्शन है, जिसे ज़रूरत से ज़्यादा लोड किया गया है. यह ऊपर दिए गए फ़ंक्शन से अलग होता है, जो सिर्फ़ आर्ग्युमेंट के स्वीकार किए जाते हैं.

ब्यौरा
पैरामीटर
[in] tag
TLV टैग को वैल्यू के साथ एन्कोड किया जाना चाहिए. इसके अलावा, अगर वैल्यू को बिना किसी टैग के एन्कोड किया जाना चाहिए, तो इसे AnonymousTag पर सेट किया जाना चाहिए. टैग की वैल्यू को टैग प्रोफ़ाइल के किसी एक फ़ंक्शन ProfileTag(), ContextTag() या GeneralTag() की मदद से बनाया जाना चाहिए.
[in] v
एन्कोड किया जाने वाला मान.
सामान लौटाने की वैल्यू
WEAVE_NO_ERROR
अगर तरीका सफल हो गया है.
WEAVE_ERROR_TLV_CONTAINER_OPEN
अगर कंटेनर लेखक को मौजूदा लेखक पर खोला गया है और अभी तक बंद नहीं किया गया है.
WEAVE_ERROR_INVALID_TLV_TAG
अगर दी गई टैग वैल्यू अमान्य है या उस संदर्भ में गलत है जिसमें वैल्यू लिखी जा रही है.
WEAVE_ERROR_BUFFER_TOO_SMALL
अगर लेखक की वैल्यू लिखने की संख्या, लेखक के शुरू करने के समय तय की गई बाइट की सीमा से ज़्यादा है.
WEAVE_ERROR_NO_MEMORY
अगर मेमोरी कम होने की वजह से, आउटपुट बफ़र असाइन नहीं किया जा सका.
other
कॉन्फ़िगर किए गए GetNewBuffer() या finalizeBuffer() फ़ंक्शन के ज़रिए, अलग-अलग Weave या प्लैटफ़ॉर्म के हिसाब से होने वाली गड़बड़ियां.

रखें

WEAVE_ERROR Put(
  uint64_t tag,
  int8_t v,
  bool preserveSize
)

कोड में शामिल टीएलवी वैल्यू को कोड में बदलता है.

यह सुविधा इस्तेमाल करने के लिए एक खास फ़ंक्शन है, जिसे ज़रूरत से ज़्यादा लोड किया गया है. यह ऊपर दिए गए फ़ंक्शन से अलग होता है, जो सिर्फ़ आर्ग्युमेंट के स्वीकार किए जाते हैं.

ब्यौरा
पैरामीटर
[in] tag
TLV टैग को वैल्यू के साथ एन्कोड किया जाना चाहिए. इसके अलावा, अगर वैल्यू को बिना किसी टैग के एन्कोड किया जाना चाहिए, तो इसे AnonymousTag पर सेट किया जाना चाहिए. टैग की वैल्यू को टैग प्रोफ़ाइल के किसी एक फ़ंक्शन ProfileTag(), ContextTag() या GeneralTag() की मदद से बनाया जाना चाहिए.
[in] v
एन्कोड किया जाने वाला मान.
[in] preserveSize
अगर वैल्यू, इनपुट टाइप के बराबर बाइट में एन्कोड की जानी चाहिए, तो सही. गलत है, अगर वैल्यू को दिखाने के लिए, वैल्यू को कम से कम बाइट कोड में बदलना ज़रूरी है. ध्यान दें: ऐप्लिकेशन को इस पैरामीटर को गलत पर सेट करने की सलाह दी जाती है.
सामान लौटाने की वैल्यू
WEAVE_NO_ERROR
अगर तरीका सफल हो गया है.
WEAVE_ERROR_TLV_CONTAINER_OPEN
अगर कंटेनर लेखक को मौजूदा लेखक पर खोला गया है और अभी तक बंद नहीं किया गया है.
WEAVE_ERROR_INVALID_TLV_TAG
अगर दी गई टैग वैल्यू अमान्य है या उस संदर्भ में गलत है जिसमें वैल्यू लिखी जा रही है.
WEAVE_ERROR_BUFFER_TOO_SMALL
अगर लेखक की वैल्यू लिखने की संख्या, लेखक के शुरू करने के समय तय की गई बाइट की सीमा से ज़्यादा है.
WEAVE_ERROR_NO_MEMORY
अगर मेमोरी कम होने की वजह से, आउटपुट बफ़र असाइन नहीं किया जा सका.
other
कॉन्फ़िगर किए गए GetNewBuffer() या finalizeBuffer() फ़ंक्शन के ज़रिए, अलग-अलग Weave या प्लैटफ़ॉर्म के हिसाब से होने वाली गड़बड़ियां.

रखें

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
)

TLV असाइन किए गए पूर्णांक मान को कोड में बदलता है.

यह सुविधा इस्तेमाल करने के लिए एक खास फ़ंक्शन है, जिसे ज़रूरत से ज़्यादा लोड किया गया है. यह ऊपर दिए गए फ़ंक्शन से अलग होता है, जो सिर्फ़ आर्ग्युमेंट के स्वीकार किए जाते हैं.

ब्यौरा
पैरामीटर
[in] tag
TLV टैग को वैल्यू के साथ एन्कोड किया जाना चाहिए. इसके अलावा, अगर वैल्यू को बिना किसी टैग के एन्कोड किया जाना चाहिए, तो इसे AnonymousTag पर सेट किया जाना चाहिए. टैग की वैल्यू को टैग प्रोफ़ाइल के किसी एक फ़ंक्शन ProfileTag(), ContextTag() या GeneralTag() की मदद से बनाया जाना चाहिए.
[in] v
एन्कोड किया जाने वाला मान.
सामान लौटाने की वैल्यू
WEAVE_NO_ERROR
अगर तरीका सफल हो गया है.
WEAVE_ERROR_TLV_CONTAINER_OPEN
अगर कंटेनर लेखक को मौजूदा लेखक पर खोला गया है और अभी तक बंद नहीं किया गया है.
WEAVE_ERROR_INVALID_TLV_TAG
अगर दी गई टैग वैल्यू अमान्य है या उस संदर्भ में गलत है जिसमें वैल्यू लिखी जा रही है.
WEAVE_ERROR_BUFFER_TOO_SMALL
अगर लेखक की वैल्यू लिखने की संख्या, लेखक के शुरू करने के समय तय की गई बाइट की सीमा से ज़्यादा है.
WEAVE_ERROR_NO_MEMORY
अगर मेमोरी कम होने की वजह से, आउटपुट बफ़र असाइन नहीं किया जा सका.
other
कॉन्फ़िगर किए गए GetNewBuffer() या finalizeBuffer() फ़ंक्शन के ज़रिए, अलग-अलग Weave या प्लैटफ़ॉर्म के हिसाब से होने वाली गड़बड़ियां.

रखें

WEAVE_ERROR Put(
  uint64_t tag,
  uint8_t v,
  bool preserveSize
)

TLV असाइन किए गए पूर्णांक मान को कोड में बदलता है.

यह सुविधा इस्तेमाल करने के लिए एक खास फ़ंक्शन है, जिसे ज़रूरत से ज़्यादा लोड किया गया है. यह ऊपर दिए गए फ़ंक्शन से अलग होता है, जो सिर्फ़ आर्ग्युमेंट के स्वीकार किए जाते हैं.

ब्यौरा
पैरामीटर
[in] tag
TLV टैग को वैल्यू के साथ एन्कोड किया जाना चाहिए. इसके अलावा, अगर वैल्यू को बिना किसी टैग के एन्कोड किया जाना चाहिए, तो इसे AnonymousTag पर सेट किया जाना चाहिए. टैग की वैल्यू को टैग प्रोफ़ाइल के किसी एक फ़ंक्शन ProfileTag(), ContextTag() या GeneralTag() की मदद से बनाया जाना चाहिए.
[in] v
एन्कोड किया जाने वाला मान.
[in] preserveSize
अगर वैल्यू, इनपुट टाइप के बराबर बाइट में एन्कोड की जानी चाहिए, तो सही. गलत है, अगर वैल्यू को दिखाने के लिए, वैल्यू को कम से कम बाइट कोड में बदलना ज़रूरी है. ध्यान दें: ऐप्लिकेशन को इस पैरामीटर को गलत पर सेट करने की सलाह दी जाती है.
सामान लौटाने की वैल्यू
WEAVE_NO_ERROR
अगर तरीका सफल हो गया है.
WEAVE_ERROR_TLV_CONTAINER_OPEN
अगर कंटेनर लेखक को मौजूदा लेखक पर खोला गया है और अभी तक बंद नहीं किया गया है.
WEAVE_ERROR_INVALID_TLV_TAG
अगर दी गई टैग वैल्यू अमान्य है या उस संदर्भ में गलत है जिसमें वैल्यू लिखी जा रही है.
WEAVE_ERROR_BUFFER_TOO_SMALL
अगर लेखक की वैल्यू लिखने की संख्या, लेखक के शुरू करने के समय तय की गई बाइट की सीमा से ज़्यादा है.
WEAVE_ERROR_NO_MEMORY
अगर मेमोरी कम होने की वजह से, आउटपुट बफ़र असाइन नहीं किया जा सका.
other
कॉन्फ़िगर किए गए GetNewBuffer() या finalizeBuffer() फ़ंक्शन के ज़रिए, अलग-अलग Weave या प्लैटफ़ॉर्म के हिसाब से होने वाली गड़बड़ियां.

रखें

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
)

TLV फ़्लोटिंग-पॉइंट वैल्यू को कोड में बदलता है.

यह सुविधा इस्तेमाल करने के लिए एक खास फ़ंक्शन है, जिसे ज़रूरत से ज़्यादा लोड किया गया है. यह ऊपर दिए गए फ़ंक्शन से अलग होता है, जो सिर्फ़ आर्ग्युमेंट के स्वीकार किए जाते हैं.

ब्यौरा
पैरामीटर
[in] tag
TLV टैग को वैल्यू के साथ एन्कोड किया जाना चाहिए. इसके अलावा, अगर वैल्यू को बिना किसी टैग के एन्कोड किया जाना चाहिए, तो इसे AnonymousTag पर सेट किया जाना चाहिए. टैग की वैल्यू को टैग प्रोफ़ाइल के किसी एक फ़ंक्शन ProfileTag(), ContextTag() या GeneralTag() की मदद से बनाया जाना चाहिए.
[in] v
एन्कोड किया जाने वाला मान.
सामान लौटाने की वैल्यू
WEAVE_NO_ERROR
अगर तरीका सफल हो गया है.
WEAVE_ERROR_TLV_CONTAINER_OPEN
अगर कंटेनर लेखक को मौजूदा लेखक पर खोला गया है और अभी तक बंद नहीं किया गया है.
WEAVE_ERROR_INVALID_TLV_TAG
अगर दी गई टैग वैल्यू अमान्य है या उस संदर्भ में गलत है जिसमें वैल्यू लिखी जा रही है.
WEAVE_ERROR_BUFFER_TOO_SMALL
अगर लेखक की वैल्यू लिखने की संख्या, लेखक के शुरू करने के समय तय की गई बाइट की सीमा से ज़्यादा है.
WEAVE_ERROR_NO_MEMORY
अगर मेमोरी कम होने की वजह से, आउटपुट बफ़र असाइन नहीं किया जा सका.
other
कॉन्फ़िगर किए गए GetNewBuffer() या finalizeBuffer() फ़ंक्शन के ज़रिए, अलग-अलग Weave या प्लैटफ़ॉर्म के हिसाब से होने वाली गड़बड़ियां.

पुटबूलियन

WEAVE_ERROR PutBoolean(
  uint64_t tag,
  bool v
)

TLV बूलियन मान को कोड में बदलता है.

ब्यौरा
पैरामीटर
[in] tag
TLV टैग को वैल्यू के साथ एन्कोड किया जाना चाहिए. इसके अलावा, अगर वैल्यू को बिना किसी टैग के एन्कोड किया जाना चाहिए, तो इसे AnonymousTag पर सेट किया जाना चाहिए. टैग की वैल्यू को टैग प्रोफ़ाइल के किसी एक फ़ंक्शन ProfileTag(), ContextTag() या GeneralTag() की मदद से बनाया जाना चाहिए.
[in] v
एन्कोड किया जाने वाला मान.
सामान लौटाने की वैल्यू
WEAVE_NO_ERROR
अगर तरीका सफल हो गया है.
WEAVE_ERROR_TLV_CONTAINER_OPEN
अगर कंटेनर लेखक को मौजूदा लेखक पर खोला गया है और अभी तक बंद नहीं किया गया है.
WEAVE_ERROR_INVALID_TLV_TAG
अगर दी गई टैग वैल्यू अमान्य है या उस संदर्भ में गलत है जिसमें वैल्यू लिखी जा रही है.
WEAVE_ERROR_BUFFER_TOO_SMALL
अगर लेखक की वैल्यू लिखने की संख्या, लेखक के शुरू करने के समय तय की गई बाइट की सीमा से ज़्यादा है.
WEAVE_ERROR_NO_MEMORY
अगर मेमोरी कम होने की वजह से, आउटपुट बफ़र असाइन नहीं किया जा सका.
other
कॉन्फ़िगर किए गए GetNewBuffer() या finalizeBuffer() फ़ंक्शन के ज़रिए, अलग-अलग Weave या प्लैटफ़ॉर्म के हिसाब से होने वाली गड़बड़ियां.

बाइटबाइट

WEAVE_ERROR PutBytes(
  uint64_t tag,
  const uint8_t *buf,
  uint32_t len
)

TLV बाइट स्ट्रिंग मान को कोड में बदलता है.

ब्यौरा
पैरामीटर
[in] tag
TLV टैग को वैल्यू के साथ एन्कोड किया जाना चाहिए. इसके अलावा, अगर वैल्यू को बिना किसी टैग के एन्कोड किया जाना चाहिए, तो इसे AnonymousTag पर सेट किया जाना चाहिए. टैग की वैल्यू को टैग प्रोफ़ाइल के किसी एक फ़ंक्शन ProfileTag(), ContextTag() या GeneralTag() की मदद से बनाया जाना चाहिए.
[in] buf
बफ़र के लिए एक पॉइंटर, जिसमें कोड में बदली गई बाइट स्ट्रिंग हो.
[in] len
एन्कोड किए जाने वाले बाइट की संख्या.
सामान लौटाने की वैल्यू
WEAVE_NO_ERROR
अगर तरीका सफल हो गया है.
WEAVE_ERROR_TLV_CONTAINER_OPEN
अगर कंटेनर लेखक को मौजूदा लेखक पर खोला गया है और अभी तक बंद नहीं किया गया है.
WEAVE_ERROR_INVALID_TLV_TAG
अगर दी गई टैग वैल्यू अमान्य है या उस संदर्भ में गलत है जिसमें वैल्यू लिखी जा रही है.
WEAVE_ERROR_BUFFER_TOO_SMALL
अगर लेखक की वैल्यू लिखने की संख्या, लेखक के शुरू करने के समय तय की गई बाइट की सीमा से ज़्यादा है.
WEAVE_ERROR_NO_MEMORY
अगर मेमोरी कम होने की वजह से, आउटपुट बफ़र असाइन नहीं किया जा सका.
other
कॉन्फ़िगर किए गए GetNewBuffer() या finalizeBuffer() फ़ंक्शन के ज़रिए, अलग-अलग Weave या प्लैटफ़ॉर्म के हिसाब से होने वाली गड़बड़ियां.

पटाया

WEAVE_ERROR PutNull(
  uint64_t tag
)

TLV शून्य मान को कोड में बदलता है.

ब्यौरा
पैरामीटर
[in] tag
TLV टैग को वैल्यू के साथ एन्कोड किया जाना चाहिए. इसके अलावा, अगर वैल्यू को बिना किसी टैग के एन्कोड किया जाना चाहिए, तो इसे AnonymousTag पर सेट किया जाना चाहिए. टैग की वैल्यू को टैग प्रोफ़ाइल के किसी एक फ़ंक्शन ProfileTag(), ContextTag() या GeneralTag() की मदद से बनाया जाना चाहिए.
सामान लौटाने की वैल्यू
WEAVE_NO_ERROR
अगर तरीका सफल हो गया है.
WEAVE_ERROR_TLV_CONTAINER_OPEN
अगर कंटेनर लेखक को मौजूदा लेखक पर खोला गया है और अभी तक बंद नहीं किया गया है.
WEAVE_ERROR_INVALID_TLV_TAG
अगर दी गई टैग वैल्यू अमान्य है या उस संदर्भ में गलत है जिसमें वैल्यू लिखी जा रही है.
WEAVE_ERROR_BUFFER_TOO_SMALL
अगर लेखक की वैल्यू लिखने की संख्या, लेखक के शुरू करने के समय तय की गई बाइट की सीमा से ज़्यादा है.
WEAVE_ERROR_NO_MEMORY
अगर मेमोरी कम होने की वजह से, आउटपुट बफ़र असाइन नहीं किया जा सका.
other
कॉन्फ़िगर किए गए GetNewBuffer() या finalizeBuffer() फ़ंक्शन के ज़रिए, अलग-अलग Weave या प्लैटफ़ॉर्म के हिसाब से होने वाली गड़बड़ियां.

PuPreEncodeContainer

WEAVE_ERROR PutPreEncodedContainer(
  uint64_t tag,
  TLVType containerType,
  const uint8_t *data,
  uint32_t dataLen
)

यह पहले से एन्कोड किए गए सदस्य एलिमेंट से TLV कंटेनर एलिमेंट को कोड में बदलता है.

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

यह तरीका एक कॉल में कंटेनर के पूरे एलिमेंट को कोड में बदलता है. जब PutPreEncodeContainer() रिटर्न होता है, तब लेखक ऑब्जेक्ट का इस्तेमाल, कंटेनर एलिमेंट के बाद आने वाले दूसरे TLV एलिमेंट को लिखने के लिए किया जा सकता है.

ब्यौरा
पैरामीटर
[in] tag
कंटेनर के साथ एन्कोड करने के लिए TLV टैग होना चाहिए या अगर कंटेनर को टैग के बिना एन्कोड किया जाना चाहिए, तो AnonymousTag. टैग की वैल्यू को टैग प्रोफ़ाइल के किसी एक फ़ंक्शन ProfileTag(), ContextTag() या GeneralTag() की मदद से बनाया जाना चाहिए.
[in] containerType
कोड में बदलने के लिए कंटेनर का टाइप. kTLVType_Structure, kTLVType_Array या kTLVType_Path में से एक होना चाहिए.
[in] data
एक बफ़र का सूचक, जिसमें ज़्यादा एन्कोड किए गए TLV तत्व होते हैं, जो नए कंटेनर के सदस्य बन जाएंगे.
[in] dataLen
data बफ़र में बाइट की संख्या.
सामान लौटाने की वैल्यू
WEAVE_NO_ERROR
अगर तरीका सफल हो गया है.
WEAVE_ERROR_WRONG_TLV_TYPE
अगर कंटेनर टाइप के लिए तय की गई वैल्यू गलत है.
WEAVE_ERROR_TLV_CONTAINER_OPEN
अगर कंटेनर लेखक को मौजूदा लेखक पर खोला गया है और अभी तक बंद नहीं किया गया है.
WEAVE_ERROR_INVALID_TLV_TAG
अगर दी गई टैग वैल्यू अमान्य है या उस संदर्भ में गलत है जिसमें वैल्यू लिखी जा रही है.
WEAVE_ERROR_BUFFER_TOO_SMALL
अगर लेखक की वैल्यू लिखने की संख्या, लेखक के शुरू करने के समय तय की गई बाइट की सीमा से ज़्यादा है.
WEAVE_ERROR_NO_MEMORY
अगर मेमोरी कम होने की वजह से, आउटपुट बफ़र असाइन नहीं किया जा सका.
other
कॉन्फ़िगर किए गए GetNewBuffer() या finalizeBuffer() फ़ंक्शन के ज़रिए, अलग-अलग Weave या प्लैटफ़ॉर्म के हिसाब से होने वाली गड़बड़ियां.

पुटस्ट्रिंग

WEAVE_ERROR PutString(
  uint64_t tag,
  const char *buf
)

TLV UTF8 स्ट्रिंग वैल्यू को कोड में बदलता है.

ब्यौरा
पैरामीटर
[in] tag
TLV टैग को वैल्यू के साथ एन्कोड किया जाना चाहिए. इसके अलावा, अगर वैल्यू को बिना किसी टैग के एन्कोड किया जाना चाहिए, तो इसे AnonymousTag पर सेट किया जाना चाहिए. टैग की वैल्यू को टैग प्रोफ़ाइल के किसी एक फ़ंक्शन ProfileTag(), ContextTag() या GeneralTag() की मदद से बनाया जाना चाहिए.
[in] buf
एन्कोड किए जाने वाले, शून्य से खत्म की गई UTF-8 स्ट्रिंग का एक पॉइंटर.
सामान लौटाने की वैल्यू
WEAVE_NO_ERROR
अगर तरीका सफल हो गया है.
WEAVE_ERROR_TLV_CONTAINER_OPEN
अगर कंटेनर लेखक को मौजूदा लेखक पर खोला गया है और अभी तक बंद नहीं किया गया है.
WEAVE_ERROR_INVALID_TLV_TAG
अगर दी गई टैग वैल्यू अमान्य है या उस संदर्भ में गलत है जिसमें वैल्यू लिखी जा रही है.
WEAVE_ERROR_BUFFER_TOO_SMALL
अगर लेखक की वैल्यू लिखने की संख्या, लेखक के शुरू करने के समय तय की गई बाइट की सीमा से ज़्यादा है.
WEAVE_ERROR_NO_MEMORY
अगर मेमोरी कम होने की वजह से, आउटपुट बफ़र असाइन नहीं किया जा सका.
other
कॉन्फ़िगर किए गए GetNewBuffer() या finalizeBuffer() फ़ंक्शन के ज़रिए, अलग-अलग Weave या प्लैटफ़ॉर्म के हिसाब से होने वाली गड़बड़ियां.

पुटस्ट्रिंग

WEAVE_ERROR PutString(
  uint64_t tag,
  const char *buf,
  uint32_t len
)

TLV UTF8 स्ट्रिंग वैल्यू को कोड में बदलता है.

ब्यौरा
पैरामीटर
[in] tag
TLV टैग को वैल्यू के साथ एन्कोड किया जाना चाहिए. इसके अलावा, अगर वैल्यू को बिना किसी टैग के एन्कोड किया जाना चाहिए, तो इसे AnonymousTag पर सेट किया जाना चाहिए. टैग की वैल्यू को टैग प्रोफ़ाइल के किसी एक फ़ंक्शन ProfileTag(), ContextTag() या GeneralTag() की मदद से बनाया जाना चाहिए.
[in] buf
कोड में बदलने के लिए UTF-8 स्ट्रिंग का एक पॉइंटर.
[in] len
एन्कोड की जाने वाली स्ट्रिंग की लंबाई (बाइट में).
सामान लौटाने की वैल्यू
WEAVE_NO_ERROR
अगर तरीका सफल हो गया है.
WEAVE_ERROR_TLV_CONTAINER_OPEN
अगर कंटेनर लेखक को मौजूदा लेखक पर खोला गया है और अभी तक बंद नहीं किया गया है.
WEAVE_ERROR_INVALID_TLV_TAG
अगर दी गई टैग वैल्यू अमान्य है या उस संदर्भ में गलत है जिसमें वैल्यू लिखी जा रही है.
WEAVE_ERROR_BUFFER_TOO_SMALL
अगर लेखक की वैल्यू लिखने की संख्या, लेखक के शुरू करने के समय तय की गई बाइट की सीमा से ज़्यादा है.
WEAVE_ERROR_NO_MEMORY
अगर मेमोरी कम होने की वजह से, आउटपुट बफ़र असाइन नहीं किया जा सका.
other
कॉन्फ़िगर किए गए GetNewBuffer() या finalizeBuffer() फ़ंक्शन के ज़रिए, अलग-अलग Weave या प्लैटफ़ॉर्म के हिसाब से होने वाली गड़बड़ियां.

PuStringF

WEAVE_ERROR PutStringF(
  uint64_t tag,
  const char *fmt,
  ...
)

TLV एलिमेंट के फ़ॉर्मैट के मुताबिक फ़ॉर्मैट किए गए स्ट्रिंग आउटपुट को कोड में बदलें.

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

यह प्लैटफ़ॉर्म, कॉलबैक के आधार पर कॉलबैक की सुविधा के साथ काम करने वाला vcbprintf उपलब्ध कराता है. इससे, कॉलआउट की जगह कस्टम कॉलबैक को कॉल करने की सुविधा मिलती है.

यह प्लैटफ़ॉर्म, vsnprintf का एक वैरिएंट उपलब्ध कराता है, जिसे vsnprintf_ex कहते हैं. यह वैरिएंट की तरह काम करता है. हालांकि, इसमें आउटपुट के पहले n वर्णों को शामिल नहीं किया जाता.

ध्यान दें कि कॉलबैक पर आधारित फ़ंक्शन सबसे आसान हो सकता है और कम से कम कोड का इस्तेमाल कर सकता है. हालांकि, vsprintf_ex तरह के फ़ंक्शन कम स्टैक का इस्तेमाल करेंगे.

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

ब्यौरा
पैरामीटर
[in] tag
TLV टैग को वैल्यू के साथ एन्कोड किया जाना चाहिए. इसके अलावा, अगर वैल्यू को बिना किसी टैग के एन्कोड किया जाना चाहिए, तो इसे AnonymousTag पर सेट किया जाना चाहिए. टैग की वैल्यू को टैग प्रोफ़ाइल के किसी एक फ़ंक्शन ProfileTag(), ContextTag() या GeneralTag() की मदद से बनाया जाना चाहिए.
[in] fmt
ऑर्ग्युमेंट सूची को फ़ॉर्मैट करने के लिए इस्तेमाल की जाने वाली फ़ॉर्मैट स्ट्रिंग. फ़ंक्शन के printf फ़ैमिली के लिए फ़ॉर्मैट स्ट्रिंग की तरह ही सिंटैक्स और नियमों का पालन करता है.
[in] ...
fmt के मुताबिक आउटपुट मान में फ़ॉर्मैट किए जाने वाले तर्कों की सूची.
सामान लौटाने की वैल्यू
WEAVE_NO_ERROR
अगर तरीका सफल हो गया है.
other
अगर TLVWriter तरीके WriteElementHead या GetNewBuffer को किए गए कॉल फ़ेल हो गए हैं, तो उनकी गड़बड़ी तुरंत कॉल स्टैक के सामने फ़ॉरवर्ड हो जाती है.

स्टार्ट कंटेनर

WEAVE_ERROR StartContainer(
  uint64_t tag,
  TLVType containerType,
  TLVType & outerContainerType
)

नए TLV कंटेनर एलिमेंट को एन्कोड करने से शुरू होता है.

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

StartContainer() तरीके से रिटर्न होने पर, ऐप्लिकेशन को मौजूदा TLVWriter ऑब्जेक्ट का इस्तेमाल करके, कंटेनर के एलिमेंट लिखने चाहिए. पूरा हो जाने पर, कंटेनर को कोड में बदलने का काम पूरा करने के लिए, ऐप्लिकेशन को EndContainer() तरीके का इस्तेमाल करना होगा.

ब्यौरा
पैरामीटर
[in] tag
कंटेनर के साथ एन्कोड करने के लिए TLV टैग होना चाहिए या अगर कंटेनर को टैग के बिना एन्कोड किया जाना चाहिए, तो AnonymousTag. टैग की वैल्यू को टैग प्रोफ़ाइल के किसी एक फ़ंक्शन ProfileTag(), ContextTag() या GeneralTag() की मदद से बनाया जाना चाहिए.
[in] containerType
कोड में बदलने के लिए कंटेनर का टाइप. kTLVType_Structure, kTLVType_Array या kTLVType_Path में से एक होना चाहिए.
[out] outerContainerType
TLVType मान का संदर्भ, जिसे लेखक का संदर्भ मिलेगा.
सामान लौटाने की वैल्यू
WEAVE_NO_ERROR
अगर तरीका सफल हो गया है.
WEAVE_ERROR_WRONG_TLV_TYPE
अगर कंटेनर टाइप के लिए तय की गई वैल्यू गलत है.
WEAVE_ERROR_TLV_CONTAINER_OPEN
अगर कंटेनर लेखक को मौजूदा लेखक पर खोला गया है और अभी तक बंद नहीं किया गया है.
WEAVE_ERROR_INVALID_TLV_TAG
अगर दी गई टैग वैल्यू अमान्य है या उस संदर्भ में गलत है जिसमें वैल्यू लिखी जा रही है.
WEAVE_ERROR_BUFFER_TOO_SMALL
अगर लेखक की वैल्यू लिखने की संख्या, लेखक के शुरू करने के समय तय की गई बाइट की सीमा से ज़्यादा है.
WEAVE_ERROR_NO_MEMORY
अगर मेमोरी कम होने की वजह से, आउटपुट बफ़र असाइन नहीं किया जा सका.
other
कॉन्फ़िगर किए गए GetNewBuffer() या finalizeBuffer() फ़ंक्शन के ज़रिए, अलग-अलग Weave या प्लैटफ़ॉर्म के हिसाब से होने वाली गड़बड़ियां.

StartPutBytes

WEAVE_ERROR StartPutBytes(
  uint64_t tag,
  uint32_t totalLen
)

इसे TLV बाइट स्ट्रिंग को कई हिस्सों में कोड में बदलता है.

इसे StartPutBytes के साथ इस्तेमाल किया जाना चाहिए.

ब्यौरा
पैरामीटर
[in] tag
TLV टैग को वैल्यू के साथ एन्कोड किया जाना चाहिए. इसके अलावा, अगर वैल्यू को बिना किसी टैग के एन्कोड किया जाना चाहिए, तो इसे AnonymousTag पर सेट किया जाना चाहिए. टैग की वैल्यू को टैग प्रोफ़ाइल के किसी एक फ़ंक्शन ProfileTag(), ContextTag() या GeneralTag() की मदद से बनाया जाना चाहिए.
[in] totalLen
एन्कोड किए जाने के लिए बाइट की कुल संख्या.
सामान लौटाने की वैल्यू
WEAVE_NO_ERROR
अगर तरीका सफल हो गया है.
WEAVE_ERROR_TLV_CONTAINER_OPEN
अगर कंटेनर लेखक को मौजूदा लेखक पर खोला गया है और अभी तक बंद नहीं किया गया है.
WEAVE_ERROR_INVALID_TLV_TAG
अगर दी गई टैग वैल्यू अमान्य है या उस संदर्भ में गलत है जिसमें वैल्यू लिखी जा रही है.
WEAVE_ERROR_BUFFER_TOO_SMALL
अगर लेखक की वैल्यू लिखने की संख्या, लेखक के शुरू करने के समय तय की गई बाइट की सीमा से ज़्यादा है.
WEAVE_ERROR_NO_MEMORY
अगर मेमोरी कम होने की वजह से, आउटपुट बफ़र असाइन नहीं किया जा सका.
other
कॉन्फ़िगर किए गए GetNewBuffer() या finalizeBuffer() फ़ंक्शन के ज़रिए, अलग-अलग Weave या प्लैटफ़ॉर्म के हिसाब से होने वाली गड़बड़ियां.

VPutStringF

WEAVE_ERROR VPutStringF(
  uint64_t tag,
  const char *fmt,
  va_list ap
)

TLV एलिमेंट के फ़ॉर्मैट के मुताबिक फ़ॉर्मैट किए गए स्ट्रिंग आउटपुट को कोड में बदलें.

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

यह प्लैटफ़ॉर्म, कॉलबैक के आधार पर कॉलबैक की सुविधा के साथ काम करने वाला vcbprintf उपलब्ध कराता है. इससे, कॉलआउट की जगह कस्टम कॉलबैक को कॉल करने की सुविधा मिलती है.

यह प्लैटफ़ॉर्म, vsnprintf का एक वैरिएंट उपलब्ध कराता है, जिसे vsnprintf_ex कहते हैं. यह वैरिएंट की तरह काम करता है. हालांकि, इसमें आउटपुट के पहले n वर्णों को शामिल नहीं किया जाता.

ध्यान दें कि कॉलबैक पर आधारित फ़ंक्शन सबसे आसान हो सकता है और कम से कम कोड का इस्तेमाल कर सकता है. हालांकि, vsprintf_ex तरह के फ़ंक्शन कम स्टैक का इस्तेमाल करेंगे.

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

ब्यौरा
पैरामीटर
[in] tag
TLV टैग को वैल्यू के साथ एन्कोड किया जाना चाहिए. इसके अलावा, अगर वैल्यू को बिना किसी टैग के एन्कोड किया जाना चाहिए, तो इसे AnonymousTag पर सेट किया जाना चाहिए. टैग की वैल्यू को टैग प्रोफ़ाइल के किसी एक फ़ंक्शन ProfileTag(), ContextTag() या GeneralTag() की मदद से बनाया जाना चाहिए.
[in] fmt
ऑर्ग्युमेंट सूची को फ़ॉर्मैट करने के लिए इस्तेमाल की जाने वाली फ़ॉर्मैट स्ट्रिंग. फ़ंक्शन के printf फ़ैमिली के लिए फ़ॉर्मैट स्ट्रिंग की तरह ही सिंटैक्स और नियमों का पालन करता है.
[in] ap
fmt के मुताबिक आउटपुट मान में फ़ॉर्मैट किए जाने वाले तर्कों की सूची.
सामान लौटाने की वैल्यू
WEAVE_NO_ERROR
अगर तरीका सफल हो गया है.
other
अगर TLVWriter तरीके WriteElementHead या GetNewBuffer को किए गए कॉल फ़ेल हो गए हैं, तो उनकी गड़बड़ी तुरंत कॉल स्टैक के सामने फ़ॉरवर्ड हो जाती है.

सार्वजनिक स्थिर फ़ंक्शन

FinalizePacketBuffer

WEAVE_ERROR FinalizePacketBuffer(
  TLVWriter & writer,
  uintptr_t bufHandle,
  uint8_t *bufStart,
  uint32_t dataLen
)

PacketBuffers की चेन के लिए, TLVWriter FinalizeBuffer फ़ंक्शन लागू करता है.

फ़ाइनलizePacketBuffer() फ़ंक्शन, PacketBuffers की चेन के लिए लिखने के लिए, TLVWriter का इस्तेमाल करते समय ज़रूरी फ़ाइनलाइज़ेशन करता है. इस फ़ंक्शन को GetNewPacketBuffer() फ़ंक्शन के साथ इस्तेमाल करने के लिए डिज़ाइन किया गया है.

finalizePacketBuffer() फ़ंक्शन के एपीआई के बारे में ज़्यादा जानने के लिए, FinalizeBufferFunct टाइप की परिभाषा देखें.

NewBuffer_Moloed पाएं

WEAVE_ERROR GetNewBuffer_Malloced(
  TLVWriter & writer,
  uintptr_t & bufHandle,
  uint8_t *& bufStart,
  uint32_t & bufLen
)

डाइनैमिक बफ़र में लिखने के लिए, TLVWriter GetNewBuffer फ़ंक्शन को लागू करना.

GetNewBuffer_Maloped() फ़ंक्शन, TLVWriter को नया आउटपुट स्पेस देता है, ताकि कोड में बदलने के लिए, ज़रूरी डाइनैमिक बफ़र के साइज़ को दोगुना किया जा सके. फ़ंक्शन को TLVWriter GetNewBuffer फ़ंक्शन पॉइंटर को असाइन करने के लिए बनाया गया है.

GetNewBuffer_Maloped() फ़ंक्शन के एपीआई के बारे में ज़्यादा जानने के लिए, GetNewBufferFunct के प्रकार की परिभाषा देखें.

न्यूपैकेट बफ़र पाएं

WEAVE_ERROR GetNewPacketBuffer(
  TLVWriter & writer,
  uintptr_t & bufHandle,
  uint8_t *& bufStart,
  uint32_t & bufLen
)

PacketBuffers की चेन के लिए, TLVWriter GetNewBuffer फ़ंक्शन लागू करना.

GetNewPacketBuffer() फ़ंक्शन की मदद से, कोड में बदलने के लिए ज़रूरी एक या एक से ज़्यादा PacketBuffers की चेन तय करके, TLVWriter को नया आउटपुट स्पेस दिया जाता है. फ़ंक्शन को TLVWriter GetNewBuffer फ़ंक्शन पॉइंटर को असाइन करने के लिए बनाया गया है.

ध्यान दें कि जब आप TLVWriter के साथ GetNewPacketBuffer का इस्तेमाल करते हैं, तो बफ़र चेन को फ़ाइनल करने के लिए, उससे जुड़े finalizePacketBuffer() फ़ंक्शन (या इसके बराबर) का भी इस्तेमाल किया जाना चाहिए.

GetNewPacketBuffer() फ़ंक्शन के एपीआई के बारे में ज़्यादा जानने के लिए, GetNewBufferFunct टाइप की परिभाषा देखें.

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

क्या इस कंटेनर के लिए रिज़र्व है

bool IsCloseContainerReserved(
  void
) const 

यह तय करें कि कंटेनर को शुरू करने / खोलने के समय, कंटेनर को CloseContainer के निशान के लिए जगह रिज़र्व करनी चाहिए या नहीं.

आइस कंटेनर ओपन

bool IsContainerOpen(
  void
) const 

सेट क्लोज़ कंटेनर रिज़र्व किया गया

void SetCloseContainerReserved(
  bool aCloseContainerReserved
)

सेट करें कि कंटेनर को शुरू करने / खोलने पर, कंटेनर को CloseContainer के निशान के लिए खाली जगह रखनी चाहिए या नहीं.

सेट कंटेनरखोलें

void SetContainerOpen(
  bool aContainerOpen
)

राइटडेटा

WEAVE_ERROR WriteData(
  const uint8_t *p,
  uint32_t len
)

राइट एलिमेंटहेड

WEAVE_ERROR WriteElementHead(
  TLVElementType elemType,
  uint64_t tag,
  uint64_t lenOrVal
)

TypeElementWithData

WEAVE_ERROR WriteElementWithData(
  TLVType type,
  uint64_t tag,
  const uint8_t *data,
  uint32_t dataLen
)