nl::Weave::TLV::WeaveCircularTLVBuffer

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

WeaveCircularTLVBuffer चैनल, nl::Weave::TLV::TLVWriter और nl::Weave::TLVTLVReader डिवाइस के लिए सर्कुलर स्टोरेज देता है.

खास जानकारी

nl::Weave::TLV::TLVWriter चैनल के पास WeaveCircularTLVBuffer में, बिना सीमा के TLV एंट्री सेव करने की सुविधा होती है. ऐसा तब तक किया जा सकता है, जब तक हर 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)
TLVWriter से आउटपुट पूरा होने पर, FinalizeBuffer 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::फ़ाइनलाइज़Buffer के लिए एक ट्रैंपोलीन.
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 के लिए एक ट्रैंपोलिन.

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

ProcessEvictedElementFunct

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 फ़ंक्शन को लागू करने के बारे में ज़्यादा जानकारी के लिए, processEvictedElementFuct टाइप की परिभाषा देखें.

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

AvailableDataLength

size_t AvailableDataLength(
  void
) const 

DataLength

size_t DataLength(
  void
) const 

EvictHead

WEAVE_ERROR EvictHead(
  void
)

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

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

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

FinalizeBuffer

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

TLVWriter से आउटपुट पूरा होने पर, FinalizeBuffer 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
अगर फ़ंक्शन, टॉप लेवल का पूरा TLV एलिमेंट नहीं हटा सका.

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
बिना किसी शर्त के सफल होता है.

GetQueue

uint8_t * GetQueue(
  void
) const 

GetQueueSize

size_t GetQueueSize(
  void
) const 

QueueHead

uint8_t * QueueHead(
  void
) const 

QueueTail

uint8_t * QueueTail(
  void
) const 

SetQueueHead

void SetQueueHead(
  uint8_t *aQueueHead
)

SetQueueLength

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 पॉइंटर, सर्कुलर बफ़र के बैकिंग स्टोर में होना चाहिए. इसका मतलब है कि यह inHead और &(inHead[inHead]) के अंदर है

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

FinalizeBufferFunct

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

WeaveCircularTLVBuffer::फ़ाइनलाइज़Buffer के लिए एक ट्रैंपोलीन.

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

GetNewBufferFunct

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
अगर फ़ंक्शन, टॉप लेवल का पूरा TLV एलिमेंट नहीं हटा सका.

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
बिना किसी शर्त के सफल होता है.