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

nl:: Weave::TLV::WeaveCircularTLVBuffer

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

WeaveCircularTLVBuffer nl::Weave::TLV::TLVWriter और nl::Weave::TLVTLVReader के लिए गोल आकार वाला स्टोरेज उपलब्ध कराता है.

खास जानकारी

nl::Weave::TLV::TLVWriter WeaveCircularTLVBuffer की ऐसी सीमा तक संख्या का इस्तेमाल कर सकता है जिसका सीमा नहीं है. इसका मतलब है कि हर अलग-अलग TLV एंट्री, दिए गए स्टोरेज में पूरी तरह से फ़िट होती है. nl::Weave::TLV::TLVReader ज़्यादातर बफ़र के साइज़ का पढ़ेगा, लेकिन बफ़र के अंदर रैपअराउंड को शामिल करेगा.

कंस्ट्रक्टर और कंस्ट्रक्टर

WeaveCircularTLVBuffer(uint8_t *inBuffer, size_t inBufferLength)
WeaveCircularTLVBuffer कंस्ट्रक्टर.
WeaveCircularTLVBuffer(uint8_t *inBuffer, size_t inBufferLength, uint8_t *inHead)
WeaveCircularTLVBuffer कंस्ट्रक्टर.

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

ProcessEvictedElementFunct)(WeaveCircularTLVBuffer &inBuffer, void *inAppData, TLVReader &inReader) WEAVE_ERROR(*)
एक फ़ंक्शन जिसे nl::Weave::TLV::WeaveCircularTLVBuffer से हटाने से पहले किसी TLV एलिमेंट को प्रोसेस करने के लिए कहा जाता है.

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

mAppData
void *
निकाले गए एलिमेंट को प्रोसेस करने के लिए, कॉलबैक के साथ इस्तेमाल किया जाने वाला एक वैकल्पिक उपयोगकर्ता दिया गया संदर्भ.
mImplicitProfileId
uint32_t
mProcessEvictedElement
ऐसा वैकल्पिक कॉलबैक जो एलिमेंट को प्रोसेस करता है. इसके बाद, उसे सर्कुलर बफ़र से हटा दिया जाता है.

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

AvailableDataLength(void) const
size_t
DataLength(void) const
size_t
EvictHead(void)
WeaveCircularTLVBuffer में सबसे ऊपर के लेवल के टीएलवी एलिमेंट को हटा देता है.
FinalizeBuffer(TLVWriter & ioWriter, uint8_t *inBufStart, uint32_t inBufLen)
FinalizeBuffer TLVWriter से आउटपुट मिलने पर WeaveCircularTLVBuffer की स्थिति में बदलाव करता है.
GetNewBuffer(TLVWriter & ioWriter, uint8_t *& outBufStart, uint32_t & outBufLen)
TLVWriter के लिए ज़्यादा स्टोरेज पाएं.
GetNextBuffer(TLVReader & ioReader, const uint8_t *& outBufStart, uint32_t & outBufLen)
TLVReader के लिए अतिरिक्त जगह पाएं.
GetQueue(void) const
uint8_t *
GetQueueSize(void) const
size_t
QueueHead(void) const
uint8_t *
QueueTail(void) const
uint8_t *
SetQueueHead(uint8_t *aQueueHead)
void
SetQueueLength(size_t aQueueLength)
void

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

FinalizeBufferFunct(TLVWriter & ioWriter, uintptr_t inBufHandle, uint8_t *inBufStart, uint32_t inBufLen)
WeaveCircularTLVBuffer::finalifyBuffer के लिए एक ट्रैंपोलीन.
GetNewBufferFunct(TLVWriter & ioWriter, uintptr_t & inBufHandle, uint8_t *& outBufStart, uint32_t & outBufLen)
TLVWriter के लिए ज़्यादा जगह पाने के लिए, एक ट्रैंपोलीन.
GetNextBufferFunct(TLVReader & ioReader, uintptr_t & inBufHandle, const uint8_t *& outBufStart, uint32_t & outBufLen)
WeaveCircularTLVBuffer::GetNextBuffer के लिए ट्रैंपोलीन.

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

