nl:: बुनें:: टीएलवी:: बुन सर्कुलर टीएलवी बफर

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

WeaveCircularTLVBuffer के लिए परिपत्र भंडारण प्रदान करता हैnl :: Weave :: TLV :: TLVWriter और nl :: Weave :: TLVTLVReader।

सारांश

nl :: Weave :: TLV :: TLVWriter का एक असीम संख्या लिखने में सक्षम है TLV के लिए प्रविष्टियां WeaveCircularTLVBuffer जब तक प्रत्येक व्यक्ति के रूप में TLV पूरी तरह से प्रदान की भंडारण के भीतर प्रवेश फिट।Nl :: Weave :: TLV :: TLVReader बफर के सबसे आकार में पढ़ा होगा, लेकिन बफर भीतर wraparound को समायोजित करेगा।

निर्माता और विनाशक De

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(*
एक समारोह एक कार्रवाई करने के लिए कहा जाता है कि TLV यह करने से पहले तत्व से बेदखल कर दिया जा रहा है nl :: Weave :: TLV :: WeaveCircularTLVBuffer

सार्वजनिक गुण

mAppData
void *
एक वैकल्पिक, उपयोगकर्ता द्वारा प्रदान किया गया संदर्भ जिसे कॉलबैक के साथ बेदखल किए गए तत्व को संसाधित करने के लिए उपयोग किया जाता है।
mImplicitProfileId
uint32_t
mProcessEvictedElement
एक वैकल्पिक, उपयोगकर्ता द्वारा प्रदत्त कॉलबैक जो तत्व को सर्कुलर बफर से बेदखल करने से पहले संसाधित करता है।

सार्वजनिक समारोह

AvailableDataLength (void) const
size_t
DataLength (void) const
size_t
EvictHead (void)
सबसे पुराना उच्च-स्तरीय evicts TLV में तत्व WeaveCircularTLVBuffer
FinalizeBuffer (TLVWriter & ioWriter, uint8_t *inBufStart, uint32_t inBufLen)
FinalizeBuffer समायोजित WeaveCircularTLVBuffer से उत्पादन के पूरा होने पर राज्यTLVWriter
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

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

प्रक्रिया बेदखलतत्वकार्य

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

एक समारोह एक कार्रवाई करने के लिए कहा जाता है कि TLV यह करने से पहले तत्व से बेदखल कर दिया जा रहा है nl :: Weave :: TLV :: WeaveCircularTLVBuffer

इस प्रकार के कार्य एक कार्रवाई करने के लिए उपयोग किया जाता है TLV के बारे में बफर से बेदखल कर दिया जा करने के लिए तत्व। समारोह दिया जाएगा एकnl :: Weave :: TLV :: TLVReader के बारे में हटाए जाने के लिए तत्व है, साथ ही शून्य * संदर्भ में, जहां उपयोगकर्ता कॉलबैक के लिए अतिरिक्त वातावरण प्रदान किया है पर तैनात। समारोह तत्व सफलतापूर्वक संसाधित है, यह लौटना चाहिए WEAVE_NO_ERROR ; को यह प्रतीक WeaveCircularTLVBuffer उस तत्व को सुरक्षित रूप से निकाला जा सकता है। किसी भी अन्य वापसी मान एक त्रुटि माना जाता है और नहीं कर पाएगा WeaveCircularTLVBuffer विचाराधीन तत्व हटाना उतना से।

नोट: यह कॉलबैक मजबूर करने के लिए इस्तेमाल किया जा सकता WeaveCircularTLVBuffer बेदखल नहीं तत्व है। यह कई परिस्थितियों में उपयोगी हो सकता है, जब एक अंतर्निहित सर्कुलर बफर होना वांछित होता है, लेकिन इसके भीतर किसी भी तत्व को ओवरराइड नहीं करना होता है।

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

सार्वजनिक गुण

एमएपीडेटा

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
)

सबसे पुराना उच्च-स्तरीय evicts TLV में तत्व WeaveCircularTLVBuffer

इस समारोह के सबसे पुराने शीर्ष स्तर को हटा TLV बफर में तत्व। समारोह में पंजीकृत कॉलबैक कॉल करेंगे mProcessEvictedElement तत्व हटाने से पहले कार्रवाई करने के लिए। कॉलबैक कुछ भी लेकिन देता है, तो WEAVE_NO_ERROR , तत्व नहीं हटाया जाता है। इसी तरह, किसी भी अन्य त्रुटि बफर के भीतर कोई तत्व होती है तो, आदि अंतर्निहित WeaveCircularTLVBuffer अपरिवर्तित रहता है।

विवरण
वापसी मूल्य
WEAVE_NO_ERROR
सफलता पर।
other
किसी भी अन्य त्रुटि पर कॉलबैक द्वारा या द्वारा या तो वापस आTLVReader

अंतिम रूप देंबफर

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

FinalizeBuffer समायोजित WeaveCircularTLVBuffer से उत्पादन के पूरा होने पर राज्यTLVWriter

यह फ़ंक्शन कतार की पूंछ की स्थिति को प्रभावित करता है।

विवरण
मापदंडों
[in,out] ioWriter
TLVWriter इस कार्यप्रणाली को कॉल
[in] inBufStart
डेटा के शुरू करने के सूचक (से TLVWriter परिप्रेक्ष्य)
[in] inBufLen
बफर में डेटा की लंबाई से की ओर इशारा किया inbufStart
वापसी मूल्य
WEAVE_NO_ERROR
बिना शर्त।

गेटन्यूबफर

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 तत्व।

गेटनेक्स्टबफर

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

के लिए अतिरिक्त जगह जाओTLVReader

द्वारा प्रदान की भंडारण WeaveCircularTLVBuffer बफर भीतर wraparound जा सकता है। यह समारोह हमारे लिए परिपत्र बफर के बफरिंग से मेल करने की क्षमता के साथ प्रदान करता है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(
  uint8_t *inBuffer,
  size_t inBufferLength
)

WeaveCircularTLVBuffer निर्माता।

विवरण
मापदंडों
[in] inBuffer
कतार के लिए बैकिंग स्टोर के लिए एक सूचक
[in] inBufferLength
बैकिंग स्टोर की लंबाई, बाइट्स में

बुन सर्कुलर टीएलवी बफर

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

WeaveCircularTLVBuffer निर्माता।

विवरण
मापदंडों
[in] inBuffer
कतार के लिए बैकिंग स्टोर के लिए एक सूचक
[in] inBufferLength
बैकिंग स्टोर की लंबाई, बाइट्स में
[in] inHead
सिर के लिए प्रारंभिक बिंदु। InHead सूचक परिपत्र बफर, यानी inBuffer और और भीतर के लिए समर्थन की दुकान में आते हैं चाहिए (inBuffer [inBufferLength])

सार्वजनिक स्थैतिक कार्य

अंतिम रूप देंबफ़रफ़ंक्शन

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
बिना शर्त।

गेटन्यूबफ़रफ़ंक्शन

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 तत्व।

गेटनेक्स्टबफ़रफ़ंक्शन

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