nl::Weave::TLV::TLVWriter

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

यह Weave TLV फ़ॉर्मैट में डेटा लिखने के लिए, एक मेमोरी एफ़िशिएंट एन्कोडर उपलब्ध कराता है.

खास जानकारी

TLVWriter, Weave TLV डेटा के लिए, फ़ॉरवर्ड-ओनली, स्ट्रीम-स्टाइल एन्कोडर लागू करता है. ऐप्लिकेशन, लेखक के Put() तरीकों में से किसी एक को कॉल करके, कोड में बदलने के लिए डेटा लिखते हैं. साथ ही, ज़रूरत के मुताबिक इससे जुड़े टैग और वैल्यू की जानकारी पास करते हैं. इसी तरह, ऐप्लिकेशन लेखक के 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)
TLV की साइन की गई पूर्णांक वैल्यू को कोड में बदलता है.
Put(uint64_t tag, int8_t v, bool preserveSize)
TLV की साइन की गई पूर्णांक वैल्यू को कोड में बदलता है.
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

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

FinalizeBufferFunct

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

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

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

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

GetNewBufferFunct

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

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

AppData

void * AppData

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

FinalizeBuffer

FinalizeBufferFunct FinalizeBuffer

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

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

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

GetNewBuffer

GetNewBufferFunct GetNewBuffer

किसी फ़ंक्शन का पॉइंटर, जो TLVWriter को नया आउटपुट बफ़र स्पेस देगा.

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

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

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

ImplicitProfileId

uint32_t ImplicitProfileId

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

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

डिफ़ॉल्ट रूप से, ImplicitProfileId प्रॉपर्टी kProfileIdNot स्थल पर सेट होती है, जो लेखक को निर्देश देती है कि वे अनजाने में कोड में बदले गए टैग न बनाएं. ऐप्लिकेशन, एन्कोडिंग के मौजूदा पॉइंट से शुरू करते हुए, किसी भी समय 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() को कॉल करने के बाद, TLV कंटेनर को लिखा जाता है.

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

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

जानकारी
पैरामीटर
[in] containerWriter
TLVWriter ऑब्जेक्ट का रेफ़रंस, जो OpenContainer() तरीके से दिया गया था.
रिटर्न वैल्यू
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 या प्लैटफ़ॉर्म से जुड़ी अन्य गड़बड़ियां दिखती हैं.

ContinuePutBytes

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 या प्लैटफ़ॉर्म से जुड़ी अन्य गड़बड़ियां दिखती हैं.

CopyContainer

WEAVE_ERROR CopyContainer(
  TLVReader & container
)

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

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

जानकारी
पैरामीटर
[in] container
पहले से कोड में बदले गए TLV कंटेनर की पहचान करने वाले TLVReader ऑब्जेक्ट की पहचान, जिसे कॉपी किया जाना है.
रिटर्न वैल्यू
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() फ़ंक्शन या रीडर ऑब्जेक्ट से जुड़े GetNextBuffer() फ़ंक्शन की मदद से मिलने वाली, Weave या प्लैटफ़ॉर्म से जुड़ी अन्य गड़बड़ियां.

CopyContainer

WEAVE_ERROR CopyContainer(
  uint64_t tag,
  TLVReader & container
)

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

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

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

जानकारी
पैरामीटर
[in] tag
TLV टैग को कंटेनर के साथ एन्कोड करना है या अगर कंटेनर को बिना किसी टैग के कोड में बदला जाना चाहिए, तो AnonymousTag. टैग की वैल्यू, टैग डेफ़िनिशन फ़ंक्शन ProfileTag(), ContextTag() या CommonTag() में से किसी एक फ़ंक्शन का इस्तेमाल करके बनाई जानी चाहिए.
[in] container
पहले से कोड में बदले गए TLV कंटेनर की पहचान करने वाले TLVReader ऑब्जेक्ट का रेफ़रंस, जिसके टाइप और सदस्यों को कॉपी किया जाना चाहिए.
रिटर्न वैल्यू
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() फ़ंक्शन या रीडर ऑब्जेक्ट से जुड़े GetNextBuffer() फ़ंक्शन की मदद से मिलने वाली, Weave या प्लैटफ़ॉर्म से जुड़ी अन्य गड़बड़ियां.