प्रोसेस किया गया ElementFunct

WEAVE_ERROR(* ProcessEvictedElementFunct)(WeaveCircularTLVBuffer &inBuffer, void *inAppData, TLVReader &inReader)

एक फ़ंक्शन जिसे nl::Weave::TLV::WeaveCircularTLVBuffer से हटाने से पहले किसी TLV एलिमेंट को प्रोसेस करने के लिए कहा जाता है.

इस तरह के फ़ंक्शन का इस्तेमाल, एक TLV एलिमेंट को प्रोसेस करने के लिए किया जाता है. यह बफ़र से निकाला जाता है. फ़ंक्शन को मिटाए जाने वाले एलिमेंट पर nl::Weave::TLV::TLVReader की पोज़िशन दी जाएगी. साथ ही, शून्य या कॉन्टेक्स्ट दिया जाएगा, जहां उपयोगकर्ता ने कॉलबैक के लिए अन्य एनवायरमेंट उपलब्ध कराया हो. अगर फ़ंक्शन ने एलिमेंट को प्रोसेस कर लिया है, तो यह WEAVE_NO_ERROR को रिटर्न करेगा. यह WeaveCircularTLVBuffer की जानकारी देता है कि एलिमेंट को सुरक्षित तरीके से हटाया जा सकता है. सामान लौटाने की किसी दूसरी वैल्यू को गड़बड़ी माना जाता है. साथ ही, WeaveCircularTLVBuffer उस एलिमेंट को प्रॉपर्टी से बाहर निकाल देगा.

ध्यान दें: इस कॉलबैक का इस्तेमाल, WeaveCircularTLVBuffer को हर हाल में एलिमेंट से बाहर निकालने के लिए किया जा सकता है. ऐसा करना कई स्थितियों में मददगार हो सकता है, जब उसमें ज़रूरत के मुताबिक सर्कुलर बफ़र हो, लेकिन उसमें मौजूद किसी भी एलिमेंट को बदला न जाए.

जानकारी
पैरामीटर
[in] inBuffer
उस बफ़र की जानकारी जिससे प्रॉपर्टी हटाई जाती है
[in] inAppData
इस कॉलबैक के लिए, ज़्यादा जानकारी के साथ उपयोगकर्ता से मिले स्ट्रक्चर का पॉइंटर
[in] inReader
एलिमेंट को बाहर रखने के लिए, TLVReader को एलिमेंट पर रखा गया.
सामान लौटाने की वैल्यू
WEAVE_NO_ERROR
सफलता पर. एलिमेंट को हटा दिया जाएगा.
other
इवेंट की प्रोसेसिंग के दौरान कोई गड़बड़ी हुई है. एलिमेंट बफ़र में रहता है. इस एलिमेंट को हटाने के लिए ट्रिगर किया गया राइट फ़ंक्शन काम नहीं करेगा.

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

mAppData

void * mAppData

निकाले गए एलिमेंट को प्रोसेस करने के लिए, कॉलबैक के साथ इस्तेमाल किया जाने वाला एक वैकल्पिक उपयोगकर्ता दिया गया संदर्भ.

mImplicitProfileId

uint32_t mImplicitProfileId

mProcessEVictedElement

ProcessEvictedElementFunct mProcessEvictedElement

ऐसा वैकल्पिक कॉलबैक जो एलिमेंट को प्रोसेस करता है. इसके बाद, उसे सर्कुलर बफ़र से हटा दिया जाता है.

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

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

उपलब्ध डेटा की अवधि

size_t AvailableDataLength(
  void
) const 

डेटा की लंबाई

size_t DataLength(
  void
) const 

इविक्टहेड

WEAVE_ERROR EvictHead(
  void
)

WeaveCircularTLVBuffer में सबसे ऊपर के लेवल के टीएलवी एलिमेंट को हटा देता है.

