nl::Weave::TLV::TLVWriter

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

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

खास जानकारी

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

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

इनहेरिटेंस

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

सुरक्षित किए गए टाइप

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

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

FinalizePacketBuffer(TLVWriter & writer, uintptr_t bufHandle, uint8_t *bufStart, uint32_t dataLen)
BoxetBuffers की चेन में लिखने के लिए, TLVWriter FinalizeBuffer फ़ंक्शन को लागू करना.
GetNewBuffer_Malloced(TLVWriter & writer, uintptr_t & bufHandle, uint8_t *& bufStart, uint32_t & bufLen)
किसी डाइनैमिक बफ़र में लिखने के लिए, TLVWriter के GetNewBuffer फ़ंक्शन को लागू करना.
GetNewPacketBuffer(TLVWriter & writer, uintptr_t & bufHandle, uint8_t *& bufStart, uint32_t & bufLen)
0PaetBuffers की चेन में लिखने के लिए, TLVWriter के GetNewBuffer फ़ंक्शन को लागू किया जाता है.

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

IsCloseContainerReserved(void) const
bool
तय करें कि कंटेनर को शुरू करने / खोलने के पॉइंट पर कंटेनर को क्लोज़ कंटेनर के निशान के लिए जगह खाली करनी चाहिए या नहीं.
IsContainerOpen(void) const
bool
SetCloseContainerReserved(bool aCloseContainerReserved)
void
सेट करें कि कंटेनर को शुरू करते / खोलते समय, कंटेनर को उस जगह के आइकॉन के लिए जगह खाली करनी चाहिए या नहीं जहां इसे होना चाहिए.
SetContainerOpen(bool aContainerOpen)
void
WriteData(const uint8_t *p, uint32_t len)
WriteElementHead(TLVElementType elemType, uint64_t tag, uint64_t lenOrVal)
WriteElementWithData(TLVType type, uint64_t tag, const uint8_t *data, uint32_t dataLen)

सुरक्षित किए गए टाइप

@72

 @72

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

FinalizeBufferFunct

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

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

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

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

सार्वजनिक एट्रिब्यूट

AppData

void * AppData

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

FinalizeBuffer

FinalizeBufferFunct FinalizeBuffer

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

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

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

GetNewBuffer

GetNewBufferFunct GetNewBuffer

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

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

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

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

ImplicitProfileId

uint32_t ImplicitProfileId

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

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

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

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

mBufHandle

uintptr_t mBufHandle

mBufStart

uint8_t * mBufStart

mContainerType

TLVType mContainerType

mLenWritten

uint32_t mLenWritten

mMaxLen

uint32_t mMaxLen

mRemainingLen

uint32_t mRemainingLen

mWritePoint

uint8_t * mWritePoint

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

CloseContainer

WEAVE_ERROR CloseContainer(
  TLVWriter & containerWriter
)

OpenContainer() को कॉल करने के बाद, टीएलवी कंटेनर को लिखने की प्रोसेस को पूरा करता है.

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

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

