nl:: Weave:: TLV:: TLVWriter
#include <src/lib/core/WeaveTLV.h>
Menyediakan encoder yang hemat memori untuk menulis data dalam format TLV Weave.
Ringkasan
TLVWriter menerapkan encoder gaya streaming khusus maju untuk data TLV Weave. Aplikasi menulis data ke encoding dengan memanggil salah satu metode Put() penulis, dan meneruskan informasi tag dan nilai yang terkait sesuai kebutuhan. Demikian pula, aplikasi dapat mengenkode jenis container TLV (struktur, array, atau jalur) dengan memanggil metode OpenContainer() atau EnterContainer() penulis.
Objek TLVWriter dapat menulis data secara langsung ke buffer output tetap, atau ke rantai satu atau beberapa objek PacketBuffer. Selain itu, aplikasi dapat menyediakan fungsi GetNewBuffer
dan FinalizeBuffer
-nya sendiri untuk mengarahkan output ke tujuan arbitrer, misalnya, soket atau antrean peristiwa.
Inheritance
Subclass yang Dikenal Langsung: nl::Weave::TLV::CircularTLVWriter
Jenis yang dilindungi |
|
---|---|
@72{
|
enum |
Jenis publik |
|
---|---|
FinalizeBufferFunct)(TLVWriter &writer, uintptr_t bufHandle, uint8_t *bufStart, uint32_t bufLen)
|
WEAVE_ERROR(* Fungsi yang digunakan untuk melakukan finalisasi output dari objek TLVWriter. |
GetNewBufferFunct)(TLVWriter &writer, uintptr_t &bufHandle, uint8_t *&bufStart, uint32_t &bufLen)
|
WEAVE_ERROR(* Fungsi yang menyediakan ruang buffer output baru ke TLVWriter. |
Atribut publik |
|
---|---|
AppData
|
void *
Bidang pointer yang dapat digunakan untuk data khusus aplikasi.
|
FinalizeBuffer
|
Pointer ke fungsi yang akan dipanggil saat TLVWriter selesai.
|
GetNewBuffer
|
Pointer ke fungsi yang akan menyediakan ruang buffer output baru ke TLVWriter.
|
ImplicitProfileId
|
uint32_t
ID profil tag yang harus dienkode dalam bentuk implisit.
|
Atribut yang dilindungi |
|
---|---|
mBufHandle
|
uintptr_t
|
mBufStart
|
uint8_t *
|
mContainerType
|
|
mLenWritten
|
uint32_t
|
mMaxLen
|
uint32_t
|
mRemainingLen
|
uint32_t
|
mWritePoint
|
uint8_t *
|
Fungsi publik |
|
---|---|
CloseContainer(TLVWriter & containerWriter)
|
Menyelesaikan penulisan container TLV setelah panggilan ke OpenContainer().
|
ContinuePutBytes(const uint8_t *buf, uint32_t len)
|
Mengenkode nilai string byte TLV.
|
CopyContainer(TLVReader & container)
|
|
CopyContainer(uint64_t tag, TLVReader & container)
|
Mengenkode elemen penampung TLV dari kumpulan elemen anggota yang telah dienkode sebelumnya.
|
CopyContainer(uint64_t tag, const uint8_t *encodedContainer, uint16_t encodedContainerLen)
|
Mengenkode elemen container TLV yang berisi elemen anggota dari container yang telah dienkode sebelumnya.
|
CopyElement(TLVReader & reader)
|
Menyalin elemen TLV dari objek pembaca ke penulis.
|
CopyElement(uint64_t tag, TLVReader & reader)
|
|
EndContainer(TLVType outerContainerType)
|
Menyelesaikan encoding elemen container TLV.
|
Finalize(void)
|
Selesaikan penulisan encoding TLV.
|
GetContainerType(void) const
|
Menampilkan jenis container tempat TLVWriter saat ini menulis.
|
GetLengthWritten(void)
|
uint32_t
Menampilkan jumlah total byte yang ditulis sejak penulis diinisialisasi.
|
Init(uint8_t *buf, uint32_t maxLen)
|
void
Menginisialisasi objek TLVWriter untuk menulis ke buffer output tunggal.
|
Init(PacketBuffer *buf, uint32_t maxLen)
|
void
Melakukan inisialisasi objek TLVWriter untuk menulis ke dalam satu PacketBuffer.
|
Init(PacketBuffer *buf, uint32_t maxLen, bool allowDiscontiguousBuffers)
|
void
Melakukan inisialisasi objek TLVWriter untuk menulis ke satu atau beberapa PacketBuffers.
|
InitMalloced(uint8_t *& outBuf, uint32_t initialBufSize, uint32_t maxLen)
|
void
Melakukan inisialisasi objek TLVWriter untuk menulis ke buffer dinamis.
|
OpenContainer(uint64_t tag, TLVType containerType, TLVWriter & containerWriter)
|
|
Put(uint64_t tag, int8_t v)
|
Mengenkode nilai bilangan bulat yang ditandatangani TLV.
|
Put(uint64_t tag, int8_t v, bool preserveSize)
|
Mengenkode nilai bilangan bulat yang ditandatangani TLV.
|
Put(uint64_t tag, int16_t v)
|
|
Put(uint64_t tag, int16_t v, bool preserveSize)
|
|
Put(uint64_t tag, int32_t v)
|
|
Put(uint64_t tag, int32_t v, bool preserveSize)
|
|
Put(uint64_t tag, int64_t v)
|
|
Put(uint64_t tag, int64_t v, bool preserveSize)
|
|
Put(uint64_t tag, uint8_t v)
|
Mengenkode nilai bilangan bulat TLV yang tidak ditandatangani.
|
Put(uint64_t tag, uint8_t v, bool preserveSize)
|
Mengenkode nilai bilangan bulat TLV yang tidak ditandatangani.
|
Put(uint64_t tag, uint16_t v)
|
|
Put(uint64_t tag, uint16_t v, bool preserveSize)
|
|
Put(uint64_t tag, uint32_t v)
|
|
Put(uint64_t tag, uint32_t v, bool preserveSize)
|
|
Put(uint64_t tag, uint64_t v)
|
|
Put(uint64_t tag, uint64_t v, bool preserveSize)
|
|
Put(uint64_t tag, float v)
|
|
Put(uint64_t tag, double v)
|
Mengenkode nilai floating point TLV.
|
PutBoolean(uint64_t tag, bool v)
|
Mengenkode nilai boolean TLV.
|
PutBytes(uint64_t tag, const uint8_t *buf, uint32_t len)
|
Mengenkode nilai string byte TLV.
|
PutNull(uint64_t tag)
|
Mengenkode nilai null TLV.
|
PutPreEncodedContainer(uint64_t tag, TLVType containerType, const uint8_t *data, uint32_t dataLen)
|
Mengenkode elemen penampung TLV dari kumpulan elemen anggota yang telah dienkode sebelumnya.
|
PutString(uint64_t tag, const char *buf)
|
Mengenkode nilai string UTF8 TLV.
|
PutString(uint64_t tag, const char *buf, uint32_t len)
|
Mengenkode nilai string UTF8 TLV.
|
PutStringF(uint64_t tag, const char *fmt, ...)
|
Lakukan enkode output string yang diformat sesuai dengan format dalam elemen TLV.
|
StartContainer(uint64_t tag, TLVType containerType, TLVType & outerContainerType)
|
Memulai encoding elemen container TLV baru.
|
StartPutBytes(uint64_t tag, uint32_t totalLen)
|
Mengenkode string byte TLV dalam beberapa potongan.
|
VPutStringF(uint64_t tag, const char *fmt, va_list ap)
|
Lakukan enkode output string yang diformat sesuai dengan format dalam elemen TLV.
|
Fungsi statis publik |
|
---|---|
FinalizePacketBuffer(TLVWriter & writer, uintptr_t bufHandle, uint8_t *bufStart, uint32_t dataLen)
|
Implementasi fungsi FinalizeBuffer TLVWriter untuk menulis ke rantai PacketBuffer.
|
GetNewBuffer_Malloced(TLVWriter & writer, uintptr_t & bufHandle, uint8_t *& bufStart, uint32_t & bufLen)
|
Implementasi fungsi GetNewBuffer TLVWriter untuk menulis ke buffer dinamis.
|
GetNewPacketBuffer(TLVWriter & writer, uintptr_t & bufHandle, uint8_t *& bufStart, uint32_t & bufLen)
|
Implementasi fungsi GetNewBuffer TLVWriter untuk menulis ke rantai PacketBuffer.
|
Fungsi yang dilindungi |
|
---|---|
IsCloseContainerReserved(void) const
|
bool
Tentukan apakah penampung harus menyediakan ruang untuk simbol CloseContainer di titik awal / pembukaan penampung.
|
IsContainerOpen(void) const
|
bool
|
SetCloseContainerReserved(bool aCloseContainerReserved)
|
void
Tetapkan apakah penampung harus menyediakan ruang untuk simbol CloseContainer di titik awal / pembukaan penampung.
|
SetContainerOpen(bool aContainerOpen)
|
void
|
WriteData(const uint8_t *p, uint32_t len)
|
|
WriteElementHead(TLVElementType elemType, uint64_t tag, uint64_t lenOrVal)
|
|
WriteElementWithData(TLVType type, uint64_t tag, const uint8_t *data, uint32_t dataLen)
|
Jenis yang dilindungi
@72
@72
Jenis publik
FinalizeBufferFunct
WEAVE_ERROR(* FinalizeBufferFunct)(TLVWriter &writer, uintptr_t bufHandle, uint8_t *bufStart, uint32_t bufLen)
Fungsi yang digunakan untuk melakukan finalisasi output dari objek TLVWriter.
Fungsi jenis ini dipanggil saat metode Finalize() dari TLVWriter dipanggil. Fungsi ini diharapkan melakukan pembersihan atau finalisasi yang diperlukan terkait penggunaan output objek penulis. Contohnya seperti merekam panjang akhir encoding, atau menutup deskriptor file.
Detail | |||||||||
---|---|---|---|---|---|---|---|---|---|
Parameter |
|
||||||||
Nilai yang Ditampilkan |
|
GetNewBufferFunct
WEAVE_ERROR(* GetNewBufferFunct)(TLVWriter &writer, uintptr_t &bufHandle, uint8_t *&bufStart, uint32_t &bufLen)
Fungsi yang menyediakan ruang buffer output baru ke TLVWriter.
Fungsi jenis ini digunakan untuk menyiapkan ruang buffer baru yang akan menjadi tujuan penulisan TLVWriter. Saat dipanggil, fungsi ini diharapkan menampilkan pointer ke lokasi memori tempat data baru harus ditulis, bersama dengan panjang maksimum terkait. Fungsi ini dapat menyediakan ruang tulis dengan mengalokasikan buffer baru untuk menyimpan data atau dengan menghapus data yang ditulis sebelumnya dari buffer yang ada.
Detail | |||||||||
---|---|---|---|---|---|---|---|---|---|
Parameter |
|
||||||||
Nilai yang Ditampilkan |
|
Atribut publik
AppData
void * AppData
Bidang pointer yang dapat digunakan untuk data khusus aplikasi.
FinalizeBuffer
FinalizeBufferFunct FinalizeBuffer
Pointer ke fungsi yang akan dipanggil saat TLVWriter selesai.
Objek TLVWriter akan memanggil fungsi FinalizeBuffer setiap kali metode Finalize() dipanggil. Aplikasi dapat menetapkan pointer fungsi kapan saja sebelum memanggil Finalize(). Secara default, pointer ditetapkan ke NULL, yang menyebabkan metode Finalize() mengabaikan pemanggilan fungsi.
Lihat definisi jenis FinalizeBufferFunct untuk informasi tambahan tentang penerapan fungsi FinalizeBuffer.
GetNewBuffer
GetNewBufferFunct GetNewBuffer
Pointer ke fungsi yang akan menyediakan ruang buffer output baru ke TLVWriter.
Objek TLVWriter akan memanggil fungsi GetNewBuffer setiap kali upaya dilakukan untuk menulis data yang melebihi ukuran buffer output saat ini. Jika diatur ke NULL (nilai default), penulis akan menampilkan WEAVE_ERROR_NO_MEMORY jika data output melebihi buffer saat ini.
GetNewBuffer dapat disetel oleh aplikasi kapan saja, tetapi biasanya disetel saat penulis diinisialisasi.
Lihat definisi jenis GetNewBufferFunct untuk informasi tambahan tentang cara menerapkan fungsi GetNewBuffer.
ImplicitProfileId
uint32_t ImplicitProfileId
ID profil tag yang harus dienkode dalam bentuk implisit.
Saat penulis diminta untuk mengenkode elemen baru, jika ID profil tag yang terkait dengan elemen baru cocok dengan nilai anggota ImplicitProfileId
, penulis akan mengenkode tag dalam bentuk implisit, dengan menghilangkan ID profil dalam prosesnya.
Secara default, properti ImplicitProfileId
ditetapkan ke kProfileIdNotSpecified, yang menginstruksikan penulis untuk tidak memunculkan tag yang dienkode secara implisit. Aplikasi dapat menyetel ImplicitProfileId
kapan saja untuk mengaktifkan tag encoding dalam bentuk implisit yang dimulai dari titik saat ini dalam encoding. ID profil yang sesuai untuk ditetapkan biasanya bergantung pada konteks aplikasi atau protokol yang diucapkan.
Atribut yang dilindungi
mBufHandle
uintptr_t mBufHandle
mBufStart
uint8_t * mBufStart
mContainerType
TLVType mContainerType
mLenWritten
uint32_t mLenWritten
mMaxLen
uint32_t mMaxLen
mRemainingLen
uint32_t mRemainingLen
mWritePoint
uint8_t * mWritePoint
Fungsi publik
CloseContainer
WEAVE_ERROR CloseContainer( TLVWriter & containerWriter )
Menyelesaikan penulisan container TLV setelah panggilan ke OpenContainer().
Metode CloseContainer() memulihkan status objek TLVWriter induk setelah panggilan ke OpenContainer(). Untuk setiap panggilan ke OpenContainer(), aplikasi harus melakukan panggilan yang sesuai ke CloseContainer(), dengan meneruskan referensi ke penulis penampung yang sama ke kedua metode.
Saat CloseContainer() ditampilkan, aplikasi dapat terus menggunakan penulis induk untuk menulis elemen TLV tambahan yang muncul setelah elemen container. Pada tahap ini, penulis container yang disediakan harus dianggap sebagai 'diinisialisasi' dan tidak boleh digunakan tanpa inisialisasi ulang.
Detail | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parameter |
|
||||||||||||
Nilai yang Ditampilkan |
|
ContinuePutBytes
WEAVE_ERROR ContinuePutBytes( const uint8_t *buf, uint32_t len )
Mengenkode nilai string byte TLV.
Ini harus digunakan dengan StartPutBytes.
Detail | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parameter |
|
||||||||||||
Nilai yang Ditampilkan |
|
CopyContainer
WEAVE_ERROR CopyContainer( TLVReader & container )
Menyalin elemen container TLV dari objek TLVReader.
CopyContainer() mengenkode elemen container TLV baru dengan menyalin elemen container yang telah dienkode sebelumnya yang terletak di posisi saat ini dari objek TLVReader. Metode tersebut menulis keseluruhan elemen penampung baru dalam satu panggilan, menyalin jenis, tag, dan elemen penampung dari encoding sumber. Saat metode ditampilkan, objek penulis dapat digunakan untuk menulis elemen TLV tambahan setelah elemen container.
Detail | |||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parameter |
|
||||||||||||||||||
Nilai yang Ditampilkan |
|
CopyContainer
WEAVE_ERROR CopyContainer( uint64_t tag, TLVReader & container )
Mengenkode elemen penampung TLV dari kumpulan elemen anggota yang telah dienkode sebelumnya.
Metode CopyContainer() mengenkode elemen penampung TLV baru (struktur, array, atau jalur) yang berisi kumpulan elemen anggota yang diambil dari objek TLVReader. Saat metode ini dipanggil, objek pembaca yang disediakan akan diposisikan pada elemen container TLV. Penampung yang baru dienkode akan memiliki jenis dan anggota yang sama dengan penampung input. Tag untuk penampung baru ditetapkan sebagai parameter input.
Saat metode ditampilkan, objek penulis dapat digunakan untuk menulis elemen TLV tambahan setelah elemen container.
Detail | |||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parameter |
|
||||||||||||||||||
Nilai yang Ditampilkan |
|
CopyContainer
WEAVE_ERROR CopyContainer( uint64_t tag, const uint8_t *encodedContainer, uint16_t encodedContainerLen )
Mengenkode elemen container TLV yang berisi elemen anggota dari container yang telah dienkode sebelumnya.
Metode CopyContainer() mengenkode elemen penampung TLV baru (struktur, array, atau jalur) yang berisi kumpulan elemen anggota yang diambil dari konten penampung yang telah dienkode sebelumnya yang disediakan. Saat metode ini dipanggil, data dalam buffer input yang disediakan akan diuraikan sebagai elemen container TLV. Container baru akan ditulis dengan jenis dan anggota yang sama seperti container input. Tag untuk penampung baru ditetapkan sebagai parameter input.
Saat metode ditampilkan, objek penulis dapat digunakan untuk menulis elemen TLV tambahan setelah elemen container.
Detail | |||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parameter |
|
||||||||||||||||
Nilai yang Ditampilkan |
|
CopyElement
WEAVE_ERROR CopyElement( TLVReader & reader )
Menyalin elemen TLV dari objek pembaca ke penulis.
Metode CopyElement() mengenkode elemen TLV baru yang jenis, tag, dan nilainya diambil dari objek TLVReader. Saat metode ini dipanggil, objek pembaca yang disediakan diharapkan diposisikan pada elemen TLV sumber. Elemen yang baru dienkode akan memiliki jenis, tag, dan konten yang sama dengan penampung input. Jika elemen yang disediakan adalah container TLV (struktur, array, atau jalur), seluruh konten container akan disalin.
Detail | |||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parameter |
|
||||||||||||||||||
Nilai yang Ditampilkan |
|
CopyElement
WEAVE_ERROR CopyElement( uint64_t tag, TLVReader & reader )
EndContainer
WEAVE_ERROR EndContainer( TLVType outerContainerType )
Menyelesaikan encoding elemen container TLV.
Metode EndContainer() menyelesaikan encoding elemen container TLV dan memulihkan status objek TLVWrite setelah panggilan sebelumnya ke StartContainer(). Untuk setiap panggilan ke StartContainer(), aplikasi harus melakukan panggilan yang sesuai ke EndContainer(), dengan meneruskan nilai TLVType yang ditampilkan oleh panggilan StartContainer(). Saat EndContainer() ditampilkan, objek penulis dapat digunakan untuk menulis elemen TLV tambahan yang mengikuti elemen container.
Detail | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parameter |
|
||||||||||||
Nilai yang Ditampilkan |
|
Finalisasi
WEAVE_ERROR Finalize( void )
Selesaikan penulisan encoding TLV.
Metode Finalize() menyelesaikan proses penulisan encoding TLV ke buffer output yang mendasarinya. Metode harus dipanggil oleh aplikasi sebelum menggunakan konten buffer. Finalize() hanya dapat dipanggil jika tidak ada penulis container yang terbuka untuk penulis saat ini. (Lihat OpenContainer()
).
Detail | |||||||
---|---|---|---|---|---|---|---|
Nilai yang Ditampilkan |
|
GetContainerType
TLVType GetContainerType( void ) const
Menampilkan jenis container tempat TLVWriter saat ini menulis.
Metode GetContainerType() menampilkan jenis container TLV yang saat ini sedang ditulis oleh TLVWriter. Jika TLVWriter tidak menulis elemen dalam penampung (yaitu jika menulis di tingkat encoding paling luar), metode akan menampilkan kTLVType_NotSpecified.
Detail | |
---|---|
Hasil |
TLVType dari container saat ini, atau kTLVType_NotSpecified jika TLVWriter tidak menulis elemen dalam sebuah container.
|
GetLengthWritten
uint32_t GetLengthWritten( void )
Menampilkan jumlah total byte yang ditulis sejak penulis diinisialisasi.
Detail | |
---|---|
Hasil |
Jumlah total byte yang ditulis sejak penulis diinisialisasi.
|
Init
void Init( uint8_t *buf, uint32_t maxLen )
Init
void Init( PacketBuffer *buf, uint32_t maxLen )
Melakukan inisialisasi objek TLVWriter untuk menulis ke dalam satu PacketBuffer.
Penulisan dimulai segera setelah byte terakhir dari data yang ada dalam buffer yang disediakan.
Detail | |||||
---|---|---|---|---|---|
Parameter |
|
Init
void Init( PacketBuffer *buf, uint32_t maxLen, bool allowDiscontiguousBuffers )
Melakukan inisialisasi objek TLVWriter untuk menulis ke satu atau beberapa PacketBuffers.
Penulisan dimulai segera setelah byte terakhir dari data yang ada dalam buffer yang ditentukan. Jika allowDiscontiguousBuffers
bernilai benar, PacketBuffer tambahan akan dialokasikan dan dirantai ke buffer yang disediakan sesuai kebutuhan untuk mengakomodasi jumlah data yang ditulis. Jika buffer output yang ditentukan sudah menjadi head dari rantai buffer, output akan ditulis ke buffer berikutnya dalam rantai sebelum buffer baru dialokasikan.
Detail | |||||||
---|---|---|---|---|---|---|---|
Parameter |
|
InitMalloced
void InitMalloced( uint8_t *& outBuf, uint32_t initialBufSize, uint32_t maxLen )
Melakukan inisialisasi objek TLVWriter untuk menulis ke buffer dinamis.
Detail | |||||||
---|---|---|---|---|---|---|---|
Parameter |
|
OpenContainer
WEAVE_ERROR OpenContainer( uint64_t tag, TLVType containerType, TLVWriter & containerWriter )
Melakukan inisialisasi objek TLVWriter baru untuk menulis anggota elemen container TLV.
Metode OpenContainer() digunakan untuk menulis elemen container TLV (struktur, array, atau jalur) ke encoding. Metode ini mengambil jenis dan tag (jika ada) penampung baru, dan referensi ke objek writer baru (writer container) yang akan diinisialisasi untuk keperluan penulisan elemen penampung. Aplikasi menulis anggota penampung baru menggunakan penulis penampung, lalu memanggil CloseContainer() untuk menyelesaikan encoding container.
Saat penulis container terbuka, aplikasi tidak boleh melakukan panggilan pada atau mengubah status penulis induk.
Penulis container mewarisi berbagai properti konfigurasi dari penulis induk. Karakter pengganti ini meliputi:
- ID profil implisit (ImplicitProfileId)
- Pointer data aplikasi (AppData)
- Pointer fungsi GetNewBuffer dan FinalizeBuffer
Detail | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parameter |
|
||||||||||||||
Nilai yang Ditampilkan |
|
Put
WEAVE_ERROR Put( uint64_t tag, int8_t v )
Mengenkode nilai bilangan bulat yang ditandatangani TLV.
Ini adalah fungsi anggota yang kelebihan beban, disediakan untuk memudahkan. Fungsi ini berbeda dari fungsi di atas hanya dalam argumen yang diterima.
Detail | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parameter |
|
||||||||||||
Nilai yang Ditampilkan |
|
Put
WEAVE_ERROR Put( uint64_t tag, int8_t v, bool preserveSize )
Mengenkode nilai bilangan bulat yang ditandatangani TLV.
Ini adalah fungsi anggota yang kelebihan beban, disediakan untuk memudahkan. Fungsi ini berbeda dari fungsi di atas hanya dalam argumen yang diterima.
Detail | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parameter |
|
||||||||||||
Nilai yang Ditampilkan |
|
Put
WEAVE_ERROR Put( uint64_t tag, int16_t v )
Put
WEAVE_ERROR Put( uint64_t tag, int16_t v, bool preserveSize )
Put
WEAVE_ERROR Put( uint64_t tag, int32_t v )
Put
WEAVE_ERROR Put( uint64_t tag, int32_t v, bool preserveSize )
Put
WEAVE_ERROR Put( uint64_t tag, int64_t v )
Put
WEAVE_ERROR Put( uint64_t tag, int64_t v, bool preserveSize )
Put
WEAVE_ERROR Put( uint64_t tag, uint8_t v )
Mengenkode nilai bilangan bulat TLV yang tidak ditandatangani.
Ini adalah fungsi anggota yang kelebihan beban, disediakan untuk memudahkan. Fungsi ini berbeda dari fungsi di atas hanya dalam argumen yang diterima.
Detail | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parameter |
|
||||||||||||
Nilai yang Ditampilkan |
|
Put
WEAVE_ERROR Put( uint64_t tag, uint8_t v, bool preserveSize )
Mengenkode nilai bilangan bulat TLV yang tidak ditandatangani.
Ini adalah fungsi anggota yang kelebihan beban, disediakan untuk memudahkan. Fungsi ini berbeda dari fungsi di atas hanya dalam argumen yang diterima.
Detail | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parameter |
|
||||||||||||
Nilai yang Ditampilkan |
|
Put
WEAVE_ERROR Put( uint64_t tag, uint16_t v )
Put
WEAVE_ERROR Put( uint64_t tag, uint16_t v, bool preserveSize )
Put
WEAVE_ERROR Put( uint64_t tag, uint32_t v )
Put
WEAVE_ERROR Put( uint64_t tag, uint32_t v, bool preserveSize )
Put
WEAVE_ERROR Put( uint64_t tag, uint64_t v )
Put
WEAVE_ERROR Put( uint64_t tag, uint64_t v, bool preserveSize )
Put
WEAVE_ERROR Put( uint64_t tag, float v )
Put
WEAVE_ERROR Put( uint64_t tag, double v )
Mengenkode nilai floating point TLV.
Ini adalah fungsi anggota yang kelebihan beban, disediakan untuk memudahkan. Fungsi ini berbeda dari fungsi di atas hanya dalam argumen yang diterima.
Detail | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parameter |
|
||||||||||||
Nilai yang Ditampilkan |
|
PutBoolean
WEAVE_ERROR PutBoolean( uint64_t tag, bool v )
Mengenkode nilai boolean TLV.
Detail | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parameter |
|
||||||||||||
Nilai yang Ditampilkan |
|
PutBytes
WEAVE_ERROR PutBytes( uint64_t tag, const uint8_t *buf, uint32_t len )
Mengenkode nilai string byte TLV.
Detail | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parameter |
|
||||||||||||
Nilai yang Ditampilkan |
|
PutNull
WEAVE_ERROR PutNull( uint64_t tag )
Mengenkode nilai null TLV.
Detail | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parameter |
|
||||||||||||
Nilai yang Ditampilkan |
|
PutPreEncodedContainer
WEAVE_ERROR PutPreEncodedContainer( uint64_t tag, TLVType containerType, const uint8_t *data, uint32_t dataLen )
Mengenkode elemen penampung TLV dari kumpulan elemen anggota yang telah dienkode sebelumnya.
Metode PutPreEncodedContainer() mengenkode elemen penampung TLV baru (struktur, array, atau jalur) yang berisi kumpulan elemen anggota yang diambil dari buffer yang telah dienkode sebelumnya. Buffer input diharapkan berisi nol atau beberapa elemen TLV berenkode penuh, dengan tag yang sesuai dengan aturan yang terkait dengan jenis penampung yang ditentukan (misalnya, anggota struktur harus memiliki tag, sedangkan anggota array tidak boleh).
Metode ini mengenkode keseluruhan elemen container dalam satu panggilan. Saat PutPreEncodedContainer() ditampilkan, objek writer dapat digunakan untuk menulis elemen TLV tambahan setelah elemen container.
Detail | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parameter |
|
||||||||||||||
Nilai yang Ditampilkan |
|
PutString
WEAVE_ERROR PutString( uint64_t tag, const char *buf )
Mengenkode nilai string UTF8 TLV.
Detail | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parameter |
|
||||||||||||
Nilai yang Ditampilkan |
|
PutString
WEAVE_ERROR PutString( uint64_t tag, const char *buf, uint32_t len )
Mengenkode nilai string UTF8 TLV.
Detail | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parameter |
|
||||||||||||
Nilai yang Ditampilkan |
|
PutStringF
WEAVE_ERROR PutStringF( uint64_t tag, const char *fmt, ... )
Lakukan enkode output string yang diformat sesuai dengan format dalam elemen TLV.
PutStringF adalah analog dari sprintf dengan output disimpan dalam elemen TLV dan bukan buffer karakter. Jika fungsi printf yang diperluas tersedia, fungsi tersebut dapat menampilkan string hasil ke penyimpanan dasar yang terputus. Implementasi ini mendukung peningkatan printf berikut:
Platform menyediakan vcbprintf
berbasis callback yang memberikan kemampuan untuk memanggil callback kustom sebagai pengganti putchar.
Platform ini menyediakan varian vsnprintf
yang disebut vsnprintf_ex
, yang berperilaku sama seperti vsnprintf, tetapi memiliki ketentuan untuk menghilangkan karakter n
pertama dari output.
Perhatikan bahwa meskipun fungsi berbasis callback mungkin paling sederhana dan menggunakan jumlah kode paling sedikit, fungsi variasi vsprintf_ex
akan menggunakan lebih sedikit stack.
Jika kedua hal di atas tidak tersedia, tetapi platform menyediakan malloc
, fungsi akan mengalokasikan buffer sementara untuk menyimpan output. Jika platform tidak memberikan peningkatan ke kelompok printf atau malloc, output akan dipotong sedemikian rupa agar sesuai dengan status berkelanjutan dalam penyimpanan TLV saat ini
Detail | |||||||
---|---|---|---|---|---|---|---|
Parameter |
|
||||||
Nilai yang Ditampilkan |
|
StartContainer
WEAVE_ERROR StartContainer( uint64_t tag, TLVType containerType, TLVType & outerContainerType )
Memulai encoding elemen container TLV baru.
Metode StartContainer() digunakan untuk menulis elemen container TLV (struktur, array, atau jalur) ke encoding. Metode ini mengambil jenis dan tag (jika ada) dari penampung baru, dan referensi ke nilai TLVType yang akan digunakan untuk menyimpan konteks penulis saat ini saat sedang digunakan untuk menulis penampung.
Setelah metode StartContainer() ditampilkan, aplikasi harus menggunakan objek TLVWriter saat ini untuk menulis elemen container. Setelah selesai, aplikasi harus memanggil metode EndContainer() untuk menyelesaikan encoding penampung.
Detail | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parameter |
|
||||||||||||||
Nilai yang Ditampilkan |
|
StartPutBytes
WEAVE_ERROR StartPutBytes( uint64_t tag, uint32_t totalLen )
Mengenkode string byte TLV dalam beberapa potongan.
Ini harus digunakan dengan ContinuePutBytes.
Detail | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parameter |
|
||||||||||||
Nilai yang Ditampilkan |
|
VPutStringF
WEAVE_ERROR VPutStringF( uint64_t tag, const char *fmt, va_list ap )
Lakukan enkode output string yang diformat sesuai dengan format dalam elemen TLV.
PutStringF adalah analog dari sprintf dengan output disimpan dalam elemen TLV dan bukan buffer karakter. Jika fungsi printf yang diperluas tersedia, fungsi tersebut dapat menampilkan string hasil ke penyimpanan dasar yang terputus. Implementasi ini mendukung peningkatan printf berikut:
Platform menyediakan vcbprintf
berbasis callback yang memberikan kemampuan untuk memanggil callback kustom sebagai pengganti putchar.
Platform ini menyediakan varian vsnprintf
yang disebut vsnprintf_ex
, yang berperilaku sama seperti vsnprintf, tetapi memiliki ketentuan untuk menghilangkan karakter n
pertama dari output.
Perhatikan bahwa meskipun fungsi berbasis callback mungkin paling sederhana dan menggunakan jumlah kode paling sedikit, fungsi variasi vsprintf_ex
akan menggunakan lebih sedikit stack.
Jika kedua hal di atas tidak tersedia, tetapi platform menyediakan malloc
, fungsi akan mengalokasikan buffer sementara untuk menyimpan output. Jika platform tidak memberikan peningkatan ke kelompok printf atau malloc, output akan dipotong sedemikian rupa agar sesuai dengan status berkelanjutan dalam penyimpanan TLV saat ini
Detail | |||||||
---|---|---|---|---|---|---|---|
Parameter |
|
||||||
Nilai yang Ditampilkan |
|
Fungsi statis publik
FinalizePacketBuffer
WEAVE_ERROR FinalizePacketBuffer( TLVWriter & writer, uintptr_t bufHandle, uint8_t *bufStart, uint32_t dataLen )
Implementasi fungsi FinalizeBuffer TLVWriter untuk menulis ke rantai PacketBuffer.
Fungsi FinalizePacketBuffer() melakukan finalisasi yang diperlukan saat menggunakan TLVWriter untuk menulis ke rantai PacketBuffer. Fungsi ini dirancang untuk digunakan bersama dengan fungsi GetNewPacketBuffer().
Lihat definisi jenis FinalizeBufferFunct untuk mengetahui informasi tambahan tentang API fungsi FinalizePacketBuffer().
GetNewBuffer_Malloced
WEAVE_ERROR GetNewBuffer_Malloced( TLVWriter & writer, uintptr_t & bufHandle, uint8_t *& bufStart, uint32_t & bufLen )
Implementasi fungsi GetNewBuffer TLVWriter untuk menulis ke buffer dinamis.
Fungsi GetNewBuffer_Malloced() menyediakan ruang output baru ke TLVWriter dengan menggandakan ukuran buffer dinamis yang mendasarinya sesuai kebutuhan untuk menyimpan encoding. Fungsi ini dirancang untuk ditetapkan ke pointer fungsi GetNewBuffer TLVWriter.
Lihat definisi jenis GetNewBufferFunct untuk mengetahui informasi tambahan tentang API fungsi GetNewBuffer_Malloced().
GetNewPacketBuffer
WEAVE_ERROR GetNewPacketBuffer( TLVWriter & writer, uintptr_t & bufHandle, uint8_t *& bufStart, uint32_t & bufLen )
Implementasi fungsi GetNewBuffer TLVWriter untuk menulis ke rantai PacketBuffer.
Fungsi GetNewPacketBuffer() menyediakan ruang output baru ke TLVWriter dengan mengalokasikan rantai dari satu atau beberapa PacketBuffers sesuai kebutuhan untuk menyimpan encoding. Fungsi ini dirancang untuk ditetapkan ke pointer fungsi GetNewBuffer TLVWriter.
Perhatikan bahwa saat menggunakan GetNewPacketBuffer dengan TLVWriter, fungsi FinalizePacketBuffer() yang sesuai (atau yang setara) juga harus digunakan untuk menyelesaikan rantai buffer.
Lihat definisi jenis GetNewBufferFunct untuk mengetahui informasi tambahan tentang API fungsi GetNewPacketBuffer().
Fungsi yang dilindungi
IsCloseContainerReserved
bool IsCloseContainerReserved( void ) const
Tentukan apakah penampung harus menyediakan ruang untuk simbol CloseContainer di titik awal / pembukaan penampung.
IsContainerOpen
bool IsContainerOpen( void ) const
SetCloseContainerReserved
void SetCloseContainerReserved( bool aCloseContainerReserved )
Tetapkan apakah penampung harus menyediakan ruang untuk simbol CloseContainer di titik awal / pembukaan penampung.
SetContainerOpen
void SetContainerOpen( bool aContainerOpen )
WriteData
WEAVE_ERROR WriteData( const uint8_t *p, uint32_t len )
WriteElementHead
WEAVE_ERROR WriteElementHead( TLVElementType elemType, uint64_t tag, uint64_t lenOrVal )
WriteElementWithData
WEAVE_ERROR WriteElementWithData( TLVType type, uint64_t tag, const uint8_t *data, uint32_t dataLen )