nl:: Weave:: TLV:: WeaveCircularTLVBuffer
#include <src/lib/core/WeaveCircularTLVBuffer.h>
WeaveCircularTLVBuffer menyediakan penyimpanan sirkular untuk nl::Weave::TLV::TLVWriter dan nl::Weave::TLVTLVReader.
Ringkasan
nl::Weave::TLV::TLVWriter dapat menulis entri TLV dalam jumlah tak terbatas ke WeaveCircularTLVBuffer selama setiap entri TLV individual sepenuhnya sesuai dengan penyimpanan yang disediakan. nl::Weave::TLV::TLVReader akan membaca maksimal ukuran buffer, tetapi akan mengakomodasi lapisan dalam buffer.
Konstruktor dan Destruktor |
|
---|---|
WeaveCircularTLVBuffer(uint8_t *inBuffer, size_t inBufferLength)
|
|
WeaveCircularTLVBuffer(uint8_t *inBuffer, size_t inBufferLength, uint8_t *inHead)
|
Jenis publik |
|
---|---|
ProcessEvictedElementFunct)(WeaveCircularTLVBuffer &inBuffer, void *inAppData, TLVReader &inReader)
|
WEAVE_ERROR(* Fungsi yang dipanggil untuk memproses elemen TLV sebelum dikeluarkan dari nl::Weave::TLV::WeaveCircularTLVBuffer. |
Atribut publik |
|
---|---|
mAppData
|
void *
Konteks opsional yang disediakan pengguna untuk digunakan dengan callback yang memproses elemen yang dikeluarkan.
|
mImplicitProfileId
|
uint32_t
|
mProcessEvictedElement
|
Callback opsional yang disediakan pengguna yang memproses elemen sebelum mengeluarkannya dari buffer sirkular.
|
Fungsi publik |
|
---|---|
AvailableDataLength(void) const
|
size_t
|
DataLength(void) const
|
size_t
|
EvictHead(void)
|
Mengeluarkan elemen TLV tingkat teratas terlama di WeaveCircularTLVBuffer.
|
FinalizeBuffer(TLVWriter & ioWriter, uint8_t *inBufStart, uint32_t inBufLen)
|
FinalizeBuffer menyesuaikan status
WeaveCircularTLVBuffer setelah output dari TLVWriter selesai. |
GetNewBuffer(TLVWriter & ioWriter, uint8_t *& outBufStart, uint32_t & outBufLen)
|
Dapatkan ruang tambahan untuk TLVWriter.
|
GetNextBuffer(TLVReader & ioReader, const uint8_t *& outBufStart, uint32_t & outBufLen)
|
Dapatkan ruang tambahan untuk 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
|
Fungsi statis publik |
|
---|---|
FinalizeBufferFunct(TLVWriter & ioWriter, uintptr_t inBufHandle, uint8_t *inBufStart, uint32_t inBufLen)
|
Trampolin ke WeaveCircularTLVBuffer::FinalizeBuffer.
|
GetNewBufferFunct(TLVWriter & ioWriter, uintptr_t & inBufHandle, uint8_t *& outBufStart, uint32_t & outBufLen)
|
Trampolin untuk mengambil lebih banyak ruang bagi TLVWriter.
|
GetNextBufferFunct(TLVReader & ioReader, uintptr_t & inBufHandle, const uint8_t *& outBufStart, uint32_t & outBufLen)
|
Trampolin ke WeaveCircularTLVBuffer::GetNextBuffer.
|
Jenis publik
ProcessEvictedElementFunct
WEAVE_ERROR(* ProcessEvictedElementFunct)(WeaveCircularTLVBuffer &inBuffer, void *inAppData, TLVReader &inReader)
Fungsi yang dipanggil untuk memproses elemen TLV sebelum dikeluarkan dari nl::Weave::TLV::WeaveCircularTLVBuffer.
Fungsi jenis ini digunakan untuk memproses elemen TLV yang akan dikeluarkan dari buffer. Fungsi tersebut akan diberi nl::Weave::TLV::TLVReader yang diposisikan pada elemen yang akan dihapus, serta konteks void * tempat pengguna mungkin telah menyediakan lingkungan tambahan untuk callback. Jika berhasil memproses elemen, fungsi harus menampilkan WEAVE_NO_ERROR; hal ini menandakan WeaveCircularTLVBuffer bahwa elemen dapat dihapus dengan aman. Nilai yang ditampilkan lainnya diperlakukan sebagai error dan akan mencegah WeaveCircularTLVBuffer mengeluarkan elemen yang dipertimbangkan.
Catatan: Callback ini dapat digunakan untuk memaksa WeaveCircularTLVBuffer agar tidak mengeluarkan elemen. Ini mungkin berguna dalam beberapa keadaan, jika diinginkan untuk memiliki buffer sirkular yang mendasarinya, tetapi tidak untuk mengganti elemen apa pun di dalamnya.
Detail | |||||||
---|---|---|---|---|---|---|---|
Parameter |
|
||||||
Nilai yang Ditampilkan |
|
Atribut publik
mAppData
void * mAppData
Konteks opsional yang disediakan pengguna untuk digunakan dengan callback yang memproses elemen yang dikeluarkan.
mImplicitProfileId
uint32_t mImplicitProfileId
mProcessEvictedElement
ProcessEvictedElementFunct mProcessEvictedElement
Callback opsional yang disediakan pengguna yang memproses elemen sebelum mengeluarkannya dari buffer sirkular.
Lihat definisi jenis ProcessEvictedElementFunct tentang informasi tambahan tentang cara menerapkan fungsi mProcessEvictedElement.
Fungsi publik
AvailableDataLength
size_t AvailableDataLength( void ) const
DataLength
size_t DataLength( void ) const
EvictHead
WEAVE_ERROR EvictHead( void )
Mengeluarkan elemen TLV tingkat teratas terlama di WeaveCircularTLVBuffer.
Fungsi ini menghapus elemen TLV tingkat atas yang terlama dalam buffer. Fungsi ini akan memanggil callback yang terdaftar di mProcessEvictedElement untuk memproses elemen sebelum penghapusan. Jika callback menampilkan apa pun selain WEAVE_NO_ERROR, elemen tersebut tidak akan dihapus. Demikian pula, jika terjadi error lain, tidak ada elemen dalam buffer, dan lainnya, WeaveCircularTLVBuffer yang mendasarinya tidak akan berubah.
Detail | |||||
---|---|---|---|---|---|
Nilai yang Ditampilkan |
|
FinalizeBuffer
WEAVE_ERROR FinalizeBuffer( TLVWriter & ioWriter, uint8_t *inBufStart, uint32_t inBufLen )
FinalizeBuffer menyesuaikan status WeaveCircularTLVBuffer
setelah output dari TLVWriter selesai.
Fungsi ini memengaruhi posisi ujung antrean.
Detail | |||||||
---|---|---|---|---|---|---|---|
Parameter |
|
||||||
Nilai yang Ditampilkan |
|
GetNewBuffer
WEAVE_ERROR GetNewBuffer( TLVWriter & ioWriter, uint8_t *& outBufStart, uint32_t & outBufLen )
Dapatkan ruang tambahan untuk TLVWriter.
Dalam kenyataannya, fungsi mengeluarkan elemen dari buffer sirkular, dan menyesuaikan kepala antrean buffer ini
Detail | |||||||
---|---|---|---|---|---|---|---|
Parameter |
|
||||||
Nilai yang Ditampilkan |
|
GetNextBuffer
WEAVE_ERROR GetNextBuffer( TLVReader & ioReader, const uint8_t *& outBufStart, uint32_t & outBufLen )
Dapatkan ruang tambahan untuk TLVReader.
Penyimpanan yang disediakan oleh WeaveCircularTLVBuffer mungkin berada di dalam buffer. Fungsi ini memberi kita kemampuan untuk mencocokkan buffering buffer sirkular dengan batasan TLVReader. Pembaca akan membaca maksimal mQueueSize
byte dari buffer.
Detail | |||||||
---|---|---|---|---|---|---|---|
Parameter |
|
||||||
Nilai yang Ditampilkan |
|
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 )
Detail | |||||
---|---|---|---|---|---|
Parameter |
|
WeaveCircularTLVBuffer
WeaveCircularTLVBuffer( uint8_t *inBuffer, size_t inBufferLength, uint8_t *inHead )
Detail | |||||||
---|---|---|---|---|---|---|---|
Parameter |
|
Fungsi statis publik
FinalizeBufferFunct
WEAVE_ERROR FinalizeBufferFunct( TLVWriter & ioWriter, uintptr_t inBufHandle, uint8_t *inBufStart, uint32_t inBufLen )
Trampolin ke WeaveCircularTLVBuffer::FinalizeBuffer.
Detail | |||||||||
---|---|---|---|---|---|---|---|---|---|
Parameter |
|
||||||||
Nilai yang Ditampilkan |
|
GetNewBufferFunct
WEAVE_ERROR GetNewBufferFunct( TLVWriter & ioWriter, uintptr_t & inBufHandle, uint8_t *& outBufStart, uint32_t & outBufLen )
Trampolin untuk mengambil lebih banyak ruang bagi TLVWriter.
Detail | |||||||||
---|---|---|---|---|---|---|---|---|---|
Parameter |
|
||||||||
Nilai yang Ditampilkan |
|
GetNextBufferFunct
WEAVE_ERROR GetNextBufferFunct( TLVReader & ioReader, uintptr_t & inBufHandle, const uint8_t *& outBufStart, uint32_t & outBufLen )
Trampolin ke WeaveCircularTLVBuffer::GetNextBuffer.
Detail | |||||||||
---|---|---|---|---|---|---|---|---|---|
Parameter |
|
||||||||
Nilai yang Ditampilkan |
|