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(uint8_t *inBuffer, size_t inBufferLength, uint8_t *inHead)

סוגים ציבוריים

ProcessEvictedElementFunct)(WeaveCircularTLVBuffer &inBuffer, void *inAppData, TLVReader &inReader) WEAVE_ERROR(*
פונקציה שנקראת לעיבוד של רכיב TLV לפני ההוצאה שלו מה-nl::Weave::TLV::WeaveCircularTLVBuffer.

מאפיינים ציבוריים

mAppData
void *
הקשר אופציונלי שהמשתמשים סיפקו, שישמש לצורך עיבוד הקריאה החוזרת (callback) של הרכיב שהוסר.
mImplicitProfileId
uint32_t
mProcessEvictedElement
קריאה חוזרת (callback) אופציונלית באספקת המשתמשים, שמעבדת את הרכיב לפני הסרתו מהמאגר המעגלי.

תפקידים ציבוריים

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)
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 בתוך האלמנט שעומד להימחק, וכן הקשר ריק * שבו ייתכן שהמשתמש סיפק סביבה נוספת לקריאה החוזרת (callback). אם הפונקציה עיבדה את הרכיב בהצלחה, היא חייבת להחזיר WEAVE_NO_ERROR. המשמעות היא ש-WeaveCircularTLVBuffer שניתן להוציא את הרכיב בבטחה. כל ערך מוחזר אחר מטופל כשגיאה, וימנע מה-WeaveCircularTLVBuffer להסיר את הרכיב שנמצא בבדיקה.

הערה: אפשר להשתמש בקריאה החוזרת (callback) כדי לאלץ את WeaveCircularTLVBuffer לא להוציא את הרכיב. הפעולה הזו יכולה להיות שימושית בכמה נסיבות שבהן רוצים להשתמש במאגר זמני עגול, אבל לא כדי לשנות רכיבים כלשהם שבתוכו.

פרטים
פרמטרים
[in] inBuffer
הפניה למאגר הנתונים הזמני שממנו מתבצע הסילוק
[in] inAppData
הפניה למבנה שסופק על ידי המשתמש, ומכיל הקשר נוסף של הקריאה החוזרת (callback) הזו
[in] inReader
TLVReader שממוקם ברכיב שרוצים להוציא.
ערכים מוחזרים
WEAVE_NO_ERROR
בהצלחה. הרכיב יוסר.
other
אירעה שגיאה במהלך עיבוד האירוע. הרכיב נשאר במאגר הנתונים הזמני. פונקציית הכתיבה שהפעילה את הסרת הרכיב הזה תיכשל.

מאפיינים ציבוריים

mAppData

void * mAppData

הקשר אופציונלי שהמשתמשים סיפקו, שישמש לצורך עיבוד הקריאה החוזרת (callback) של הרכיב שהוסר.

mImplicitProfileId

uint32_t mImplicitProfileId

mProcessEvictedElement

ProcessEvictedElementFunct mProcessEvictedElement

קריאה חוזרת (callback) אופציונלית באספקת המשתמשים, שמעבדת את הרכיב לפני הסרתו מהמאגר המעגלי.

אפשר לעיין בהגדרה של סוג ProcessEvictedElementFunct למידע נוסף על הטמעת הפונקציה mProcessEvictedElement.

תפקידים ציבוריים

AvailableDataLength

size_t AvailableDataLength(
  void
) const 

DataLength

size_t DataLength(
  void
) const 

EvictHead

WEAVE_ERROR EvictHead(
  void
)

מתקן את רכיב TLV ברמה העליונה ביותר ב-WeaveCircularTLVBuffer.

הפונקציה הזו מסירה מהמאגר את רכיב TLV ברמה העליונה הישן ביותר. הפונקציה תקרא לקריאה חוזרת (callback) שרשומה ב-mProcessEvictedElement כדי לעבד את הרכיב לפני ההסרה. אם הקריאה החוזרת מחזירה משהו מלבד WEAVE_NO_ERROR, הרכיב לא יוסר. באופן דומה, אם תתרחש שגיאה אחרת לא יופיעו רכיבים בתוך המאגר, וכו', הערך של WeaveCircularTLVBuffer יישאר ללא שינוי.

פרטים
ערכים מוחזרים
WEAVE_NO_ERROR
בהצלחה.
other
כל שגיאה אחרת שהוחזרה על ידי הקריאה החוזרת (callback) או על ידי 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
הצלחה ללא תנאי.