Google berkomitmen untuk mendorong terwujudnya keadilan ras bagi komunitas Kulit Hitam. Lihat caranya.
Tetap teratur dengan koleksi Simpan dan kategorikan konten berdasarkan preferensi Anda.

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)
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 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)
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)

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
[in] inBuffer
Referensi ke buffering tempat pengusiran terjadi
[in] inAppData
Pointer ke struktur yang diberikan pengguna yang berisi konteks tambahan untuk callback ini
[in] inReader
TLVReader yang diposisikan pada elemen yang akan dikeluarkan.
Nilai yang Ditampilkan
WEAVE_NO_ERROR
Setelah berhasil. Elemen akan dikeluarkan.
other
Terjadi error saat memproses peristiwa. Elemen tetap berada di buffering. 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.

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
WEAVE_NO_ERROR
Setelah 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 pada penyelesaian output dari TLVWriter.

Fungsi ini memengaruhi posisi ekor 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 ditunjukkan oleh inbufStart
Nilai yang Ditampilkan
WEAVE_NO_ERROR
Tanpa syarat.

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
[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
Setelah berhasil.
other
Jika fungsi tidak dapat menghilangkan elemen TLV tingkat atas yang lengkap.

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
[in] ioReader
TLVReader yang memanggil fungsi ini.
[in,out] outBufStart
Referensi ke buffering data. Saat ditampilkan, nilai tersebut akan ditetapkan ke nilai dalam buffer ini.
[out] outBufLen
Saat ditampilkan, tetapkan ke jumlah byte berkelanjutan yang dapat dibaca dari buffer.
Nilai yang Ditampilkan
WEAVE_NO_ERROR
Sukses 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
)

Buffer WeaveCircularTLV

 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 satuan byte

Buffer WeaveCircularTLV

 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 satuan byte
[in] inHead
Titik awal untuk kepala. Pointer inHead harus berada dalam back store untuk buffer sirkular, yaitu dalam inBuffer dan &(inBuffer[inBufferLength])

Fungsi statis publik

FinalBufferBufferFunct

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

Trampolin untuk WeaveCircularTLVBuffer::FinalizeBuffer.

Detail
Parameter
[in,out] ioWriter
TLVWriter memanggil fungsi ini
[in,out] inBufHandle
Tuas ke objek CircularTLVWriter
[in] inBufStart
pointer ke awal data (dari perspektif TLVWriter)
[in] inBufLen
panjang data dalam buffer yang ditunjukkan 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 untuk TLVWriter.

Detail
Parameter
[in,out] ioWriter
TLVWriter memanggil fungsi ini
[in,out] inBufHandle
Tuas ke objek CircularTLVWriter
[out] outBufStart
Pointer ke buffer baru
[out] outBufLen
Panjang yang tersedia untuk menulis
Nilai yang Ditampilkan
WEAVE_NO_ERROR
Setelah berhasil.
other
Jika fungsi tidak dapat menghilangkan elemen TLV tingkat atas yang lengkap.

GetNextBufferFunct

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

Trempolin ke WeaveCircularTLVBuffer::GetNextBuffer.

Detail
Parameter
[in,out] ioReader
TLVReader yang memanggil fungsi ini
[in,out] inBufHandle
Tuas ke objek CircularTLVWriter
[in,out] outBufStart
Referensi ke buffering data. Saat ditampilkan, nilai tersebut akan ditetapkan ke nilai dalam buffer ini.
[out] outBufLen
Saat ditampilkan, tetapkan ke jumlah byte berkelanjutan yang dapat dibaca dari buffer.
Nilai yang Ditampilkan
WEAVE_NO_ERROR
Sukses tanpa syarat.