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_(* ฟังก์ชันที่ถูกเรียกใช้ให้ประมวลผลองค์ประกอบ 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 เอาองค์ประกอบออกภายใต้การพิจารณา
หมายเหตุ: การเรียกกลับนี้อาจใช้เพื่อบังคับให้ 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 เพื่อประมวลผลองค์ประกอบก่อนที่จะนำออก หาก Callback ส่งคืนผลลัพธ์ใดๆ ยกเว้น 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
รายละเอียด | |||||||||
---|---|---|---|---|---|---|---|---|---|
พารามิเตอร์ |
|
||||||||
ผลลัพธ์ |
|