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 على عدم إخراج العنصر. وقد يكون هذا مفيدًا في عدد من الظروف، عندما يكون من المستحسن أن يكون هناك مخزن مؤقت دائري أساسي، ولكن ليس لإلغاء أي عناصر داخله.

التفاصيل
المَعلمات
[in] inBuffer
إشارة إلى المخزن المؤقت الذي حدثت فيه عملية الإخلاء
[in] inAppData
مؤشر إلى البنية المقدّمة من المستخدم التي تحتوي على سياق إضافي لمعاودة الاتصال هذه
[in] inReader
TLVReader تم وضعه على العنصر المراد التخلص منه.
قيم الإرجاع
WEAVE_NO_ERROR
تم الإجراء بنجاح. سيتم التخلص من هذا العنصر.
other
حدث خطأ أثناء معالجة الحدث. يظل العنصر في المخزن المؤقت. ستتعذّر دالة الكتابة التي أدت إلى إزالة هذا العنصر.

السمات العلنية

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_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
بدون شروط.

الحصول على NewBuffer

WEAVE_ERROR GetNewBuffer(
  TLVWriter & ioWriter,
  uint8_t *& outBufStart,
  uint32_t & outBufLen
)

الحصول على مساحة إضافية لـ TLVكتابة.

في الواقع، تخرج الدالة عنصرًا من المخزن المؤقت الدائري، وتضبط رأس قائمة انتظار المخزن المؤقت هذه

التفاصيل
المَعلمات
[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
يتم تحقيق النجاح بدون شروط.

قائمة المحتوى التالي

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.

التفاصيل
المَعلمات
[in] inBuffer
مؤشر إلى المتجر الاحتياطي لقائمة الانتظار
[in] inBufferLength
طول التخزين المؤقت بالبايت

WeaveCircularTLVBuffer

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

الشركة المصنِّعة WeaveCircularTLVBuffer.

التفاصيل
المَعلمات
[in] inBuffer
مؤشر إلى المتجر الاحتياطي لقائمة الانتظار
[in] inBufferLength
طول التخزين المؤقت بالبايت
[in] inHead
النقطة الأولية للرأس. يجب أن يكون المؤشر inHeader داخل المتجر الاحتياطي للتخزين المؤقت الدائري، أي داخل inBuffer و &(inBuffer[inBufferLength])

الدوال الثابتة العامة

في النهايةBufferFunct

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

الترامبولين إلى WeaCCiricalTLVBuffer::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
يتم تحقيق النجاح بدون شروط.