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 jumlah entri TLV yang tidak terbatas ke WeaveCircularTLVBuffer selama setiap entri TLV benar-benar pas dalam penyimpanan yang disediakan. Kode nl::Weave::TLV::TLVReader akan membaca maksimal ukuran buffer, tetapi akan mengakomodasi penutup 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 level teratas terlama di WeaveCircularTLVBuffer.
FinalizeBuffer(TLVWriter & ioWriter, uint8_t *inBufStart, uint32_t inBufLen)
FinalizeBuffer menyesuaikan status WeaveCircularTLVBuffer setelah menyelesaikan output dari TLVWriter.
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)
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)

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 konteks nl::Weave::TLV::TLVReader yang diposisikan pada elemen yang akan dihapus, serta konteks void * tempat pengguna mungkin telah memberikan lingkungan tambahan untuk callback. Jika berhasil memproses elemen, fungsi harus menampilkan WEAVE_NO_ERROR; hal ini menandakan kepada WeaveCircularTLVBuffer bahwa elemen dapat dikeluarkan 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. Hal ini mungkin berguna dalam sejumlah situasi, saat diinginkan untuk memiliki buffer sirkular yang mendasarinya, tetapi tidak untuk mengganti elemen apa pun di dalamnya.

Detail
Parameter
[in] inBuffer
Referensi ke buffer tempat penghapusan terjadi
[in] inAppData
Pointer ke struktur yang disediakan pengguna yang berisi konteks tambahan untuk callback ini
[in] inReader
TLVReader yang diposisikan pada elemen yang akan dikeluarkan.
Nilai Pengembalian
WEAVE_NO_ERROR
Setelah berhasil. Elemen akan dihapus.
other
Terjadi error selama pemrosesan peristiwa. Elemen tetap berada dalam buffer. Fungsi tulis yang memicu penghapusan elemen ini akan gagal.

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 pada informasi tambahan terkait 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 level teratas terlama di WeaveCircularTLVBuffer.

Fungsi ini menghapus elemen TLV tingkat atas terlama di 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 error lain tidak terjadi, tidak ada elemen dalam buffer, dll. WeaveCircularTLVBuffer yang mendasarinya tetap tidak berubah.

Detail
Nilai Pengembalian
WEAVE_NO_ERROR
Setelah berhasil.
other
Pada error lain yang ditampilkan oleh callback atau TLVReader.

FinalizeBuffer

WEAVE_ERROR FinalizeBuffer(
  TLVWriter & ioWriter,
  uint8_t *inBufStart,
  uint32_t inBufLen
)

FinalizeBuffer menyesuaikan status WeaveCircularTLVBuffer setelah menyelesaikan output dari TLVWriter.

Fungsi ini memengaruhi posisi ekor antrean.

Detail
Parameter
[in,out] ioWriter
TLVWriter yang memanggil fungsi ini
[in] inBufStart
pointer ke awal data (dari perspektif TLVWriter)
[in] inBufLen
panjang data dalam buffer yang ditunjuk oleh inbufStart
Nilai Pengembalian
WEAVE_NO_ERROR
Tanpa syarat.

GetNewBuffer

WEAVE_ERROR GetNewBuffer(
  TLVWriter & ioWriter,
  uint8_t *& outBufStart,
  uint32_t & outBufLen
)

Dapatkan ruang tambahan untuk TLVWriter.

Pada kenyataannya, fungsi mengeluarkan elemen dari buffer sirkular, dan menyesuaikan head antrean buffer ini

Detail
Parameter
[in,out] ioWriter
TLVWriter yang memanggil fungsi ini
[out] outBufStart
Pointer ke {i>buffer<i} baru
[out] outBufLen
Panjang yang tersedia untuk menulis
Nilai Pengembalian
WEAVE_NO_ERROR
Setelah berhasil.
other
Jika fungsi tidak dapat menyelesaikan elemen TLV level teratas yang lengkap.

GetNextBuffer