जानकारी
पैरामीटर
[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() TLVReader ऑब्जेक्ट की मौजूदा जगह पर मौजूद, पहले से कोड में बदले गए कंटेनर एलिमेंट को कॉपी करके, एक नए TLV कंटेनर एलिमेंट को कोड में बदलता है. यह तरीका, नए कंटेनर के पूरे एलिमेंट को एक कॉल में लिखता है और सोर्स एन्कोडिंग से कंटेनर के टाइप, टैग, और एलिमेंट को कॉपी करता है. जब तरीका रिटर्न करता है, तो कंटेनर एलिमेंट के बाद, अतिरिक्त टीएलवी एलिमेंट लिखने के लिए, राइटर ऑब्जेक्ट का इस्तेमाल किया जा सकता है.

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

CopyContainer

WEAVE_ERROR CopyContainer(
  uint64_t tag,
  TLVReader & container
)

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

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

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

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

CopyContainer

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

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

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

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

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

CopyElement

WEAVE_ERROR CopyElement(
  TLVReader & reader
)

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

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

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

CopyElement

WEAVE_ERROR CopyElement(
  uint64_t tag,
  TLVReader & reader
)

EndContainer

WEAVE_ERROR EndContainer(
  TLVType outerContainerType
)

टीएलवी कंटेनर एलिमेंट के कोड में बदलने की प्रोसेस पूरी करता है.

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

जानकारी
पैरामीटर
[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
)

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

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

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

GetContainerType

TLVType GetContainerType(
  void
) const 

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

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

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

GetLengthWritten

uint32_t GetLengthWritten(
  void
)

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

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

शुरू करें

void Init(
  uint8_t *buf,
  uint32_t maxLen
)

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

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

शुरू करें

void Init(
  PacketBuffer *buf,
  uint32_t maxLen
)

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

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

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

शुरू करें

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

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

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

जानकारी
पैरामीटर
[in] buf
किसी PaetBuffer का पॉइंटर, जिसमें TLV डेटा लिखा जाना चाहिए.
[in] maxLen
आउटपुट बफ़र में लिखे जाने वाले बाइट की ज़्यादा से ज़्यादा संख्या.
[in] allowDiscontiguousBuffers
अगर सही हो, तो PinetBuffers की चेन में डेटा लिखें. साथ ही, पहले से लिखे गए डेटा को सेव करने के लिए, ज़रूरत के हिसाब से नए बफ़र तय करें. गलत होने पर, अगर लिखा गया डेटा शुरुआती आउटपुट बफ़र में उपलब्ध जगह से ज़्यादा हो जाता है, तो 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
)

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

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

जानकारी
पैरामीटर
[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
)

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

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

जानकारी
पैरामीटर
[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
)

टीएलवी की ऐसी वैल्यू को कोड में बदलता है जिसे साइन नहीं किया गया है.

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

जानकारी
पैरामीटर
[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
)

टीएलवी की ऐसी वैल्यू को कोड में बदलता है जिसे साइन नहीं किया गया है.

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

जानकारी
पैरामीटर
[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
)

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

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

जानकारी
पैरामीटर
[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
)

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

जानकारी
पैरामीटर
[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
)

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

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,
  ...
)

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

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

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

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

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

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

जानकारी
पैरामीटर
[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
)

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

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
)

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

इसका इस्तेमाल कंटिन्यूइटबाइट्स के साथ किया जाना चाहिए.

जानकारी
पैरामीटर
[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 या प्लैटफ़ॉर्म की खास गड़बड़ियां.

वीपूटस्ट्रिंगएफ़

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

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

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

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

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

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

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

जानकारी
पैरामीटर
[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
)

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

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

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

GetNewBuffer_Malloced

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

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

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

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

GetNewPacketBuffer

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

0PaetBuffers की चेन में लिखने के लिए, TLVWriter के GetNewBuffer फ़ंक्शन को लागू किया जाता है.

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

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

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

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

IsCloseContainerReserved

bool IsCloseContainerReserved(
  void
) const 

तय करें कि कंटेनर को शुरू करने / खोलने के पॉइंट पर कंटेनर को क्लोज़ कंटेनर के निशान के लिए जगह खाली करनी चाहिए या नहीं.

IsContainerOpen

bool IsContainerOpen(
  void
) const 

SetCloseContainerReserved

void SetCloseContainerReserved(
  bool aCloseContainerReserved
)

सेट करें कि कंटेनर को शुरू करते / खोलते समय, कंटेनर को उस जगह के आइकॉन के लिए जगह खाली करनी चाहिए या नहीं जहां इसे होना चाहिए.

SetContainerOpen

void SetContainerOpen(
  bool aContainerOpen
)

WriteData

WEAVE_ERROR WriteData(
  const uint8_t *p,
  uint32_t len
)

WriteElementHead

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

WriteElementWithData

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