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 *
הקשר אופציונלי שהמשתמשים סיפקו, שישמש לצורך עיבוד הקריאה החוזרת (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)
|
טרמפולינה ל-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 לא להוציא את הרכיב. הפעולה הזו יכולה להיות שימושית בכמה נסיבות שבהן רוצים להשתמש במאגר זמני עגול, אבל לא כדי לשנות רכיבים כלשהם שבתוכו.
פרטים | |||||||
---|---|---|---|---|---|---|---|
פרמטרים |
|
||||||
ערכים מוחזרים |
|
מאפיינים ציבוריים
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 יישאר ללא שינוי.
פרטים | |||||
---|---|---|---|---|---|
ערכים מוחזרים |
|
FinalizeBuffer
WEAVE_ERROR FinalizeBuffer( TLVWriter & ioWriter, uint8_t *inBufStart, uint32_t inBufLen )
FinalizeBuffer משנה את המצב WeaveCircularTLVBuffer
לאחר הפלט מה-TLVWriter.
הפונקציה הזו משפיעה על המיקום של זנב התור.
פרטים | |||||||
---|---|---|---|---|---|---|---|
פרמטרים |
|
||||||
ערכים מוחזרים |
|
GetNewBuffer
WEAVE_ERROR GetNewBuffer( TLVWriter & ioWriter, uint8_t *& outBufStart, uint32_t & outBufLen )
ניתן לקבל שטח נוסף עבור ה-TLVWriter.
בפועל, הפונקציה מוציאה רכיב מהמאגר העגול ומתאימה את הראש של תור מאגר הנתונים הזמני.
פרטים | |||||||
---|---|---|---|---|---|---|---|
פרמטרים |
|
||||||
ערכים מוחזרים |
|
GetNextBuffer
WEAVE_ERROR GetNextBuffer( TLVReader & ioReader, const uint8_t *& outBufStart, uint32_t & outBufLen )
הגדלת נפח האחסון ל-TLVReader.
יכול להיות שנפח האחסון שמסופק על ידי WeaveCircularTLVBuffer נמצא בתוך המאגר. הפונקציה הזו מאפשרת לנו להתאים בין האחסון הזמני של המאגר העגול לבין המגבלות של TLVReader. הקורא יקרא עד mQueueSize
בייטים מהמאגר.
פרטים | |||||||
---|---|---|---|---|---|---|---|
פרמטרים |
|
||||||
ערכים מוחזרים |
|
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.
פרטים | |||||
---|---|---|---|---|---|
פרמטרים |
|
WeaveCircularTLVBuffer
WeaveCircularTLVBuffer( uint8_t *inBuffer, size_t inBufferLength, uint8_t *inHead )
בנאי WeaveCircularTLVBuffer.
פרטים | |||||||
---|---|---|---|---|---|---|---|
פרמטרים |
|
פונקציות סטטיות ציבוריות
FinalizeBufferFunct
WEAVE_ERROR FinalizeBufferFunct( TLVWriter & ioWriter, uintptr_t inBufHandle, uint8_t *inBufStart, uint32_t inBufLen )
טרמפולינה ל-WeaveCircularTLVBuffer::FinalizeBuffer.
פרטים | |||||||||
---|---|---|---|---|---|---|---|---|---|
פרמטרים |
|
||||||||
ערכים מוחזרים |
|
GetNewBufferFunct
WEAVE_ERROR GetNewBufferFunct( TLVWriter & ioWriter, uintptr_t & inBufHandle, uint8_t *& outBufStart, uint32_t & outBufLen )
טרמפולינה למשיכת מקום נוסף עבור ה-TLVWriter.
פרטים | |||||||||
---|---|---|---|---|---|---|---|---|---|
פרמטרים |
|
||||||||
ערכים מוחזרים |
|
GetNextBufferFunct
WEAVE_ERROR GetNextBufferFunct( TLVReader & ioReader, uintptr_t & inBufHandle, const uint8_t *& outBufStart, uint32_t & outBufLen )
טרמפולינה אל WeaveCircularTLVBuffer::GetNextBuffer.
פרטים | |||||||||
---|---|---|---|---|---|---|---|---|---|
פרמטרים |
|
||||||||
ערכים מוחזרים |
|