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 में, सबसे पुराने टॉप-लेवल TLV एलिमेंट को हटा दिया जाता है.
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::FinalizeBuffer के लिए ट्रैंपोलिन.
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 फ़ंक्शन को लागू करने के बारे में ज़्यादा जानकारी के लिए, ProcessEvictedElementFunct टाइप की परिभाषा देखें.

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

AvailableDataLength

size_t AvailableDataLength(
  void
) const 

DataLength

size_t DataLength(
  void
) const 

EvictHead

WEAVE_ERROR EvictHead(
  void
)

WeaveCircularTLVBuffer में, सबसे पुराने टॉप-लेवल TLV एलिमेंट को हटा दिया जाता है.

यह फ़ंक्शन, बफ़र में सबसे पुराने टॉप लेवल 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::FinalizeBuffer के लिए ट्रैंपोलिन.

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