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
حدث خطأ أثناء معالجة الحدث. يبقى العنصر في المخزن المؤقت. ستفشل دالة write التي أدت إلى التخلص من هذا العنصر.

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

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
ينجح هذا الإجراء بدون شروط.