nl:: Weave:: TLV:: WeaveCirularTLVBuffer
#include <src/lib/core/WeaveCircularTLVBuffer.h>
توفّر WeaveCirularTLVBuffer مساحة تخزين دائرية لـ nl::Weave::TLV::TLVwriter وnl::Weave::TLVTLVReader.
ملخّص
nl::Weave::TLV::TLVwriter قادر على كتابة عدد غير محدود من إدخالات TLV في WaveCirmaticTLVBuffer ما دام كل إدخال 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::WeaveCiricalTLVBuffer. |
السمات العلنية |
|
---|---|
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)
|
الحصول على مساحة إضافية لـ TLVكتابة.
|
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)
|
الترامبولين إلى WeaCCiricalTLVBuffer::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::WeaveCiricalTLVBuffer.
تُستخدم الدوال من هذا النوع لمعالجة عنصر TLV على وشك التخلص من المخزن المؤقت. سيتم منح الدالة nl::Weave::TLV::TLVReader مع وضع العنصر الذي على وشك حذفه، بالإضافة إلى سياق * غير فارغ حيث قد يُوفِّر المستخدم بيئة إضافية لمعاودة الاتصال. إذا تمت معالجة العنصر بنجاح، يجب أن تعرض الدالة WEAVE_NO_ERROR؛ وهذا يشير إلى WeaveCirularTLVBuffer أنّه قد تم إخراج العنصر بشكل آمن. يتم التعامل مع أي قيمة عرض أخرى كخطأ وتمنع WeaveCirularTLVBuffer من التخلص من العنصر قيد النظر.
ملاحظة: قد يتم استخدام معاودة الاتصال هذه لفرض WeaveCiricalTLVBuffer على عدم إخراج العنصر. وقد يكون هذا مفيدًا في عدد من الظروف، عندما يكون من المستحسن أن يكون هناك مخزن مؤقت دائري أساسي، ولكن ليس لإلغاء أي عناصر داخله.
التفاصيل | |||||||
---|---|---|---|---|---|---|---|
المَعلمات |
|
||||||
قيم الإرجاع |
|
السمات العلنية
mAppData
void * mAppData
سياق اختياري مُقدَّم من المستخدم يُستخدم مع عملية معاودة الاتصال لمعالجة العنصر الذي تم إخراجه.
mimplicitProfileId
uint32_t mImplicitProfileId
عنصر mProcessEvictedElement
ProcessEvictedElementFunct mProcessEvictedElement
رد اتصال اختياري يرسله المستخدم ويعالج العنصر قبل إخراجه من المخزن المؤقت الدائري.
يُرجى الاطّلاع على تعريف النوع ProcessEvicatedElementFunct على معلومات إضافية عن تنفيذ دالة mProcessEvictedElement.
الوظائف العامة
طول البيانات المتاحة
size_t AvailableDataLength( void ) const
طول البيانات
size_t DataLength( void ) const
رأس الشر
WEAVE_ERROR EvictHead( void )
يؤدي ذلك إلى استبعاد أقدم عنصر TLV ذي المستوى الأعلى في WeaveCircularTLVBuffer.
تزيل هذه الدالة أقدم عنصر TLV للمستوى الأعلى في المخزن المؤقت. ستطلب الدالة معاودة الاتصال المسجّلة في mProcessEvictedElement لمعالجة العنصر قبل الإزالة. إذا كانت معاودة الاتصال تعرض أي شيء باستثناء WEAVE_NO_ERROR، لن تتم إزالة العنصر. بالمثل، إذا لم يحدث أي خطأ آخر في العناصر غير المخزَّنة مؤقتًا، لن يتغيّر WeaveCirularTLVBuffer الأساسي.
التفاصيل | |||||
---|---|---|---|---|---|
قيم الإرجاع |
|
في الختام
WEAVE_ERROR FinalizeBuffer( TLVWriter & ioWriter, uint8_t *inBufStart, uint32_t inBufLen )
في FinalizeBuffer، يتم تعديل الحالة WeaveCircularTLVBuffer
عند اكتمال الناتج من TLVwriter.
تؤثر هذه الدالة على موضع ذيل قائمة الانتظار.
التفاصيل | |||||||
---|---|---|---|---|---|---|---|
المَعلمات |
|
||||||
قيم الإرجاع |
|
الحصول على NewBuffer
WEAVE_ERROR GetNewBuffer( TLVWriter & ioWriter, uint8_t *& outBufStart, uint32_t & outBufLen )
الحصول على مساحة إضافية لـ TLVكتابة.
في الواقع، تخرج الدالة عنصرًا من المخزن المؤقت الدائري، وتضبط رأس قائمة انتظار المخزن المؤقت هذه
التفاصيل | |||||||
---|---|---|---|---|---|---|---|
المَعلمات |
|
||||||
قيم الإرجاع |
|
GetNextBuffer
WEAVE_ERROR GetNextBuffer( TLVReader & ioReader, const uint8_t *& outBufStart, uint32_t & outBufLen )
يمكنك الحصول على مساحة إضافية لجهاز TLVReader.
قد يتم تخزين مساحة التخزين التي تفرضها WeaveCircularTLVBuffer داخل المخزن المؤقت. توفّر لنا هذه الدالة إمكانية مطابقة التخزين المؤقت بين المخزن المؤقت الدائري وقيود TLVReader. سيقرأ القارئ mQueueSize
بايت كحد أقصى من المخزن المؤقت.
التفاصيل | |||||||
---|---|---|---|---|---|---|---|
المَعلمات |
|
||||||
قيم الإرجاع |
|
قائمة المحتوى التالي
uint8_t * GetQueue( void ) const
GetQueueSize
size_t GetQueueSize( void ) const
قائمة الانتظار
uint8_t * QueueHead( void ) const
قائمة المحتوى التالي
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.
التفاصيل | |||||||
---|---|---|---|---|---|---|---|
المَعلمات |
|
الدوال الثابتة العامة
في النهايةBufferFunct
WEAVE_ERROR FinalizeBufferFunct( TLVWriter & ioWriter, uintptr_t inBufHandle, uint8_t *inBufStart, uint32_t inBufLen )
الترامبولين إلى WeaCCiricalTLVBuffer::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.
التفاصيل | |||||||||
---|---|---|---|---|---|---|---|---|---|
المَعلمات |
|
||||||||
قيم الإرجاع |
|