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)
constructor של WeaveCircularTLVBuffer.
WeaveCircularTLVBuffer(uint8_t *inBuffer, size_t inBufferLength, uint8_t *inHead)
constructor של WeaveCircularTLVBuffer.

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

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

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

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

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

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

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

mAppData

void * mAppData

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

mImplicitProfileId

uint32_t mImplicitProfileId

mProcessEvictedElement

ProcessEvictedElementFunct mProcessEvictedElement

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

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

פונקציות ציבוריות

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
)

constructor של WeaveCircularTLVBuffer.

פרטים
פרמטרים
[in] inBuffer
מצביע אל החנות לגיבוי לקבלת 'הבאים בתור'
[in] inBufferLength
האורך בבייטים של המחסן לגיבוי

WeaveCircularTLVBuffer

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

constructor של 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
מצליח ללא תנאי.