nl:: Weave:: TLV:: WeaveCircularTLVBuffer
#include <src/lib/core/WeaveCircularTLVBuffer.h>
WeaveCircularTLVBuffer menyediakan penyimpanan melingkar 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 benar-benar pas dalam penyimpanan yang disediakan. nl::Weave::TLV::TLVReader akan membaca maksimal ukuran buffer, namun akan mengakomodasi wrapper dalam buffer.
Konstruktor dan Destruktor |
|
---|---|
WeaveCircularTLVBuffer(uint8_t *inBuffer, size_t inBufferLength)
Konstruktor WeaveCircularTLVBuffer.
|
|
WeaveCircularTLVBuffer(uint8_t *inBuffer, size_t inBufferLength, uint8_t *inHead)
Konstruktor WeaveCircularTLVBuffer.
|
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 pada penyelesaian output dari TLVWriter. |
GetNewBuffer(TLVWriter & ioWriter, uint8_t *& outBufStart, uint32_t & outBufLen)
|
Mendapatkan ruang tambahan untuk TLVWriter.
|
GetNextBuffer(TLVReader & ioReader, const uint8_t *& outBufStart, uint32_t & outBufLen)
|
Mendapatkan 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 untuk WeaveCircularTLVBuffer::FinalizeBuffer.
|
GetNewBufferFunct(TLVWriter & ioWriter, uintptr_t & inBufHandle, uint8_t *& outBufStart, uint32_t & outBufLen)
|
Trampolin untuk mengambil lebih banyak ruang untuk TLVWriter.
|
GetNextBufferFunct(TLVReader & ioReader, uintptr_t & inBufHandle, const uint8_t *& outBufStart, uint32_t & outBufLen)
|
Trempolin 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 ini akan diberi nl::Weave::TLV::TLVReader yang diposisikan pada elemen yang akan dihapus, serta konteks * void di mana pengguna mungkin telah memberikan lingkungan tambahan untuk callback. Jika berhasil diproses, elemen harus menampilkan WEAVE_NO_ERROR ; ini menandakan WeaveCircularTLVBuffer bahwa elemen tersebut mungkin dikeluarkan dengan aman. Nilai pengembalian lainnya akan diperlakukan sebagai error dan akan mencegah WeaveCircularTLVBuffer mengeluarkan elemen yang sedang dipertimbangkan.
Catatan: Callback ini dapat digunakan untuk memaksa WeaveCircularTLVBuffer agar tidak mengeluarkan elemen. Hal ini mungkin berguna dalam sejumlah situasi, saat diinginkan 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.
IdProfilTersederhana m
uint32_t mImplicitProfileId
mProcessEvictedElement
ProcessEvictedElementFunct mProcessEvictedElement
Callback opsional yang disediakan pengguna yang memproses elemen sebelum mengeluarkannya dari buffer sirkular.
Lihat definisi jenis ProcessEvictedElementFunct pada informasi tambahan tentang penerapan fungsi mProcessEvictedElement.
Fungsi publik
PanjangData yang Tersedia
size_t AvailableDataLength( void ) const
PanjangData
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 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 tidak akan dihapus. Demikian pula, jika error lain tidak terjadi pada elemen dalam buffer, dll. WeaveCircularTLVBuffer yang mendasarinya tetap tidak berubah.
Detail | |||||
---|---|---|---|---|---|
Nilai yang Ditampilkan |
|
FinalizeBuffer
WEAVE_ERROR FinalizeBuffer( TLVWriter & ioWriter, uint8_t *inBufStart, uint32_t inBufLen )
FinalizeBuffer menyesuaikan status WeaveCircularTLVBuffer
pada penyelesaian output dari TLVWriter.
Fungsi ini memengaruhi posisi ekor antrean.
Detail | |||||||
---|---|---|---|---|---|---|---|
Parameter |
|
||||||
Nilai yang Ditampilkan |
|
PenyanggaNew
WEAVE_ERROR GetNewBuffer( TLVWriter & ioWriter, uint8_t *& outBufStart, uint32_t & outBufLen )
Mendapatkan ruang tambahan untuk TLVWriter.
Pada kenyataannya, fungsi tersebut mengeluarkan elemen dari buffer melingkar, dan menyesuaikan kepala antrean buffer ini
Detail | |||||||
---|---|---|---|---|---|---|---|
Parameter |
|
||||||
Nilai yang Ditampilkan |
|
GetNextBuffer
WEAVE_ERROR GetNextBuffer( TLVReader & ioReader, const uint8_t *& outBufStart, uint32_t & outBufLen )
Mendapatkan ruang tambahan untuk TLVReader.
Penyimpanan yang disediakan oleh WeaveCircularTLVBuffer mungkin dapat digabungkan dalam buffer. Fungsi ini memberi kita kemampuan untuk mencocokkan buffering buffer sirkular dengan batasan TLVReader. Pembaca akan membaca maksimum 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 )
Buffer WeaveCircularTLV
WeaveCircularTLVBuffer( uint8_t *inBuffer, size_t inBufferLength )
Konstruktor WeaveCircularTLVBuffer.
Detail | |||||
---|---|---|---|---|---|
Parameter |
|
Buffer WeaveCircularTLV
WeaveCircularTLVBuffer( uint8_t *inBuffer, size_t inBufferLength, uint8_t *inHead )
Konstruktor WeaveCircularTLVBuffer.
Detail | |||||||
---|---|---|---|---|---|---|---|
Parameter |
|
Fungsi statis publik
FinalBufferBufferFunct
WEAVE_ERROR FinalizeBufferFunct( TLVWriter & ioWriter, uintptr_t inBufHandle, uint8_t *inBufStart, uint32_t inBufLen )
Trampolin untuk 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 untuk TLVWriter.
Detail | |||||||||
---|---|---|---|---|---|---|---|---|---|
Parameter |
|
||||||||
Nilai yang Ditampilkan |
|
GetNextBufferFunct
WEAVE_ERROR GetNextBufferFunct( TLVReader & ioReader, uintptr_t & inBufHandle, const uint8_t *& outBufStart, uint32_t & outBufLen )
Trempolin ke WeaveCircularTLVBuffer::GetNextBuffer.
Detail | |||||||||
---|---|---|---|---|---|---|---|---|---|
Parameter |
|
||||||||
Nilai yang Ditampilkan |
|