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 להסיר את הרכיב. האפשרות הזו יכולה להיות שימושית במספר נסיבות, כשרוצים שיהיה מאגר נתונים עגול בסיסי, אבל לא לעקוף רכיבים כלשהם בתוכו.
פרטים | |||||||
---|---|---|---|---|---|---|---|
פרמטרים |
|
||||||
מוחזר ערכים |
|
מאפיינים ציבוריים
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 הבסיסי נשאר ללא שינוי.
פרטים | |||||
---|---|---|---|---|---|
מוחזר ערכים |
|
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 )
constructor של WeaveCircularTLVBuffer.
פרטים | |||||
---|---|---|---|---|---|
פרמטרים |
|
WeaveCircularTLVBuffer
WeaveCircularTLVBuffer( uint8_t *inBuffer, size_t inBufferLength, uint8_t *inHead )
constructor של 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.
פרטים | |||||||||
---|---|---|---|---|---|---|---|---|---|
פרמטרים |
|
||||||||
מוחזר ערכים |
|