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

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

السمات العامة

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 الأساسي.

التفاصيل
قيم الإرجاع
WEAVE_NO_ERROR
عند النجاح
other
عند ظهور أي خطأ آخر يعرضه معاودة الاتصال أو من خلال TLVReader.

FinalizeBuffer

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

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 ضمن مخزن البيانات الداعمة للمخزن المؤقت الدائري، أي ضمن inBuffer و &(inBuffer[inBufferLength])

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

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