WEAVE_ERROR GetNextBuffer(
  TLVReader & ioReader,
  const uint8_t *& outBufStart,
  uint32_t & outBufLen
)

Dapatkan ruang tambahan untuk TLVReader.

Penyimpanan yang disediakan oleh WeaveCircularTLVBuffer dapat berada di dalam buffer. Fungsi ini memberi kita kemampuan untuk mencocokkan buffering buffer sirkular dengan batasan TLVReader. Pembaca akan membaca maksimal mQueueSize byte dari buffering.

Detail
Parameter
[in] ioReader
TLVReader yang memanggil fungsi ini.
[in,out] outBufStart
Referensi ke buffering data. Saat dikembalikan, ini ditetapkan ke sebuah nilai dalam buffer ini.
[out] outBufLen
Saat kembali, setel ke jumlah byte berkelanjutan yang dapat dibaca di luar buffer.
Nilai Pengembalian
WEAVE_NO_ERROR
Berhasil tanpa syarat.

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
)

Konstruktor WeaveCircularTLVBuffer.

Detail
Parameter
[in] inBuffer
Pointer ke penyimpanan cadangan untuk antrean
[in] inBufferLength
Panjang penyimpanan cadangan, dalam byte

WeaveCircularTLVBuffer

 WeaveCircularTLVBuffer(
  uint8_t *inBuffer,
  size_t inBufferLength,
  uint8_t *inHead
)

Konstruktor WeaveCircularTLVBuffer.

Detail
Parameter
[in] inBuffer
Pointer ke penyimpanan cadangan untuk antrean
[in] inBufferLength
Panjang penyimpanan cadangan, dalam byte
[in] inHead
Titik awal untuk kepala. Pointer inHead harus berada dalam penyimpanan pendukung untuk buffering melingkar, yaitu dalam inBuffer dan &(inBuffer[inBufferLength])

Fungsi statis publik

FinalizeBufferFunct

WEAVE_ERROR FinalizeBufferFunct(
  TLVWriter & ioWriter,
  uintptr_t inBufHandle,
  uint8_t *inBufStart,
  uint32_t inBufLen
)

Trampolin ke WeaveCircularTLVBuffer::FinalizeBuffer.

Detail
Parameter
[in,out] ioWriter
TLVWriter yang memanggil fungsi ini
[in,out] inBufHandle
Handel untuk objek CircularTLVWriter
[in] inBufStart
pointer ke awal data (dari perspektif TLVWriter)
[in] inBufLen
panjang data dalam buffer yang ditunjuk oleh inbufStart
Nilai Pengembalian
WEAVE_NO_ERROR
Tanpa syarat.

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
[in,out] ioWriter
TLVWriter yang memanggil fungsi ini
[in,out] inBufHandle
Handel untuk objek CircularTLVWriter
[out] outBufStart
Pointer ke {i>buffer<i} baru
[out] outBufLen
Panjang yang tersedia untuk menulis
Nilai Pengembalian
WEAVE_NO_ERROR
Setelah berhasil.
other
Jika fungsi tidak dapat menyelesaikan elemen TLV level teratas yang lengkap.

GetNextBufferFunct

WEAVE_ERROR GetNextBufferFunct(
  TLVReader & ioReader,
  uintptr_t & inBufHandle,
  const uint8_t *& outBufStart,
  uint32_t & outBufLen
)

Trapolin ke WeaveCircularTLVBuffer::GetNextBuffer.

Detail
Parameter
[in,out] ioReader
TLVReader yang memanggil fungsi ini
[in,out] inBufHandle
Handel untuk objek CircularTLVWriter
[in,out] outBufStart
Referensi ke buffering data. Saat dikembalikan, ini ditetapkan ke sebuah nilai dalam buffer ini.
[out] outBufLen
Saat kembali, setel ke jumlah byte berkelanjutan yang dapat dibaca di luar buffer.
Nilai Pengembalian
WEAVE_NO_ERROR
Berhasil tanpa syarat.