nl:: بافت:: 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 

طول داده

size_t DataLength(
  void
) const 

اخراج سر

WEAVE_ERROR EvictHead(
  void
)

قدیمی ترین عنصر TLV سطح بالا را در WeaveCircularTLVBuffer خارج می کند.

این تابع قدیمی ترین عنصر TLV سطح بالا را در بافر حذف می کند. تابع فراخوانی ثبت شده در mProcessEvictedElement را برای پردازش عنصر قبل از حذف فراخوانی می کند. اگر پاسخ تماس چیزی جز WEAVE_NO_ERROR را برگرداند، عنصر حذف نمی‌شود. به طور مشابه، اگر خطای دیگری رخ دهد، هیچ عنصری در بافر، و غیره رخ ندهد، WeaveCircularTLVBuffer اساسی بدون تغییر باقی می‌ماند.

جزئیات
ارزش های بازگشتی
WEAVE_NO_ERROR
در مورد موفقیت
other
در مورد هر خطای دیگری که توسط پاسخ تماس یا TLVReader برگردانده می شود.

Finalize Buffer

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 

سر صف

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 [ 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
بدون قید و شرط موفق می شود.