यह फ़ंक्शन, बफ़र में मौजूद सबसे ऊपर के लेवल के टीएलवी एलिमेंट को हटा देता है. फ़ंक्शन, हटाए जाने से पहले एलिमेंट को प्रोसेस करने के लिए mProcessEVictedElement पर रजिस्टर किए गए कॉलबैक को कॉल करेगा. अगर कॉलबैक में WEAVE_NO_ERROR के अलावा कुछ और दिखता है, तो एलिमेंट को हटाया नहीं जाता. इसी तरह, अगर किसी गड़बड़ी की वजह से बफ़र में कोई एलिमेंट नहीं रहता है, तो ऐसे में WeaveCircularTLVBuffer में कोई बदलाव नहीं होगा.

जानकारी
सामान लौटाने की वैल्यू
WEAVE_NO_ERROR
सफलता पर.
other
किसी दूसरी गड़बड़ी पर, जो कॉलबैक या TLVReader से मिलती है.

फ़ाइनली बफ़र

WEAVE_ERROR FinalizeBuffer(
  TLVWriter & ioWriter,
  uint8_t *inBufStart,
  uint32_t inBufLen
)

FinalizeBuffer TLVWriter से आउटपुट मिलने पर WeaveCircularTLVBuffer की स्थिति में बदलाव करता है.

यह फ़ंक्शन, सूची में पूंछ की स्थिति को प्रभावित करता है.

जानकारी
पैरामीटर
[in,out] ioWriter
इस फ़ंक्शन को कॉल करने वाला TLVWriter
[in] inBufStart
डेटा की शुरुआत का संकेत (TLVWriter के हिसाब से)
[in] inBufLen
inbufStart के बारे में बताए गए बफ़र में मौजूद डेटा की लंबाई
सामान लौटाने की वैल्यू
WEAVE_NO_ERROR
बिना किसी शर्त के.

GetNewBuffer

WEAVE_ERROR GetNewBuffer(
  TLVWriter & ioWriter,
  uint8_t *& outBufStart,
  uint32_t & outBufLen
)

TLVWriter के लिए ज़्यादा स्टोरेज पाएं.

असल में, फ़ंक्शन सर्कुलर बफ़र से किसी एलिमेंट को हटाता है और इस बफ़र की लाइन के हेड को अडजस्ट करता है

जानकारी
पैरामीटर
[in,out] ioWriter
इस फ़ंक्शन को कॉल करने वाला TLVWriter
[out] outBufStart
नए बफ़र के लिए पॉइंटर
[out] outBufLen
लिखे जाने के लिए उपलब्ध लंबाई
सामान लौटाने की वैल्यू
WEAVE_NO_ERROR
सफलता पर.
other
अगर फ़ंक्शन एक पूरे टॉप-लेवल टीएलवी एलिमेंट को नहीं हटा पाया.

GetNextBuffer

WEAVE_ERROR GetNextBuffer(
  TLVReader & ioReader,
  const uint8_t *& outBufStart,
  uint32_t & outBufLen
)

TLVReader के लिए अतिरिक्त जगह पाएं.

WeaveCircularTLVBuffer की ओर से दिया गया स्टोरेज, बफ़र के अंदर रैप किया जा सकता है. इस फ़ंक्शन से, हमें सर्कुलर बफ़र की बफ़रिंग को TLVReader कंस्ट्रेंट से मैच करने की सुविधा मिलती है. रीडर, बफ़र से ज़्यादा से ज़्यादा mQueueSize बाइट पढ़ेगा.

जानकारी
पैरामीटर
[in] ioReader
इस फ़ंक्शन को कॉल करने वाला TLVReader.
[in,out] outBufStart
डेटा बफ़र का रेफ़रंस. लौटाए जाने पर, यह इस बफ़र की वैल्यू पर सेट होता है.
[out] outBufLen
लौटाने पर, लगातार बाइट की संख्या को सेट करें, जिसे बफ़र से पढ़ा जा सकता है.
सामान लौटाने की वैल्यू
WEAVE_NO_ERROR
बिना किसी शर्त के पूरा हो जाता है.

सूची में शामिल हों

uint8_t * GetQueue(
  void
) const 

GetQueueSize

size_t GetQueueSize(
  void
) const 

सूची का हेडर

uint8_t * QueueHead(
  void
) const 

सूचीटेल

uint8_t * QueueTail(
  void
) const 

सेट सूची हेडर

void SetQueueHead(
  uint8_t *aQueueHead
)

