nl:: Menenun:: TLV:: TLVWriter
#include <src/lib/core/WeaveTLV.h>
Menyediakan encoder yang hemat memori untuk menulis data dalam format TLV Weave.
Ringkasan
TLVWriter menerapkan encoder bergaya streaming yang hanya untuk maju untuk data TLV Weave. Aplikasi menulis data ke encoding dengan memanggil salah satu metode Put() penulis, lalu meneruskan tag dan informasi nilai terkait sesuai kebutuhan. Demikian pula, aplikasi dapat mengenkode jenis penampung 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.
Warisan
Subclass Langsung yang Diketahui: 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 penyelesaian 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 *
Kolom pointer yang dapat digunakan untuk data khusus aplikasi.
|
FinalizeBuffer
|
Pointer ke fungsi yang akan dipanggil saat TLVWriter diselesaikan.
|
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 penampung 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 ditulis ke dalam satu buffer output.
|
Init(PacketBuffer *buf, uint32_t maxLen)
|
void
Menginisialisasi objek TLVWriter untuk ditulis ke dalam PacketBuffer tunggal.
|
Init(PacketBuffer *buf, uint32_t maxLen, bool allowDiscontiguousBuffers)
|
void
Menginisialisasi objek TLVWriter untuk ditulis ke satu atau beberapa PacketBuffers.
|
InitMalloced(uint8_t *& outBuf, uint32_t initialBufSize, uint32_t maxLen)
|
void
Menginisialisasi objek TLVWriter untuk ditulis ke buffer dinamis.
|
OpenContainer(uint64_t tag, TLVType containerType, TLVWriter & containerWriter)
|
|
Put(uint64_t tag, int8_t v)
|
Mengenkode nilai bilangan bulat TLV yang ditandatangani.
|
Put(uint64_t tag, int8_t v, bool preserveSize)
|
Mengenkode nilai bilangan bulat TLV yang ditandatangani.
|
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 tidak bertanda TLV.
|
Put(uint64_t tag, uint8_t v, bool preserveSize)
|
Mengenkode nilai bilangan bulat tidak bertanda TLV.
|
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, ...)
|
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 bagian.
|
VPutStringF(uint64_t tag, const char *fmt, va_list ap)
|
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 PacketBuffers.
|
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 PacketBuffers.
|
Fungsi yang dilindungi |
|
---|---|
IsCloseContainerReserved(void) const
|
bool
Tentukan apakah container harus mencadangkan ruang untuk simbol CloseContainer pada titik awal / pembukaan container.
|
IsContainerOpen(void) const
|
bool
|
SetCloseContainerReserved(bool aCloseContainerReserved)
|
void
Tetapkan apakah container harus mencadangkan ruang untuk simbol CloseContainer pada titik awal / pembukaan container.
|
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
FinalBufferBufferFunct
WEAVE_ERROR(* FinalizeBufferFunct)(TLVWriter &writer, uintptr_t bufHandle, uint8_t *bufStart, uint32_t bufLen)
Fungsi yang digunakan untuk melakukan penyelesaian output dari objek TLVWriter.
Fungsi jenis ini dipanggil saat metode Finalize() TLVWriter' dipanggil. Fungsi ini diharapkan untuk melakukan pembersihan atau finalisasi yang diperlukan terkait dengan memakai output objek penulis. Contohnya mencakup hal-hal 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 bagi TLVWriter yang akan digunakan untuk menulis. Saat dipanggil, fungsi diharapkan menampilkan pointer ke lokasi memori tempat data baru harus ditulis, beserta panjang maksimum terkait. Fungsi ini dapat menyediakan ruang tulis dengan mengalokasikan buffer baru untuk menampung data atau dengan menghapus data yang sebelumnya ditulis dari buffer yang ada.
Detail | |||||||||
---|---|---|---|---|---|---|---|---|---|
Parameter |
|
||||||||
Nilai yang Ditampilkan |
|
Atribut publik
AppData
void * AppData
Kolom pointer yang dapat digunakan untuk data khusus aplikasi.
FinalizeBuffer
FinalizeBufferFunct FinalizeBuffer
Pointer ke fungsi yang akan dipanggil saat TLVWriter diselesaikan.
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 fungsi tersebut.
Lihat definisi jenis FinalizeBufferFunct untuk informasi tambahan tentang penerapan fungsi FinalizeBufferBuffer.
MendapatkanNewBuffer
GetNewBufferFunct GetNewBuffer
Pointer ke fungsi yang akan menyediakan ruang buffer output baru ke TLVWriter.
Objek TLVWriter akan memanggil fungsi GetNewBuffer setiap kali ada upaya untuk menulis data yang melebihi ukuran buffer output saat ini. Jika disetel ke NULL (nilai default), penulis akan menampilkan WEAVE_ERROR_NO_MEMORY jika data output melebihi buffer saat ini.
GetNewBuffer dapat ditetapkan oleh aplikasi kapan saja, tetapi biasanya ditetapkan ketika penulis diinisialisasi.
Lihat definisi jenis GetNewBufferFunct untuk informasi tambahan tentang implementasi fungsi GetNewBuffer.
IDProfilImplisit
uint32_t ImplicitProfileId
ID profil tag yang harus dienkode dalam bentuk implisit.
Ketika 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, menghapus id profil dalam prosesnya.
Secara default, properti ImplicitProfileId
disetel ke kProfileIdNotSpecified, yang menginstruksikan penulis untuk tidak membuat tag yang dienkode secara implisit. Aplikasi dapat menetapkan ImplicitProfileId
kapan saja untuk mengaktifkan tag encoding dalam bentuk implisit mulai dari titik saat ini dalam encoding. ID profil yang sesuai untuk ditetapkan biasanya bergantung pada konteks aplikasi atau protokol yang diucapkan.
Atribut yang dilindungi
Gagang mBuf
uintptr_t mBufHandle
mBufStart
uint8_t * mBufStart
JenismContainer
TLVType mContainerType
mLenDitulis
uint32_t mLenWritten
mMaxLen
uint32_t mMaxLen
MRemainingLen
uint32_t mRemainingLen
mWritePoint
uint8_t * mWritePoint
Fungsi publik
TutupPenampung
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 aplikasi OpenContainer() yang akan melakukan panggilan yang sesuai ke CloseContainer(), teruskan referensi ke penulis penampung yang sama ke kedua metode tersebut.
Saat CloseContainer() ditampilkan, aplikasi dapat terus menggunakan penulis induk untuk menulis elemen TLV tambahan yang muncul setelah elemen penampung. Pada tahap ini penulis penampung yang diberikan harus dipertimbangkan 'de-inisialisasi' dan tidak boleh digunakan tanpa inisialisasi ulang.
Detail | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parameter |
|
||||||||||||
Nilai yang Ditampilkan |
|
LanjutkanPutBytes
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 |
|
SalinPenampung
WEAVE_ERROR CopyContainer( TLVReader & container )
Menyalin elemen container TLV dari objek TLVReader.
CopyContainer() mengenkode elemen penampung TLV baru dengan menyalin elemen penampung yang telah dienkode sebelumnya yang terletak di posisi objek TLVReader saat ini. Metode ini menulis seluruh elemen penampung baru dalam satu panggilan, menyalin jenis penampung, tag, dan elemen dari encoding sumber. Saat metode ini ditampilkan, objek penulis dapat digunakan untuk menulis elemen TLV tambahan setelah elemen container.
Detail | |||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parameter |
|
||||||||||||||||||
Nilai yang Ditampilkan |
|
SalinPenampung
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. Ketika metode dipanggil, objek pembaca yang disediakan diharapkan diposisikan pada elemen container TLV. Container yang baru dienkode akan memiliki jenis dan anggota yang sama dengan container input. Tag untuk penampung baru ditetapkan sebagai parameter input.
Saat metode ini ditampilkan, objek penulis dapat digunakan untuk menulis elemen TLV tambahan setelah elemen container.
Detail | |||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parameter |
|
||||||||||||||||||
Nilai yang Ditampilkan |
|
SalinPenampung
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 dienkode sebelumnya. Saat metode dipanggil, data dalam buffer input yang disediakan diuraikan sebagai elemen penampung TLV. Container baru ditulis dengan jenis dan anggota yang sama dengan penampung input. Tag untuk penampung baru ditetapkan sebagai parameter input.
Saat metode ini ditampilkan, objek penulis dapat digunakan untuk menulis elemen TLV tambahan setelah elemen container.
Detail | |||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parameter |
|
||||||||||||||||
Nilai yang Ditampilkan |
|
SalinElemen
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 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 penampung TLV (struktur, array, atau jalur), seluruh konten penampung akan disalin.
Detail | |||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parameter |
|
||||||||||||||||||
Nilai yang Ditampilkan |
|
SalinElemen
WEAVE_ERROR CopyElement( uint64_t tag, TLVReader & reader )
WadahAkhir
WEAVE_ERROR EndContainer( TLVType outerContainerType )
Menyelesaikan encoding elemen penampung TLV.
Metode EndContainer() menyelesaikan encoding elemen container TLV dan memulihkan status objek TLVWrite setelah panggilan sebelumnya ke StartContainer(). Untuk setiap panggilan ke aplikasi StartContainer() harus melakukan panggilan yang sesuai ke EndContainer(), yang 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 buffering output yang mendasarinya. Metode harus dipanggil oleh aplikasi sebelum menggunakan konten buffer. Finalize() hanya dapat dipanggil jika tidak ada penulis penampung 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 tempat TLVWriter saat ini menulis. Jika TLVWriter tidak menulis elemen dalam container (yaitu, jika menulis di tingkat paling luar encoding) metode akan menampilkan kTLVType_NotSpecified.
Detail | |
---|---|
Menampilkan |
TLVType container saat ini, atau kTLVType_NotSpecified jika TLVWriter tidak menulis elemen dalam container.
|
GetLengthDitulis
uint32_t GetLengthWritten( void )
Menampilkan jumlah total byte yang ditulis sejak penulis diinisialisasi.
Detail | |
---|---|
Menampilkan |
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 )
Menginisialisasi objek TLVWriter untuk ditulis ke dalam PacketBuffer tunggal.
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 )
Menginisialisasi objek TLVWriter untuk ditulis ke satu atau beberapa PacketBuffers.
Penulisan dimulai segera setelah byte terakhir dari data yang ada dalam buffer yang ditentukan. Jika allowDiscontiguousBuffers
benar, PacketBuffer tambahan akan dialokasikan dan dirantai ke buffer yang disediakan sesuai kebutuhan untuk mengakomodasi jumlah data yang ditulis. Jika buffer output yang ditentukan telah menjadi kepala rantai buffer, output akan ditulis ke buffer berikutnya dalam rantai sebelum buffer baru dialokasikan.
Detail | |||||||
---|---|---|---|---|---|---|---|
Parameter |
|
Inisiatif
void InitMalloced( uint8_t *& outBuf, uint32_t initialBufSize, uint32_t maxLen )
Menginisialisasi objek TLVWriter untuk ditulis ke buffer dinamis.
Detail | |||||||
---|---|---|---|---|---|---|---|
Parameter |
|
Penampung Terbuka
WEAVE_ERROR OpenContainer( uint64_t tag, TLVType containerType, TLVWriter & containerWriter )
Menginisialisasi objek TLVWriter baru untuk menulis anggota elemen container TLV.
Metode OpenContainer() digunakan untuk menulis elemen penampung TLV (struktur, array, atau jalur) ke encoding. Metode ini mengambil jenis dan tag (jika ada) dari penampung baru, dan referensi ke objek penulis baru (penulis penampung) yang akan diinisialisasi untuk tujuan menulis elemen penampung. Aplikasi menulis anggota penampung baru menggunakan penulis penampung, lalu memanggil CloseContainer() untuk menyelesaikan encoding penampung.
Saat penulis penampung terbuka, aplikasi tidak boleh melakukan panggilan atau mengubah status penulis induk.
Penulis penampung mewarisi berbagai properti konfigurasi dari penulis induk. Karakter pengganti ini meliputi:
- ID profil implisit (implProfileProfileId)
- Pointer data aplikasi (AppData)
- Pointer fungsi GetNewBuffer dan FinalizeBuffer
Detail | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parameter |
|
||||||||||||||
Nilai yang Ditampilkan |
|
Letakkan
WEAVE_ERROR Put( uint64_t tag, int8_t v )
Mengenkode nilai bilangan bulat TLV yang ditandatangani.
Ini adalah fungsi anggota yang kelebihan beban, yang diberikan untuk memudahkan. Fungsi tersebut berbeda dengan fungsi di atas hanya dalam argumen apa yang diterima.
Detail | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parameter |
|
||||||||||||
Nilai yang Ditampilkan |
|
Letakkan
WEAVE_ERROR Put( uint64_t tag, int8_t v, bool preserveSize )
Mengenkode nilai bilangan bulat TLV yang ditandatangani.
Ini adalah fungsi anggota yang kelebihan beban, yang diberikan untuk memudahkan. Fungsi tersebut berbeda dengan fungsi di atas hanya dalam argumen apa yang diterima.
Detail | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parameter |
|
||||||||||||
Nilai yang Ditampilkan |
|
Letakkan
WEAVE_ERROR Put( uint64_t tag, int16_t v )
Letakkan
WEAVE_ERROR Put( uint64_t tag, int16_t v, bool preserveSize )
Letakkan
WEAVE_ERROR Put( uint64_t tag, int32_t v )
Letakkan
WEAVE_ERROR Put( uint64_t tag, int32_t v, bool preserveSize )
Letakkan
WEAVE_ERROR Put( uint64_t tag, int64_t v )
Letakkan
WEAVE_ERROR Put( uint64_t tag, int64_t v, bool preserveSize )
Letakkan
WEAVE_ERROR Put( uint64_t tag, uint8_t v )
Mengenkode nilai bilangan bulat tidak bertanda TLV.
Ini adalah fungsi anggota yang kelebihan beban, yang diberikan untuk memudahkan. Fungsi tersebut berbeda dengan fungsi di atas hanya dalam argumen apa yang diterima.
Detail | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parameter |
|
||||||||||||
Nilai yang Ditampilkan |
|
Letakkan
WEAVE_ERROR Put( uint64_t tag, uint8_t v, bool preserveSize )
Mengenkode nilai bilangan bulat tidak bertanda TLV.
Ini adalah fungsi anggota yang kelebihan beban, yang diberikan untuk memudahkan. Fungsi tersebut berbeda dengan fungsi di atas hanya dalam argumen apa yang diterima.
Detail | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parameter |
|
||||||||||||
Nilai yang Ditampilkan |
|
Letakkan
WEAVE_ERROR Put( uint64_t tag, uint16_t v )
Letakkan
WEAVE_ERROR Put( uint64_t tag, uint16_t v, bool preserveSize )
Letakkan
WEAVE_ERROR Put( uint64_t tag, uint32_t v )
Letakkan
WEAVE_ERROR Put( uint64_t tag, uint32_t v, bool preserveSize )
Letakkan
WEAVE_ERROR Put( uint64_t tag, uint64_t v )
Letakkan
WEAVE_ERROR Put( uint64_t tag, uint64_t v, bool preserveSize )
Letakkan
WEAVE_ERROR Put( uint64_t tag, float v )
Letakkan
WEAVE_ERROR Put( uint64_t tag, double v )
Mengenkode nilai floating point TLV.
Ini adalah fungsi anggota yang kelebihan beban, yang diberikan untuk memudahkan. Fungsi tersebut berbeda dengan fungsi di atas hanya dalam argumen apa 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 |
|
PutByte
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 buffering yang telah dienkode sebelumnya. Buffering input diharapkan berisi nol atau beberapa elemen TLV yang dienkodekan penuh, dengan tag yang sesuai dengan aturan yang dikaitkan dengan jenis penampung yang ditentukan (misalnya anggota struktur harus memiliki tag, sedangkan anggota array tidak boleh).
Metode ini mengenkode seluruh elemen container dalam satu panggilan. Saat PutPreEncodedContainer() ditampilkan, objek penulis dapat digunakan untuk menulis elemen TLV tambahan dengan mengikuti 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, ... )
Enkode output string yang diformat sesuai dengan format dalam elemen TLV.
PutStringF adalah analog dari sprintf, dengan output disimpan di elemen TLV, bukan buffering karakter. Jika fungsi cetak yang diperluas tersedia, fungsi ini dapat memperoleh output string hasil ke dalam penyimpanan pokok yang tidak terputus. Implementasi ini mendukung penyempurnaan cetakf berikut:
Platform ini 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 persis seperti vsnprintf, tetapi memiliki ketentuan untuk menghilangkan karakter n
pertama dari output.
Perhatikan bahwa meskipun fungsi berbasis callback mungkin yang paling sederhana dan menggunakan jumlah kode paling sedikit, variasi fungsi 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 menyediakan penyempurnaan untuk kelompok printf atau malloc, output akan dipotong agar sesuai dengan status berkelanjutan dalam penyimpanan TLV saat ini
Detail | |||||||
---|---|---|---|---|---|---|---|
Parameter |
|
||||||
Nilai yang Ditampilkan |
|
Penampung Start
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 container baru, dan referensi ke nilai TLVType yang akan digunakan untuk menyimpan konteks penulis saat ini saat digunakan untuk menulis container.
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 container.
Detail | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parameter |
|
||||||||||||||
Nilai yang Ditampilkan |
|
StartPutBytes
WEAVE_ERROR StartPutBytes( uint64_t tag, uint32_t totalLen )
Mengenkode string byte TLV dalam beberapa bagian.
Ini harus digunakan dengan ContinuePutBytes.
Detail | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parameter |
|
||||||||||||
Nilai yang Ditampilkan |
|
VStringString
WEAVE_ERROR VPutStringF( uint64_t tag, const char *fmt, va_list ap )
Enkode output string yang diformat sesuai dengan format dalam elemen TLV.
PutStringF adalah analog dari sprintf, dengan output disimpan di elemen TLV, bukan buffering karakter. Jika fungsi cetak yang diperluas tersedia, fungsi ini dapat memperoleh output string hasil ke dalam penyimpanan pokok yang tidak terputus. Implementasi ini mendukung penyempurnaan cetakf berikut:
Platform ini 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 persis seperti vsnprintf, tetapi memiliki ketentuan untuk menghilangkan karakter n
pertama dari output.
Perhatikan bahwa meskipun fungsi berbasis callback mungkin yang paling sederhana dan menggunakan jumlah kode paling sedikit, variasi fungsi 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 menyediakan penyempurnaan untuk kelompok printf atau malloc, output akan dipotong 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 PacketBuffers.
Fungsi FinalizePacketBuffer() melakukan finalisasi yang diperlukan saat menggunakan TLVWriter untuk menulis ke rantai PacketBuffers. Fungsi ini dirancang untuk digunakan bersama dengan fungsi GetNewPacketBuffer().
Lihat definisi jenis FinalizeBufferFunct untuk 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 informasi tambahan pada 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 PacketBuffers.
Fungsi GetNewPacketBuffer() menyediakan ruang output baru ke TLVWriter dengan mengalokasikan rantai satu atau beberapa PacketBuffers yang diperlukan untuk menyimpan encoding. Fungsi ini dirancang untuk ditetapkan ke pointer fungsi GetNewBuffer TLVWriter.
Perhatikan bahwa saat menggunakan GetNewPacketBuffer dengan TLVWriter, fungsi FinalizePacketBuffer() (atau yang setara) yang sesuai juga harus digunakan untuk menyelesaikan rantai buffer.
Lihat definisi jenis GetNewBufferFunct untuk informasi tambahan pada API fungsi GetNewPacketBuffer().
Fungsi yang dilindungi
IsContainerContainerReserved
bool IsCloseContainerReserved( void ) const
Tentukan apakah container harus mencadangkan ruang untuk simbol CloseContainer pada titik awal / pembukaan container.
PenampungTerbuka
bool IsContainerOpen( void ) const
SetCloseContainerReserved
void SetCloseContainerReserved( bool aCloseContainerReserved )
Tetapkan apakah container harus mencadangkan ruang untuk simbol CloseContainer pada titik awal / pembukaan container.
SetContainerOpen
void SetContainerOpen( bool aContainerOpen )
TulisData
WEAVE_ERROR WriteData( const uint8_t *p, uint32_t len )
WriteElementHead
WEAVE_ERROR WriteElementHead( TLVElementType elemType, uint64_t tag, uint64_t lenOrVal )
TulisElemenDenganData
WEAVE_ERROR WriteElementWithData( TLVType type, uint64_t tag, const uint8_t *data, uint32_t dataLen )