nl:: Weave:: TLV:: WeaveCircularTLVBuffer
#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 حجم المخزن المؤقت على الأكثر، ولكن ستتم استيعابها في المخزن المؤقت.
الدلالة والهياكل |
|
---|---|
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)
|
لإلغاء أقدم عنصر 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
|
الأنواع العلنية
ProcessEvictedElementFunct
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. قد يكون هذا مفيدًا في عدد من الظروف، عندما يكون من المطلوب وجود مورد احتياطي دائري أساسي، ولكن ليس تجاوز أي عناصر بداخله.
التفاصيل | |||||||
---|---|---|---|---|---|---|---|
المَعلمات |
|
||||||
قيم الإرجاع |
|
السمات العامة
mAppData
void * mAppData
سياق اختياري يوفّره المستخدم لاستخدامه مع معالجة معاودة الاتصال للعنصر الذي تم استبعاده
mImplicitProfileId
uint32_t mImplicitProfileId
mProcessEvictedElement
ProcessEvictedElementFunct mProcessEvictedElement
استدعاء اختياري يقدمه المستخدم يعالج العنصر قبل التخلص منه من المخزن المؤقت الدائري.
يُرجى الاطّلاع على تعريف النوع ProcessEvictedElementFunct للحصول على معلومات إضافية حول تنفيذ الدالة mProcessEvictedElement.
الدوال العامة
AvailableDataLength
size_t AvailableDataLength( void ) const
DataLength
size_t DataLength( void ) const
EvictHead
WEAVE_ERROR EvictHead( void )
لإلغاء أقدم عنصر TLV من المستوى الأعلى في WeaveCircularTLVBuffer.
تزيل هذه الدالة أقدم عنصر TLV من المستوى الأعلى من المخزن المؤقت. ستستدعي الدالة معاودة الاتصال المسجَّلة في mProcessEvictedElement لمعالجة العنصر قبل الإزالة. إذا عرضت معاودة الاتصال أي خطأ باستثناء WEAVE_NO_ERROR، لن تتم إزالة العنصر. وبالمثل، في حال حدوث أي خطأ آخر، لم يتم رصد أي عناصر داخل المخزن المؤقت وما إلى ذلك، لن يتم تغيير WeaveCircularTLVBuffer الأساسي.
التفاصيل | |||||
---|---|---|---|---|---|
قيم الإرجاع |
|
FinalizeBuffer
WEAVE_ERROR FinalizeBuffer( TLVWriter & ioWriter, uint8_t *inBufStart, uint32_t inBufLen )
استخدِم ميزة FinalizeBuffer لضبط حالة WeaveCircularTLVBuffer
عند اكتمال إخراج من TLVWriter.
تؤثر هذه الدالة في موضع ذيل قائمة الانتظار.
التفاصيل | |||||||
---|---|---|---|---|---|---|---|
المَعلمات |
|
||||||
قيم الإرجاع |
|
GetNewBuffer
WEAVE_ERROR GetNewBuffer( TLVWriter & ioWriter, uint8_t *& outBufStart, uint32_t & outBufLen )
يمكنك الحصول على مساحة إضافية لـ TLVWriter.
في الواقع، تقوم الدالة بإخراج عنصر من المخزن المؤقت الدائري، وتضبط رأس قائمة انتظار المخزن المؤقت هذه
التفاصيل | |||||||
---|---|---|---|---|---|---|---|
المَعلمات |
|
||||||
قيم الإرجاع |
|
GetNextBuffer
WEAVE_ERROR GetNextBuffer( TLVReader & ioReader, const uint8_t *& outBufStart, uint32_t & outBufLen )
يمكنك الحصول على مساحة إضافية لـ TLVReader.
قد يتم إغلاق مساحة التخزين التي يوفرها WeaveCircularTLVBuffer ضمن المخزن المؤقت. تتيح لنا هذه الدالة مطابقة التخزين المؤقت للمخزن المؤقت الدائري بقيود TLVReader. سيقرأ القارئ mQueueSize
بايت كحد أقصى من المخزن المؤقت.
التفاصيل | |||||||
---|---|---|---|---|---|---|---|
المَعلمات |
|
||||||
قيم الإرجاع |
|
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.
التفاصيل | |||||
---|---|---|---|---|---|
المَعلمات |
|
WeaveCircularTLVBuffer
WeaveCircularTLVBuffer( uint8_t *inBuffer, size_t inBufferLength, uint8_t *inHead )
الدالة WeaveCircularTLVBuffer.
التفاصيل | |||||||
---|---|---|---|---|---|---|---|
المَعلمات |
|
الدوال الثابتة العامة
FinalizeBufferFunct
WEAVE_ERROR FinalizeBufferFunct( TLVWriter & ioWriter, uintptr_t inBufHandle, uint8_t *inBufStart, uint32_t inBufLen )
ترامبولين إلى WeaveCircularTLVBuffer::FinalizeBuffer
التفاصيل | |||||||||
---|---|---|---|---|---|---|---|---|---|
المَعلمات |
|
||||||||
قيم الإرجاع |
|
GetNewBufferFunct
WEAVE_ERROR GetNewBufferFunct( TLVWriter & ioWriter, uintptr_t & inBufHandle, uint8_t *& outBufStart, uint32_t & outBufLen )
ترامبولين لجلب مساحة أكبر لـ TLVWriter:
التفاصيل | |||||||||
---|---|---|---|---|---|---|---|---|---|
المَعلمات |
|
||||||||
قيم الإرجاع |
|
GetNextBufferFunct
WEAVE_ERROR GetNextBufferFunct( TLVReader & ioReader, uintptr_t & inBufHandle, const uint8_t *& outBufStart, uint32_t & outBufLen )
ترامبولين إلى WeaveCircularTLVBuffer::GetNextBuffer
التفاصيل | |||||||||
---|---|---|---|---|---|---|---|---|---|
المَعلمات |
|
||||||||
قيم الإرجاع |
|