सेट की सूची की लंबाई

void SetQueueLength(
  size_t aQueueLength
)

WeaveCircularTLVBuffer

 WeaveCircularTLVBuffer(
  uint8_t *inBuffer,
  size_t inBufferLength
)

WeaveCircularTLVBuffer कंस्ट्रक्टर.

जानकारी
पैरामीटर
[in] inBuffer
सूची के पीछे वाले स्टोर के लिए पॉइंटर
[in] inBufferLength
बैकिंग स्टोर की लंबाई, बाइट में

WeaveCircularTLVBuffer

 WeaveCircularTLVBuffer(
  uint8_t *inBuffer,
  size_t inBufferLength,
  uint8_t *inHead
)

WeaveCircularTLVBuffer कंस्ट्रक्टर.

जानकारी
पैरामीटर
[in] inBuffer
सूची के पीछे वाले स्टोर के लिए पॉइंटर
[in] inBufferLength
बैकिंग स्टोर की लंबाई, बाइट में
[in] inHead
सिर के लिए शुरुआती बिंदु. inhead पॉइंटर को सर्कुलर बफ़र के लिए बैकिंग स्टोर में होना चाहिए, जैसे कि inBuffer और &(inBuffer[inBufferLength])

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

FinalsBufferFunct

WEAVE_ERROR FinalizeBufferFunct(
  TLVWriter & ioWriter,
  uintptr_t inBufHandle,
  uint8_t *inBufStart,
  uint32_t inBufLen
)

WeaveCircularTLVBuffer::finalifyBuffer के लिए एक ट्रैंपोलीन.

जानकारी
पैरामीटर
[in,out] ioWriter
इस फ़ंक्शन को कॉल करने वाला TLVWriter
[in,out] inBufHandle
CircularTLVWriter ऑब्जेक्ट का हैंडल
[in] inBufStart
डेटा की शुरुआत का संकेत (TLVWriter के हिसाब से)
[in] inBufLen
inbufStart के बारे में बताए गए बफ़र में मौजूद डेटा की लंबाई
सामान लौटाने की वैल्यू
WEAVE_NO_ERROR
बिना किसी शर्त के.

NewBufferFunct पाएं

WEAVE_ERROR GetNewBufferFunct(
  TLVWriter & ioWriter,
  uintptr_t & inBufHandle,
  uint8_t *& outBufStart,
  uint32_t & outBufLen
)

TLVWriter के लिए ज़्यादा जगह पाने के लिए, एक ट्रैंपोलीन.

जानकारी
पैरामीटर
[in,out] ioWriter
इस फ़ंक्शन को कॉल करने वाला TLVWriter
[in,out] inBufHandle
CircularTLVWriter ऑब्जेक्ट का हैंडल
[out] outBufStart
नए बफ़र के लिए पॉइंटर
[out] outBufLen
लिखे जाने के लिए उपलब्ध लंबाई
सामान लौटाने की वैल्यू
WEAVE_NO_ERROR
सफलता पर.
other
अगर फ़ंक्शन एक पूरे टॉप-लेवल टीएलवी एलिमेंट को नहीं हटा पाया.

GetNextBufferFunct

WEAVE_ERROR GetNextBufferFunct(
  TLVReader & ioReader,
  uintptr_t & inBufHandle,
  const uint8_t *& outBufStart,
  uint32_t & outBufLen
)

WeaveCircularTLVBuffer::GetNextBuffer के लिए ट्रैंपोलीन.

जानकारी
पैरामीटर
[in,out] ioReader
इस फ़ंक्शन को कॉल करने वाला TLVReader
[in,out] inBufHandle
CircularTLVWriter ऑब्जेक्ट का हैंडल
[in,out] outBufStart
डेटा बफ़र का रेफ़रंस. लौटाए जाने पर, यह इस बफ़र की वैल्यू पर सेट होता है.
[out] outBufLen
लौटाने पर, लगातार बाइट की संख्या को सेट करें, जिसे बफ़र से पढ़ा जा सकता है.
सामान लौटाने की वैल्यू
WEAVE_NO_ERROR
बिना किसी शर्त के पूरा हो जाता है.