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)
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 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
[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 ditempatkan pada elemen yang akan dihapus.
Nilai yang Ditampilkan
WEAVE_NO_ERROR
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 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
WEAVE_NO_ERROR
Berhasil.
other
Pada error lain yang ditampilkan oleh callback atau oleh TLVReader.

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
[in,out] ioWriter
TLVWriter memanggil fungsi ini
[in] inBufStart
pointer ke awal data (dari perspektif TLVWriter)
[in] inBufLen
panjang data dalam buffer yang ditunjuk oleh inbufStart
Nilai yang Ditampilkan
WEAVE_NO_ERROR
Tanpa syarat.

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
[in,out] ioWriter
TLVWriter memanggil fungsi ini
[out] outBufStart
Pointer ke buffer baru
[out] outBufLen
Panjang yang tersedia untuk menulis
Nilai yang Ditampilkan
WEAVE_NO_ERROR
Berhasil.
other
Jika fungsi tidak dapat menghapus 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 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
[in] ioReader
TLVReader yang memanggil fungsi ini.
[in,out] outBufStart
Referensi ke buffer data. Saat dikembalikan, parameter ini ditetapkan ke nilai dalam buffer ini.
[out] outBufLen
Saat kembali, setel ke jumlah byte berkelanjutan yang dapat dibaca di luar buffer.
Nilai yang Ditampilkan
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
)

WeaveCircularTLVBuffer.

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

WeaveCircularTLVBuffer

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

WeaveCircularTLVBuffer.

Detail
Parameter
[in] inBuffer
Pointer ke penyimpanan pendukung untuk antrean
[in] inBufferLength
Panjang penyimpanan pendukung, dalam byte
[in] inHead
Titik awal untuk kepala. Pointer inHead harus berada dalam backing store untuk buffer 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 memanggil fungsi ini
[in,out] inBufHandle
Handle untuk objek CircularTLVWriter
[in] inBufStart
pointer ke awal data (dari perspektif TLVWriter)
[in] inBufLen
panjang data dalam buffer yang ditunjuk oleh inbufStart
Nilai yang Ditampilkan
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 memanggil fungsi ini
[in,out] inBufHandle
Handle untuk objek CircularTLVWriter
[out] outBufStart
Pointer ke buffer baru
[out] outBufLen
Panjang yang tersedia untuk menulis
Nilai yang Ditampilkan
WEAVE_NO_ERROR
Berhasil.
other
Jika fungsi tidak dapat menghapus elemen TLV level teratas yang lengkap.

GetNextBufferFunct

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

Trampolin ke WeaveCircularTLVBuffer::GetNextBuffer.

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