CopyContainer

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

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

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

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

जानकारी
पैरामीटर
[in] tag
TLV टैग को कंटेनर के साथ एन्कोड करना है या अगर कंटेनर को बिना किसी टैग के कोड में बदला जाना चाहिए, तो AnonymousTag. टैग की वैल्यू, टैग डेफ़िनिशन फ़ंक्शन ProfileTag(), ContextTag() या CommonTag() में से किसी एक फ़ंक्शन का इस्तेमाल करके बनाई जानी चाहिए.
[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() फ़ंक्शन या रीडर ऑब्जेक्ट से जुड़े GetNextBuffer() फ़ंक्शन की मदद से मिलने वाली, Weave या प्लैटफ़ॉर्म से जुड़ी अन्य गड़बड़ियां.

CopyElement

WEAVE_ERROR CopyElement(
  TLVReader & reader
)

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

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

जानकारी
पैरामीटर
[in] reader
पहले से कोड में बदले गए TLV एलिमेंट की पहचान करने वाले TLVReader ऑब्जेक्ट का रेफ़रंस, जिसे कॉपी किया जाना चाहिए.
रिटर्न वैल्यू
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() फ़ंक्शन या रीडर ऑब्जेक्ट से जुड़े GetNextBuffer() फ़ंक्शन की मदद से मिलने वाली, Weave या प्लैटफ़ॉर्म से जुड़ी अन्य गड़बड़ियां.

CopyElement

WEAVE_ERROR CopyElement(
  uint64_t tag,
  TLVReader & reader
)

EndContainer

WEAVE_ERROR EndContainer(
  TLVType outerContainerType
)

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

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

जानकारी
पैरामीटर
[in] outerContainerType
वह TLVType वैल्यू, जो StartContainer() तरीके से मिलती है.
रिटर्न वैल्यू
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() फ़ंक्शन से मिली अन्य Weave या प्लैटफ़ॉर्म से जुड़ी गड़बड़ियां.

GetContainerType

TLVType GetContainerType(
  void
) const 

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

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

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

GetLengthWritten

uint32_t GetLengthWritten(
  void
)

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

जानकारी
लौटाए जाने वाले प्रॉडक्ट
राइटर शुरू किए जाने के बाद से, लिखे गए बाइट की कुल संख्या.

Init

void Init(
  uint8_t *buf,
  uint32_t maxLen
)

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

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

Init

void Init(
  PacketBuffer *buf,
  uint32_t maxLen
)

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

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

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

Init

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 के साथ लेखन विफल हो जाएगा.

InitMalloced

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

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

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

OpenContainer

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

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

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

कंटेनर राइटर खुला होने पर, ऐप्लिकेशन को पैरंट राइटर के तौर पर कॉल नहीं करना चाहिए और न ही उसकी स्थिति में बदलाव करना चाहिए.

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

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

जानकारी
पैरामीटर
[in] tag
TLV टैग को कंटेनर के साथ एन्कोड करना है या अगर कंटेनर को बिना किसी टैग के कोड में बदला जाना चाहिए, तो AnonymousTag. टैग की वैल्यू, टैग डेफ़िनिशन फ़ंक्शन ProfileTag(), ContextTag() या CommonTag() में से किसी एक फ़ंक्शन का इस्तेमाल करके बनाई जानी चाहिए.
[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
)

TLV की साइन की गई पूर्णांक वैल्यू को कोड में बदलता है.

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

जानकारी
पैरामीटर
[in] tag
TLV टैग को वैल्यू के साथ एन्कोड करना है या अगर वैल्यू को बिना टैग के कोड में बदला जाना चाहिए, तो AnonymousTag. टैग की वैल्यू, टैग डेफ़िनिशन फ़ंक्शन ProfileTag(), ContextTag() या CommonTag() में से किसी एक फ़ंक्शन का इस्तेमाल करके बनाई जानी चाहिए.
[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
)

TLV की साइन की गई पूर्णांक वैल्यू को कोड में बदलता है.

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

जानकारी
पैरामीटर
[in] tag
TLV टैग को वैल्यू के साथ एन्कोड करना है या अगर वैल्यू को बिना टैग के कोड में बदला जाना चाहिए, तो AnonymousTag. टैग की वैल्यू, टैग डेफ़िनिशन फ़ंक्शन ProfileTag(), ContextTag() या CommonTag() में से किसी एक फ़ंक्शन का इस्तेमाल करके बनाई जानी चाहिए.
[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() या CommonTag() में से किसी एक फ़ंक्शन का इस्तेमाल करके बनाई जानी चाहिए.
[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() या CommonTag() में से किसी एक फ़ंक्शन का इस्तेमाल करके बनाई जानी चाहिए.
[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() या CommonTag() में से किसी एक फ़ंक्शन का इस्तेमाल करके बनाई जानी चाहिए.
[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 या प्लैटफ़ॉर्म से जुड़ी अन्य गड़बड़ियां दिखती हैं.

PutBoolean

WEAVE_ERROR PutBoolean(
  uint64_t tag,
  bool v
)

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

जानकारी
पैरामीटर
[in] tag
TLV टैग को वैल्यू के साथ एन्कोड करना है या अगर वैल्यू को बिना टैग के कोड में बदला जाना चाहिए, तो AnonymousTag. टैग की वैल्यू, टैग डेफ़िनिशन फ़ंक्शन ProfileTag(), ContextTag() या CommonTag() में से किसी एक फ़ंक्शन का इस्तेमाल करके बनाई जानी चाहिए.
[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 या प्लैटफ़ॉर्म से जुड़ी अन्य गड़बड़ियां दिखती हैं.

PutBytes

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

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

जानकारी
पैरामीटर
[in] tag
TLV टैग को वैल्यू के साथ एन्कोड करना है या अगर वैल्यू को बिना टैग के कोड में बदला जाना चाहिए, तो AnonymousTag. टैग की वैल्यू, टैग डेफ़िनिशन फ़ंक्शन ProfileTag(), ContextTag() या CommonTag() में से किसी एक फ़ंक्शन का इस्तेमाल करके बनाई जानी चाहिए.
[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 या प्लैटफ़ॉर्म से जुड़ी अन्य गड़बड़ियां दिखती हैं.

PutNull

WEAVE_ERROR PutNull(
  uint64_t tag
)

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

जानकारी
पैरामीटर
[in] tag
TLV टैग को वैल्यू के साथ एन्कोड करना है या अगर वैल्यू को बिना टैग के कोड में बदला जाना चाहिए, तो AnonymousTag. टैग की वैल्यू, टैग डेफ़िनिशन फ़ंक्शन ProfileTag(), ContextTag() या CommonTag() में से किसी एक फ़ंक्शन का इस्तेमाल करके बनाई जानी चाहिए.
रिटर्न वैल्यू
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 या प्लैटफ़ॉर्म से जुड़ी अन्य गड़बड़ियां दिखती हैं.

PutPreEncodedContainer

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

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

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

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

जानकारी
पैरामीटर
[in] tag
TLV टैग को कंटेनर के साथ एन्कोड करना है या अगर कंटेनर को बिना किसी टैग के कोड में बदला जाना चाहिए, तो AnonymousTag. टैग की वैल्यू, टैग डेफ़िनिशन फ़ंक्शन ProfileTag(), ContextTag() या CommonTag() में से किसी एक फ़ंक्शन का इस्तेमाल करके बनाई जानी चाहिए.
[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 या प्लैटफ़ॉर्म से जुड़ी अन्य गड़बड़ियां दिखती हैं.

PutString

WEAVE_ERROR PutString(
  uint64_t tag,
  const char *buf
)

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

जानकारी
पैरामीटर
[in] tag
TLV टैग को वैल्यू के साथ एन्कोड करना है या अगर वैल्यू को बिना टैग के कोड में बदला जाना चाहिए, तो AnonymousTag. टैग की वैल्यू, टैग डेफ़िनिशन फ़ंक्शन ProfileTag(), ContextTag() या CommonTag() में से किसी एक फ़ंक्शन का इस्तेमाल करके बनाई जानी चाहिए.
[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 या प्लैटफ़ॉर्म से जुड़ी अन्य गड़बड़ियां दिखती हैं.

PutString

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

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

जानकारी
पैरामीटर
[in] tag
TLV टैग को वैल्यू के साथ एन्कोड करना है या अगर वैल्यू को बिना टैग के कोड में बदला जाना चाहिए, तो AnonymousTag. टैग की वैल्यू, टैग डेफ़िनिशन फ़ंक्शन ProfileTag(), ContextTag() या CommonTag() में से किसी एक फ़ंक्शन का इस्तेमाल करके बनाई जानी चाहिए.
[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 या प्लैटफ़ॉर्म से जुड़ी अन्य गड़बड़ियां दिखती हैं.

PutStringF

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

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

PutStringF एक sprintf का एनालॉग है, जहां आउटपुट को वर्ण बफ़र के बजाय TLV एलिमेंट में स्टोर किया जाता है. जब प्रिंट करने के लिए ज़्यादा सुविधाएं उपलब्ध हों, तब यह फ़ंक्शन, नतीजे वाली स्ट्रिंग को एक जगह मौजूद स्टोरेज में भेज सकता है. इसे लागू करने पर, Printf को बेहतर बनाने के ये तरीके काम करते हैं:

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

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

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

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

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

StartContainer

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

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

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

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

जानकारी
पैरामीटर
[in] tag
TLV टैग को कंटेनर के साथ एन्कोड करना है या अगर कंटेनर को बिना किसी टैग के कोड में बदला जाना चाहिए, तो AnonymousTag. टैग की वैल्यू, टैग डेफ़िनिशन फ़ंक्शन ProfileTag(), ContextTag() या CommonTag() में से किसी एक फ़ंक्शन का इस्तेमाल करके बनाई जानी चाहिए.
[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 बाइट स्ट्रिंग को कई हिस्सों में एन्कोड करता है.

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

जानकारी
पैरामीटर
[in] tag
TLV टैग को वैल्यू के साथ एन्कोड करना है या अगर वैल्यू को बिना टैग के कोड में बदला जाना चाहिए, तो AnonymousTag. टैग की वैल्यू, टैग डेफ़िनिशन फ़ंक्शन ProfileTag(), ContextTag() या CommonTag() में से किसी एक फ़ंक्शन का इस्तेमाल करके बनाई जानी चाहिए.
[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 एलिमेंट में फ़ॉर्मैट के हिसाब से एन्कोड करें.

PutStringF एक sprintf का एनालॉग है, जहां आउटपुट को वर्ण बफ़र के बजाय TLV एलिमेंट में स्टोर किया जाता है. जब प्रिंट करने के लिए ज़्यादा सुविधाएं उपलब्ध हों, तब यह फ़ंक्शन, नतीजे वाली स्ट्रिंग को एक जगह मौजूद स्टोरेज में भेज सकता है. इसे लागू करने पर, Printf को बेहतर बनाने के ये तरीके काम करते हैं:

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

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

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

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

जानकारी
पैरामीटर
[in] tag
TLV टैग को वैल्यू के साथ एन्कोड करना है या अगर वैल्यू को बिना टैग के कोड में बदला जाना चाहिए, तो AnonymousTag. टैग की वैल्यू, टैग डेफ़िनिशन फ़ंक्शन ProfileTag(), ContextTag() या CommonTag() में से किसी एक फ़ंक्शन का इस्तेमाल करके बनाई जानी चाहिए.
[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 फ़ंक्शन को लागू करना.

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

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

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() फ़ंक्शन के एपीआई के बारे में ज़्यादा जानकारी पाने के लिए, GetNewBufferFunct टाइप की परिभाषा देखें.

GetNewPacketBuffer

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

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

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

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

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

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

IsCloseContainerReserved

bool IsCloseContainerReserved(
  void
) const 

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

IsContainerOpen

bool IsContainerOpen(
  void
) const 

SetCloseContainerReserved

void SetCloseContainerReserved(
  bool aCloseContainerReserved
)

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

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
)