nl:: Weave:: TLV:: TLVWriter
#include <src/lib/core/WeaveTLV.h>
มีโปรแกรมเปลี่ยนไฟล์ที่มีประสิทธิภาพด้านหน่วยความจำสำหรับการเขียนข้อมูลในรูปแบบ Weave TLV
สรุป
TLVWriter ใช้โปรแกรมเปลี่ยนไฟล์แบบไปข้างหน้าเท่านั้นสำหรับข้อมูล TLV ของ Weave แอปพลิเคชันจะเขียนข้อมูลลงในการเข้ารหัสโดยเรียกใช้เมธอด Put() ของผู้เขียนวิธีหนึ่ง ส่งผ่านข้อมูลแท็กและค่าที่เกี่ยวข้องตามที่จำเป็น ในทำนองเดียวกัน แอปพลิเคชันสามารถเข้ารหัสประเภทคอนเทนเนอร์ TLV (โครงสร้าง อาร์เรย์ หรือเส้นทาง) โดยเรียกใช้เมธอด OpenContainer() หรือ EnterContainer() ของผู้เขียน
ออบเจ็กต์ TLVWriter เขียนข้อมูลไปยังบัฟเฟอร์เอาต์พุตแบบคงที่ได้โดยตรง หรือเขียนไปยังเชนของออบเจ็กต์ PacketBuffer อย่างน้อย 1 รายการได้ นอกจากนี้ แอปพลิเคชันยังสามารถจัดหาฟังก์ชัน GetNewBuffer
และ FinalizeBuffer
ของตนเองเพื่อนำเอาต์พุตไปยังปลายทางที่กำหนดเอง เช่น ซ็อกเก็ตหรือคิวกิจกรรม
การสืบทอด
คลาสย่อยที่รู้จักโดยตรง: nl::Weave::TLV::CircularTLVWriter
ประเภทที่ได้รับการป้องกัน |
|
---|---|
@72{
|
enum |
ประเภทสาธารณะ |
|
---|---|
FinalizeBufferFunct)(TLVWriter &writer, uintptr_t bufHandle, uint8_t *bufStart, uint32_t bufLen)
|
WEAVE_ERROR(*) ฟังก์ชันที่ใช้เพื่อสรุปเอาต์พุตจากออบเจ็กต์ TLVWriter |
GetNewBufferFunct)(TLVWriter &writer, uintptr_t &bufHandle, uint8_t *&bufStart, uint32_t &bufLen)
|
WEAVE_ERROR(*) ฟังก์ชันที่เพิ่มพื้นที่บัฟเฟอร์เอาต์พุตใหม่ให้กับ TLVWriter |
แอตทริบิวต์สาธารณะ |
|
---|---|
AppData
|
void *
ฟิลด์ตัวชี้ที่สามารถใช้สำหรับข้อมูลเฉพาะแอปพลิเคชัน
|
FinalizeBuffer
|
ตัวชี้ไปยังฟังก์ชันที่จะถูกเรียกเมื่อเสร็จสิ้น TLVWriter แล้ว
|
GetNewBuffer
|
ตัวชี้ไปยังฟังก์ชันที่จะจัดพื้นที่บัฟเฟอร์เอาต์พุตใหม่ให้กับ TLVWriter
|
ImplicitProfileId
|
uint32_t
รหัสโปรไฟล์ของแท็กที่ควรเข้ารหัสในรูปแบบโดยนัย
|
แอตทริบิวต์ที่ได้รับการปกป้อง |
|
---|---|
mBufHandle
|
uintptr_t
|
mBufStart
|
uint8_t *
|
mContainerType
|
|
mLenWritten
|
uint32_t
|
mMaxLen
|
uint32_t
|
mRemainingLen
|
uint32_t
|
mWritePoint
|
uint8_t *
|
ฟังก์ชันสาธารณะ |
|
---|---|
CloseContainer(TLVWriter & containerWriter)
|
เขียนคอนเทนเนอร์ TLV ให้เสร็จสิ้นหลังจากเรียก OpenContainer()
|
ContinuePutBytes(const uint8_t *buf, uint32_t len)
|
เข้ารหัสค่าสตริงไบต์ TLV
|
CopyContainer(TLVReader & container)
|
|
CopyContainer(uint64_t tag, TLVReader & container)
|
เข้ารหัสองค์ประกอบคอนเทนเนอร์ TLV จากชุดองค์ประกอบสมาชิกที่เข้ารหัสล่วงหน้า
|
CopyContainer(uint64_t tag, const uint8_t *encodedContainer, uint16_t encodedContainerLen)
|
เข้ารหัสองค์ประกอบคอนเทนเนอร์ TLV ที่มีองค์ประกอบสมาชิกจากคอนเทนเนอร์ที่เข้ารหัสล่วงหน้า
|
CopyElement(TLVReader & reader)
|
คัดลอกองค์ประกอบ TLV จากออบเจ็กต์ Reader ลงในผู้เขียน
|
CopyElement(uint64_t tag, TLVReader & reader)
|
|
EndContainer(TLVType outerContainerType)
|
ดำเนินการเข้ารหัสองค์ประกอบคอนเทนเนอร์ TLV ให้เสร็จสมบูรณ์
|
Finalize(void)
|
เขียนการเข้ารหัส TLV ให้เสร็จสิ้น
|
GetContainerType(void) const
|
แสดงผลประเภทคอนเทนเนอร์ที่ TLVWriter กำลังเขียนอยู่
|
GetLengthWritten(void)
|
uint32_t
แสดงผลจำนวนไบต์ทั้งหมดที่เขียนตั้งแต่เริ่มต้นผู้เขียน
|
Init(uint8_t *buf, uint32_t maxLen)
|
void
เริ่มต้นออบเจ็กต์ TLVWriter เพื่อเขียนลงในบัฟเฟอร์เอาต์พุตเดี่ยว
|
Init(PacketBuffer *buf, uint32_t maxLen)
|
void
เริ่มต้นออบเจ็กต์ TLVWriter เพื่อเขียนลงใน PacketBuffer เดียว
|
Init(PacketBuffer *buf, uint32_t maxLen, bool allowDiscontiguousBuffers)
|
void
เริ่มต้นออบเจ็กต์ TLVWriter เพื่อเขียนลงใน PacketBuffers อย่างน้อย 1 รายการ
|
InitMalloced(uint8_t *& outBuf, uint32_t initialBufSize, uint32_t maxLen)
|
void
เริ่มต้นออบเจ็กต์ TLVWriter เพื่อเขียนลงในบัฟเฟอร์แบบไดนามิก
|
OpenContainer(uint64_t tag, TLVType containerType, TLVWriter & containerWriter)
|
|
Put(uint64_t tag, int8_t v)
|
เข้ารหัสค่าจำนวนเต็มแบบมีเครื่องหมาย TLV
|
Put(uint64_t tag, int8_t v, bool preserveSize)
|
เข้ารหัสค่าจำนวนเต็มแบบมีเครื่องหมาย 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)
|
เข้ารหัสค่าจำนวนเต็มที่ไม่มีเครื่องหมาย TLV
|
Put(uint64_t tag, uint8_t v, bool preserveSize)
|
เข้ารหัสค่าจำนวนเต็มที่ไม่มีเครื่องหมาย 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)
|
เข้ารหัสค่าจุดลอยตัว TLV
|
PutBoolean(uint64_t tag, bool v)
|
เข้ารหัสค่าบูลีน TLV
|
PutBytes(uint64_t tag, const uint8_t *buf, uint32_t len)
|
เข้ารหัสค่าสตริงไบต์ TLV
|
PutNull(uint64_t tag)
|
เข้ารหัสค่า Null TLV
|
PutPreEncodedContainer(uint64_t tag, TLVType containerType, const uint8_t *data, uint32_t dataLen)
|
เข้ารหัสองค์ประกอบคอนเทนเนอร์ TLV จากชุดองค์ประกอบสมาชิกที่เข้ารหัสล่วงหน้า
|
PutString(uint64_t tag, const char *buf)
|
เข้ารหัสค่าสตริง UTF8 TLV
|
PutString(uint64_t tag, const char *buf, uint32_t len)
|
เข้ารหัสค่าสตริง UTF8 TLV
|
PutStringF(uint64_t tag, const char *fmt, ...)
|
เข้ารหัสเอาต์พุตสตริงที่จัดรูปแบบตามรูปแบบในองค์ประกอบ TLV
|
StartContainer(uint64_t tag, TLVType containerType, TLVType & outerContainerType)
|
เริ่มการเข้ารหัสองค์ประกอบคอนเทนเนอร์ TLV ใหม่
|
StartPutBytes(uint64_t tag, uint32_t totalLen)
|
เข้ารหัสสตริงไบต์ TLV แบบหลายรายการ
|
VPutStringF(uint64_t tag, const char *fmt, va_list ap)
|
เข้ารหัสเอาต์พุตสตริงที่จัดรูปแบบตามรูปแบบในองค์ประกอบ TLV
|
ฟังก์ชันแบบคงที่แบบสาธารณะ |
|
---|---|
FinalizePacketBuffer(TLVWriter & writer, uintptr_t bufHandle, uint8_t *bufStart, uint32_t dataLen)
|
การใช้งานฟังก์ชัน TLVWriter FinalizeBuffer สำหรับการเขียนเชนของ PacketBuffers
|
GetNewBuffer_Malloced(TLVWriter & writer, uintptr_t & bufHandle, uint8_t *& bufStart, uint32_t & bufLen)
|
การใช้งานฟังก์ชัน GetNewBuffer TLVWriter สำหรับการเขียนไปยังบัฟเฟอร์แบบไดนามิก
|
GetNewPacketBuffer(TLVWriter & writer, uintptr_t & bufHandle, uint8_t *& bufStart, uint32_t & bufLen)
|
การใช้ฟังก์ชัน GetNewBuffer ของ TLVWriter สำหรับการเขียนในเชนของ PacketBuffers
|
ฟังก์ชันที่มีการป้องกัน |
|
---|---|
IsCloseContainerReserved(void) const
|
bool
กำหนดว่าคอนเทนเนอร์ควรสงวนพื้นที่สำหรับสัญลักษณ์ CloseContainer เมื่อเริ่มต้น / เปิดคอนเทนเนอร์หรือไม่
|
IsContainerOpen(void) const
|
bool
|
SetCloseContainerReserved(bool aCloseContainerReserved)
|
void
กำหนดว่าคอนเทนเนอร์ควรสงวนพื้นที่สำหรับสัญลักษณ์ CloseContainer ที่จุดเริ่มต้น / เปิดคอนเทนเนอร์หรือไม่
|
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)
|
ประเภทที่ได้รับการป้องกัน
@72
@72
ประเภทสาธารณะ
FinalizeBufferFunct
WEAVE_ERROR(* FinalizeBufferFunct)(TLVWriter &writer, uintptr_t bufHandle, uint8_t *bufStart, uint32_t bufLen)
ฟังก์ชันที่ใช้เพื่อสรุปเอาต์พุตจากออบเจ็กต์ TLVWriter
ระบบจะเรียกใช้ฟังก์ชันประเภทนี้เมื่อมีการเรียกใช้เมธอด Finalize() ของ TLVWriter คาดว่าฟังก์ชันนี้จะทําการล้างข้อมูลหรือการสรุปที่จําเป็นใดๆ ที่เกี่ยวข้องกับการใช้เอาต์พุตของออบเจ็กต์ผู้เขียน ตัวอย่างของกรณีนี้ก็เช่น การบันทึกความยาวสุดท้ายของการเข้ารหัส หรือการปิดข้อบ่งชี้ไฟล์
รายละเอียด | |||||||||
---|---|---|---|---|---|---|---|---|---|
พารามิเตอร์ |
|
||||||||
แสดงผลค่า |
|
GetNewBufferFunct
WEAVE_ERROR(* GetNewBufferFunct)(TLVWriter &writer, uintptr_t &bufHandle, uint8_t *&bufStart, uint32_t &bufLen)
ฟังก์ชันที่เพิ่มพื้นที่บัฟเฟอร์เอาต์พุตใหม่ให้กับ TLVWriter
ฟังก์ชันประเภทนี้ใช้ในการเตรียมพื้นที่บัฟเฟอร์ใหม่เพื่อให้ TLVWriter เขียนข้อมูล เมื่อเรียกใช้ ฟังก์ชันจะต้องส่งคืนตัวชี้ไปยังตำแหน่งหน่วยความจำที่ควรเขียนข้อมูลใหม่ พร้อมกับความยาวสูงสุดที่เกี่ยวข้อง ฟังก์ชันนี้สามารถจัดสรรพื้นที่ในการเขียนโดยการจัดสรรบัฟเฟอร์ใหม่เพื่อใช้เก็บข้อมูล หรือโดยการล้างข้อมูลที่เขียนไว้ก่อนหน้านี้ออกจากบัฟเฟอร์ที่มีอยู่
รายละเอียด | |||||||||
---|---|---|---|---|---|---|---|---|---|
พารามิเตอร์ |
|
||||||||
แสดงผลค่า |
|
แอตทริบิวต์สาธารณะ
AppData
void * AppData
ฟิลด์ตัวชี้ที่สามารถใช้สำหรับข้อมูลเฉพาะแอปพลิเคชัน
FinalizeBuffer
FinalizeBufferFunct FinalizeBuffer
ตัวชี้ไปยังฟังก์ชันที่จะถูกเรียกเมื่อเสร็จสิ้น TLVWriter แล้ว
ออบเจ็กต์ TLVWriter จะเรียกฟังก์ชัน FinalizeBuffer เมื่อมีการเรียกใช้เมธอด Finalize() แอปพลิเคชันสามารถตั้งค่าตัวชี้ฟังก์ชันที่จุดใดก็ได้ก่อนเรียกใช้ Finalize() และตามค่าเริ่มต้น ตัวชี้จะตั้งค่าเป็น NULL ซึ่งทำให้เมธอด Finalize() ไม่สนใจการเรียกฟังก์ชันนั้น
ดูคำจำกัดความประเภท FinalizeBufferFunct เพื่อดูข้อมูลเพิ่มเติมเกี่ยวกับการติดตั้งใช้งานฟังก์ชัน FinalizeBuffer
GetNewBuffer
GetNewBufferFunct GetNewBuffer
ตัวชี้ไปยังฟังก์ชันที่จะจัดพื้นที่บัฟเฟอร์เอาต์พุตใหม่ให้กับ TLVWriter
ออบเจ็กต์ TLVWriter จะเรียกฟังก์ชัน GetNewBuffer เมื่อมีการพยายามเขียนข้อมูลที่เกินขนาดของบัฟเฟอร์เอาต์พุตปัจจุบัน หากตั้งค่าเป็น NULL (ค่าเริ่มต้น) ผู้เขียนจะแสดงค่า WEAVE_ERROR_NO_MEMORY หากข้อมูลเอาต์พุตเกินบัฟเฟอร์ปัจจุบัน
แอปพลิเคชันสามารถตั้ง GetNewBuffer ได้ทุกเมื่อ แต่โดยปกติแล้วจะมีการตั้งค่าเมื่อเริ่มต้นผู้เขียน
ดูคำจำกัดความประเภท GetNewBufferFunct สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการใช้งานฟังก์ชัน GetNewBuffer
ImplicitProfileId
uint32_t ImplicitProfileId
รหัสโปรไฟล์ของแท็กที่ควรเข้ารหัสในรูปแบบโดยนัย
เมื่อมีการขอให้ผู้เขียนเข้ารหัสองค์ประกอบใหม่ หากรหัสโปรไฟล์ของแท็กที่เชื่อมโยงกับองค์ประกอบใหม่ตรงกับค่าของสมาชิก ImplicitProfileId
ผู้เขียนจะเข้ารหัสแท็กในรูปแบบโดยนัย โดยไม่รวมรหัสโปรไฟล์ในขั้นตอนนี้
โดยค่าเริ่มต้น พร็อพเพอร์ตี้ ImplicitProfileId
จะตั้งค่าเป็น kProfileIdNotSpecified ซึ่งจะบอกผู้เขียนไม่ให้ปล่อยแท็กที่เข้ารหัสแบบโดยนัย แอปพลิเคชันสามารถตั้งค่า ImplicitProfileId
ได้ทุกเมื่อเพื่อเปิดใช้แท็กการเข้ารหัสในรูปแบบโดยนัยโดยเริ่มจากจุดปัจจุบันของการเข้ารหัส รหัสโปรไฟล์ที่เหมาะสมที่จะตั้งมักจะขึ้นอยู่กับบริบทของแอปพลิเคชันหรือโปรโตคอลที่พูด
แอตทริบิวต์ที่ได้รับการปกป้อง
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
ฟังก์ชันสาธารณะ
CloseContainer
WEAVE_ERROR CloseContainer( TLVWriter & containerWriter )
เขียนคอนเทนเนอร์ TLV ให้เสร็จสิ้นหลังจากเรียก OpenContainer()
เมธอด CloseContainer() จะคืนค่าสถานะของออบเจ็กต์ TLVWriter หลักหลังจากเรียกไปยัง OpenContainer() สำหรับทุกการเรียกไปยังแอปพลิเคชัน OpenContainer() ต้องเรียกแอปพลิเคชัน CloseContainer() ที่สอดคล้องกัน โดยส่งผ่านการอ้างอิงไปยังผู้เขียนคอนเทนเนอร์เดียวกันไปยังทั้ง 2 เมธอด
เมื่อ CloseContainer() กลับมา แอปพลิเคชันอาจใช้ตัวเขียนระดับบนสุดเพื่อเขียนองค์ประกอบ TLV เพิ่มเติมซึ่งปรากฏหลังจากองค์ประกอบคอนเทนเนอร์ต่อไป ณ จุดนี้ ตัวเขียนคอนเทนเนอร์ที่ให้ไว้ควรถือว่า "ยังไม่เริ่มต้น" และต้องไม่นำมาใช้โดยไม่ได้เริ่มต้นอีกครั้ง
รายละเอียด | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
พารามิเตอร์ |
|
||||||||||||
แสดงผลค่า |
|
ContinuePutBytes
WEAVE_ERROR ContinuePutBytes( const uint8_t *buf, uint32_t len )
เข้ารหัสค่าสตริงไบต์ TLV
ซึ่งควรใช้กับ StartPutBytes
รายละเอียด | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
พารามิเตอร์ |
|
||||||||||||
แสดงผลค่า |
|
CopyContainer
WEAVE_ERROR CopyContainer( TLVReader & container )
คัดลอกองค์ประกอบคอนเทนเนอร์ TLV จากออบเจ็กต์ TLVReader
CopyContainer() เข้ารหัสองค์ประกอบคอนเทนเนอร์ TLV ใหม่โดยคัดลอกองค์ประกอบคอนเทนเนอร์ที่เข้ารหัสล่วงหน้าซึ่งอยู่ที่ตำแหน่งปัจจุบันของออบเจ็กต์ TLVReader เมธอดจะเขียนองค์ประกอบคอนเทนเนอร์ใหม่ทั้งหมดในการเรียกใช้ครั้งเดียว โดยคัดลอกประเภท แท็ก และองค์ประกอบของคอนเทนเนอร์จากการเข้ารหัสต้นทาง เมื่อแสดงผลเมธอด ระบบจะใช้ออบเจ็กต์ผู้เขียนเพื่อเขียนองค์ประกอบ TLV เพิ่มเติมตามหลังองค์ประกอบคอนเทนเนอร์
รายละเอียด | |||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
พารามิเตอร์ |
|
||||||||||||||||||
แสดงผลค่า |
|
CopyContainer
WEAVE_ERROR CopyContainer( uint64_t tag, TLVReader & container )
เข้ารหัสองค์ประกอบคอนเทนเนอร์ TLV จากชุดองค์ประกอบสมาชิกที่เข้ารหัสล่วงหน้า
เมธอด CopyContainer() เข้ารหัสองค์ประกอบคอนเทนเนอร์ TLV ใหม่ (โครงสร้าง อาร์เรย์ หรือเส้นทาง) ที่มีชุดองค์ประกอบสมาชิกที่มาจากออบเจ็กต์ TLVReader เมื่อมีการเรียกใช้เมธอด ออบเจ็กต์เครื่องอ่านที่ให้มาควรจะอยู่ในตำแหน่งบนองค์ประกอบคอนเทนเนอร์ TLV คอนเทนเนอร์ที่เข้ารหัสใหม่จะมีประเภทและสมาชิกเหมือนกับคอนเทนเนอร์อินพุต แท็กสำหรับคอนเทนเนอร์ใหม่จะระบุเป็นพารามิเตอร์อินพุต
เมื่อแสดงผลเมธอด ระบบจะใช้ออบเจ็กต์ผู้เขียนเพื่อเขียนองค์ประกอบ TLV เพิ่มเติมตามหลังองค์ประกอบคอนเทนเนอร์
รายละเอียด | |||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
พารามิเตอร์ |
|
||||||||||||||||||
แสดงผลค่า |
|
CopyContainer
WEAVE_ERROR CopyContainer( uint64_t tag, const uint8_t *encodedContainer, uint16_t encodedContainerLen )
เข้ารหัสองค์ประกอบคอนเทนเนอร์ TLV ที่มีองค์ประกอบสมาชิกจากคอนเทนเนอร์ที่เข้ารหัสล่วงหน้า
เมธอด CopyContainer() เข้ารหัสองค์ประกอบคอนเทนเนอร์ TLV ใหม่ (โครงสร้าง อาร์เรย์ หรือเส้นทาง) ที่มีชุดองค์ประกอบสมาชิกซึ่งได้มาจากเนื้อหาของคอนเทนเนอร์ที่เข้ารหัสล่วงหน้าที่ให้มา เมื่อมีการเรียกเมธอด ข้อมูลในบัฟเฟอร์อินพุตที่ระบุจะได้รับการแยกวิเคราะห์เป็นองค์ประกอบคอนเทนเนอร์ TLV โดยจะเขียนคอนเทนเนอร์ใหม่ที่มีประเภทและสมาชิกเหมือนกับคอนเทนเนอร์อินพุต แท็กสำหรับคอนเทนเนอร์ใหม่จะระบุเป็นพารามิเตอร์อินพุต
เมื่อแสดงผลเมธอด ระบบจะใช้ออบเจ็กต์ผู้เขียนเพื่อเขียนองค์ประกอบ TLV เพิ่มเติมตามหลังองค์ประกอบคอนเทนเนอร์
รายละเอียด | |||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
พารามิเตอร์ |
|
||||||||||||||||
แสดงผลค่า |
|
CopyElement
WEAVE_ERROR CopyElement( TLVReader & reader )
คัดลอกองค์ประกอบ TLV จากออบเจ็กต์ Reader ลงในผู้เขียน
เมธอด CopyElement() เข้ารหัสองค์ประกอบ TLV ใหม่ที่มีการนำประเภท แท็ก และค่ามาจากออบเจ็กต์ TLVReader เมื่อมีการเรียกใช้เมธอด ออบเจ็กต์ Reader ที่ให้ไว้ควรจะอยู่ในตำแหน่งองค์ประกอบ TLV ของแหล่งที่มา องค์ประกอบที่เข้ารหัสใหม่จะมีประเภท แท็ก และเนื้อหาเหมือนกับคอนเทนเนอร์อินพุต หากองค์ประกอบที่ระบุเป็นคอนเทนเนอร์ TLV (โครงสร้าง อาร์เรย์ หรือเส้นทาง) ระบบจะคัดลอกเนื้อหาทั้งหมดของคอนเทนเนอร์
รายละเอียด | |||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
พารามิเตอร์ |
|
||||||||||||||||||
แสดงผลค่า |
|
CopyElement
WEAVE_ERROR CopyElement( uint64_t tag, TLVReader & reader )
EndContainer
WEAVE_ERROR EndContainer( TLVType outerContainerType )
ดำเนินการเข้ารหัสองค์ประกอบคอนเทนเนอร์ TLV ให้เสร็จสมบูรณ์
เมธอด EndContainer() จะเข้ารหัสองค์ประกอบคอนเทนเนอร์ TLV จนเสร็จสมบูรณ์ และคืนค่าสถานะของออบเจ็กต์ TLVWrite หลังจากการเรียกใช้ก่อนหน้านี้ไปยัง StartContainer() ทุกครั้งที่เรียกแอปพลิเคชัน StartContainer() ต้องเรียกที่เกี่ยวข้องไปยัง EndContainer() โดยส่งผ่านค่า TLVType ที่แสดงผลโดยการเรียก StartContainer() เมื่อ EndContainer() กลับมา คุณจะใช้ออบเจ็กต์ผู้เขียนเพื่อเขียนองค์ประกอบ TLV เพิ่มเติมซึ่งตามหลังองค์ประกอบคอนเทนเนอร์ได้
รายละเอียด | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
พารามิเตอร์ |
|
||||||||||||
แสดงผลค่า |
|
ทำให้สิ้นสุด
WEAVE_ERROR Finalize( void )
เขียนการเข้ารหัส TLV ให้เสร็จสิ้น
เมธอด Finalize() จะทำให้กระบวนการเขียนการเข้ารหัส TLV เสร็จสมบูรณ์ลงในบัฟเฟอร์เอาต์พุตเบื้องหลัง แอปพลิเคชันต้องเรียกใช้เมธอดก่อนที่จะใช้เนื้อหาในบัฟเฟอร์ สามารถเรียกใช้ Finalize() ได้ต่อเมื่อไม่มีตัวเขียนคอนเทนเนอร์เปิดอยู่สำหรับตัวเขียนปัจจุบัน (ดู OpenContainer()
)
รายละเอียด | |||||||
---|---|---|---|---|---|---|---|
แสดงผลค่า |
|
GetContainerType
TLVType GetContainerType( void ) const
แสดงผลประเภทคอนเทนเนอร์ที่ TLVWriter กำลังเขียนอยู่
เมธอด GetContainerType() จะแสดงผลประเภทคอนเทนเนอร์ TLV ที่ TLVWriter เขียนอยู่ในปัจจุบัน หาก TLVWriter ไม่เขียนองค์ประกอบภายในคอนเทนเนอร์ (นั่นคือ หากเขียนที่ระดับด้านนอกสุดของการเข้ารหัส) เมธอดจะแสดงผลเป็น kTLVType_NotSpecified
รายละเอียด | |
---|---|
การส่งคืน |
TLVType ของคอนเทนเนอร์ปัจจุบัน หรือ kTLVType_NotSpecified หาก TLVWriter ไม่ได้เขียนองค์ประกอบภายในคอนเทนเนอร์
|
GetLengthWritten
uint32_t GetLengthWritten( void )
แสดงผลจำนวนไบต์ทั้งหมดที่เขียนตั้งแต่เริ่มต้นผู้เขียน
รายละเอียด | |
---|---|
การส่งคืน |
จำนวนไบต์ทั้งหมดที่เขียนตั้งแต่เริ่มต้นผู้เขียน
|
เริ่มต้น
void Init( uint8_t *buf, uint32_t maxLen )
เริ่มต้น
void Init( PacketBuffer *buf, uint32_t maxLen )
เริ่มต้น
void Init( PacketBuffer *buf, uint32_t maxLen, bool allowDiscontiguousBuffers )
เริ่มต้นออบเจ็กต์ TLVWriter เพื่อเขียนลงใน PacketBuffers อย่างน้อย 1 รายการ
การเขียนจะเริ่มขึ้นทันทีหลังจากไบต์สุดท้ายของข้อมูลที่มีอยู่ในบัฟเฟอร์ที่ระบุ หาก allowDiscontiguousBuffers
เป็นจริง ระบบจะจัดสรร PacketBuffers เพิ่มเติมและเชนไปยังบัฟเฟอร์ที่ให้ไว้ตามความจำเป็นเพื่อรองรับจำนวนข้อมูลที่เขียน หากบัฟเฟอร์เอาต์พุตที่ระบุเป็นส่วนหัวของเชนบัฟเฟอร์อยู่แล้ว ระบบจะเขียนเอาต์พุตไปยังบัฟเฟอร์ที่ตามมาในเชนก่อนที่จะมีการจัดสรรบัฟเฟอร์ใหม่
รายละเอียด | |||||||
---|---|---|---|---|---|---|---|
พารามิเตอร์ |
|
InitMalloced
void InitMalloced( uint8_t *& outBuf, uint32_t initialBufSize, uint32_t maxLen )
เริ่มต้นออบเจ็กต์ TLVWriter เพื่อเขียนลงในบัฟเฟอร์แบบไดนามิก
รายละเอียด | |||||||
---|---|---|---|---|---|---|---|
พารามิเตอร์ |
|
OpenContainer
WEAVE_ERROR OpenContainer( uint64_t tag, TLVType containerType, TLVWriter & containerWriter )
เริ่มต้นออบเจ็กต์ TLVWriter ใหม่สำหรับเขียนสมาชิกขององค์ประกอบคอนเทนเนอร์ TLV
เมธอด OpenContainer() ใช้ในการเขียนเอลิเมนต์คอนเทนเนอร์ TLV (โครงสร้าง อาร์เรย์ หรือเส้นทาง) ไปยังการเข้ารหัส เมธอดจะใช้ประเภทและแท็ก (หากมี) ของคอนเทนเนอร์ใหม่ และการอ้างอิงไปยังออบเจ็กต์ตัวเขียนใหม่ (ผู้เขียนคอนเทนเนอร์) ที่จะเริ่มต้นเพื่อวัตถุประสงค์ในการเขียนองค์ประกอบของคอนเทนเนอร์ แอปพลิเคชันจะเขียนสมาชิกของคอนเทนเนอร์ใหม่โดยใช้ตัวเขียนคอนเทนเนอร์ จากนั้นเรียกใช้ CloseContainer() เพื่อเข้ารหัสคอนเทนเนอร์ให้สมบูรณ์
ขณะที่ผู้เขียนคอนเทนเนอร์เปิดอยู่ แอปพลิเคชันจะต้องไม่เรียกใช้หรือเปลี่ยนสถานะของผู้เขียนหลัก
ตัวเขียนคอนเทนเนอร์จะรับค่าพร็อพเพอร์ตี้การกําหนดค่าที่หลากหลายจากตัวเขียนระดับบนสุด ได้แก่
- รหัสโปรไฟล์โดยนัย (ImplicitProfileId)
- ตัวชี้ข้อมูลแอปพลิเคชัน (AppData)
- ตัวชี้ฟังก์ชัน GetNewBuffer และ FinalizeBuffer
รายละเอียด | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
พารามิเตอร์ |
|
||||||||||||||
แสดงผลค่า |
|
วาง
WEAVE_ERROR Put( uint64_t tag, int8_t v )
เข้ารหัสค่าจำนวนเต็มแบบมีเครื่องหมาย TLV
ฟังก์ชันนี้เป็นฟังก์ชันสำหรับสมาชิกที่มีการใช้งานมากเกินไป ซึ่งมีไว้เพื่ออำนวยความสะดวกให้แก่คุณ ซึ่งจะแตกต่างจากฟังก์ชันข้างต้นตรงที่อาร์กิวเมนต์ที่ยอมรับเท่านั้น
รายละเอียด | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
พารามิเตอร์ |
|
||||||||||||
แสดงผลค่า |
|
วาง
WEAVE_ERROR Put( uint64_t tag, int8_t v, bool preserveSize )
เข้ารหัสค่าจำนวนเต็มแบบมีเครื่องหมาย TLV
ฟังก์ชันนี้เป็นฟังก์ชันสำหรับสมาชิกที่มีการใช้งานมากเกินไป ซึ่งมีไว้เพื่ออำนวยความสะดวกให้แก่คุณ ซึ่งจะแตกต่างจากฟังก์ชันข้างต้นตรงที่อาร์กิวเมนต์ที่ยอมรับเท่านั้น
รายละเอียด | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
พารามิเตอร์ |
|
||||||||||||
แสดงผลค่า |
|
วาง
WEAVE_ERROR Put( uint64_t tag, int16_t v )
วาง
WEAVE_ERROR Put( uint64_t tag, int16_t v, bool preserveSize )
วาง
WEAVE_ERROR Put( uint64_t tag, int32_t v )
วาง
WEAVE_ERROR Put( uint64_t tag, int32_t v, bool preserveSize )
วาง
WEAVE_ERROR Put( uint64_t tag, int64_t v )
วาง
WEAVE_ERROR Put( uint64_t tag, int64_t v, bool preserveSize )
วาง
WEAVE_ERROR Put( uint64_t tag, uint8_t v )
เข้ารหัสค่าจำนวนเต็มที่ไม่มีเครื่องหมาย TLV
ฟังก์ชันนี้เป็นฟังก์ชันสำหรับสมาชิกที่มีการใช้งานมากเกินไป ซึ่งมีไว้เพื่ออำนวยความสะดวกให้แก่คุณ ซึ่งจะแตกต่างจากฟังก์ชันข้างต้นตรงที่อาร์กิวเมนต์ที่ยอมรับเท่านั้น
รายละเอียด | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
พารามิเตอร์ |
|
||||||||||||
แสดงผลค่า |
|
วาง
WEAVE_ERROR Put( uint64_t tag, uint8_t v, bool preserveSize )
เข้ารหัสค่าจำนวนเต็มที่ไม่มีเครื่องหมาย TLV
ฟังก์ชันนี้เป็นฟังก์ชันสำหรับสมาชิกที่มีการใช้งานมากเกินไป ซึ่งมีไว้เพื่ออำนวยความสะดวกให้แก่คุณ ซึ่งจะแตกต่างจากฟังก์ชันข้างต้นตรงที่อาร์กิวเมนต์ที่ยอมรับเท่านั้น
รายละเอียด | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
พารามิเตอร์ |
|
||||||||||||
แสดงผลค่า |
|
วาง
WEAVE_ERROR Put( uint64_t tag, uint16_t v )
วาง
WEAVE_ERROR Put( uint64_t tag, uint16_t v, bool preserveSize )
วาง
WEAVE_ERROR Put( uint64_t tag, uint32_t v )
วาง
WEAVE_ERROR Put( uint64_t tag, uint32_t v, bool preserveSize )
วาง
WEAVE_ERROR Put( uint64_t tag, uint64_t v )
วาง
WEAVE_ERROR Put( uint64_t tag, uint64_t v, bool preserveSize )
วาง
WEAVE_ERROR Put( uint64_t tag, float v )
วาง
WEAVE_ERROR Put( uint64_t tag, double v )
เข้ารหัสค่าจุดลอยตัว TLV
ฟังก์ชันนี้เป็นฟังก์ชันสำหรับสมาชิกที่มีการใช้งานมากเกินไป ซึ่งมีไว้เพื่ออำนวยความสะดวกให้แก่คุณ ซึ่งจะแตกต่างจากฟังก์ชันข้างต้นตรงที่อาร์กิวเมนต์ที่ยอมรับเท่านั้น
รายละเอียด | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
พารามิเตอร์ |
|
||||||||||||
แสดงผลค่า |
|
PutBoolean
WEAVE_ERROR PutBoolean( uint64_t tag, bool v )
เข้ารหัสค่าบูลีน TLV
รายละเอียด | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
พารามิเตอร์ |
|
||||||||||||
แสดงผลค่า |
|
PutBytes
WEAVE_ERROR PutBytes( uint64_t tag, const uint8_t *buf, uint32_t len )
เข้ารหัสค่าสตริงไบต์ TLV
รายละเอียด | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
พารามิเตอร์ |
|
||||||||||||
แสดงผลค่า |
|
PutNull
WEAVE_ERROR PutNull( uint64_t tag )
เข้ารหัสค่า Null TLV
รายละเอียด | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
พารามิเตอร์ |
|
||||||||||||
แสดงผลค่า |
|
PutPreEncodedContainer
WEAVE_ERROR PutPreEncodedContainer( uint64_t tag, TLVType containerType, const uint8_t *data, uint32_t dataLen )
เข้ารหัสองค์ประกอบคอนเทนเนอร์ TLV จากชุดองค์ประกอบสมาชิกที่เข้ารหัสล่วงหน้า
เมธอด PutPreEncodedContainer() เข้ารหัสองค์ประกอบคอนเทนเนอร์ TLV ใหม่ (โครงสร้าง อาร์เรย์ หรือเส้นทาง) ที่มีชุดองค์ประกอบสมาชิกที่มาจากบัฟเฟอร์ที่เข้ารหัสล่วงหน้า บัฟเฟอร์อินพุตต้องมีองค์ประกอบ TLV ที่เข้ารหัสแบบเต็มรูปแบบอย่างน้อย 0 รายการ โดยมีแท็กที่สอดคล้องกับกฎที่เชื่อมโยงกับประเภทคอนเทนเนอร์ที่ระบุ (เช่น สมาชิกในโครงสร้างต้องมีแท็ก ในขณะที่สมาชิกของอาร์เรย์ต้องไม่มี)
เมธอดมีการเข้ารหัสองค์ประกอบทั้งหมดของคอนเทนเนอร์ในการเรียกครั้งเดียว เมื่อแสดงผล PutPreEncodedContainer() คุณจะใช้ออบเจ็กต์ผู้เขียนเพื่อเขียนองค์ประกอบ TLV เพิ่มเติมต่อจากองค์ประกอบคอนเทนเนอร์ได้
รายละเอียด | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
พารามิเตอร์ |
|
||||||||||||||
แสดงผลค่า |
|
PutString
WEAVE_ERROR PutString( uint64_t tag, const char *buf )
เข้ารหัสค่าสตริง UTF8 TLV
รายละเอียด | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
พารามิเตอร์ |
|
||||||||||||
แสดงผลค่า |
|
PutString
WEAVE_ERROR PutString( uint64_t tag, const char *buf, uint32_t len )
เข้ารหัสค่าสตริง UTF8 TLV
รายละเอียด | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
พารามิเตอร์ |
|
||||||||||||
แสดงผลค่า |
|
PutStringF
WEAVE_ERROR PutStringF( uint64_t tag, const char *fmt, ... )
เข้ารหัสเอาต์พุตสตริงที่จัดรูปแบบตามรูปแบบในองค์ประกอบ TLV
PutStringF คือแอนะล็อกของ sprintf ซึ่งเอาต์พุตจะจัดเก็บในองค์ประกอบ TLV แทนที่จะเป็นบัฟเฟอร์อักขระ เมื่อมีฟังก์ชัน Printf แบบขยายได้ ฟังก์ชันดังกล่าวจะสามารถแสดงผลสตริงผลลัพธ์ในพื้นที่เก็บข้อมูลพื้นฐานที่ไม่ต่อเนื่อง การใช้งานรองรับการเพิ่มประสิทธิภาพ Printf ต่อไปนี้
แพลตฟอร์มนี้จะมี vcbprintf
แบบ Callback ซึ่งให้ความสามารถในการเรียก Callback ที่กำหนดเองแทน Put Char ได้
แพลตฟอร์มนี้ให้ตัวแปร vsnprintf
ที่เรียกว่า vsnprintf_ex
ซึ่งทำงานเหมือนกับ vsnprintf ทุกประการยกเว้นว่าจะมีบทบัญญัติสำหรับการละเว้นอักขระ n
ตัวแรกของเอาต์พุต
โปรดทราบว่าแม้ฟังก์ชันที่ใช้โค้ดเรียกกลับอาจเรียบง่ายที่สุดและใช้รหัสน้อยที่สุด แต่ฟังก์ชัน vsprintf_ex
ที่หลากหลายจะใช้สแต็กน้อยกว่า
หากไม่มีทั้ง 2 อย่างข้างต้น แต่แพลตฟอร์มมี malloc
ฟังก์ชันจะจัดสรรบัฟเฟอร์ชั่วคราวเพื่อเก็บเอาต์พุต เมื่อแพลตฟอร์มไม่ได้เพิ่มประสิทธิภาพให้กลุ่ม Printf หรือ Malloc เอาต์พุตจะถูกตัดออกเพื่อให้ตรงตามสถานะต่อเนื่องในพื้นที่เก็บข้อมูล TLV ปัจจุบัน
รายละเอียด | |||||||
---|---|---|---|---|---|---|---|
พารามิเตอร์ |
|
||||||
แสดงผลค่า |
|
StartContainer
WEAVE_ERROR StartContainer( uint64_t tag, TLVType containerType, TLVType & outerContainerType )
เริ่มการเข้ารหัสองค์ประกอบคอนเทนเนอร์ TLV ใหม่
เมธอด StartContainer() ใช้ในการเขียนเอลิเมนต์คอนเทนเนอร์ TLV (โครงสร้าง อาร์เรย์ หรือเส้นทาง) ลงในการเข้ารหัส เมธอดจะใช้ประเภทและแท็ก (หากมี) ของคอนเทนเนอร์ใหม่ และการอ้างอิงไปยังค่า TLVType ซึ่งจะใช้เพื่อบันทึกบริบทปัจจุบันของผู้เขียนในขณะที่ใช้เขียนคอนเทนเนอร์
เมื่อเมธอด StartContainer() กลับมาแล้ว แอปพลิเคชันควรใช้ออบเจ็กต์ TLVWriter ปัจจุบันเพื่อเขียนองค์ประกอบของคอนเทนเนอร์ เมื่อดำเนินการเสร็จสิ้น แอปพลิเคชันต้องเรียกใช้เมธอด EndContainer() เพื่อเข้ารหัสคอนเทนเนอร์ให้เสร็จสิ้น
รายละเอียด | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
พารามิเตอร์ |
|
||||||||||||||
แสดงผลค่า |
|
StartPutBytes
WEAVE_ERROR StartPutBytes( uint64_t tag, uint32_t totalLen )
เข้ารหัสสตริงไบต์ TLV แบบหลายรายการ
ควรใช้ ContinuePutBytes กับ ContinuePutBytes
รายละเอียด | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
พารามิเตอร์ |
|
||||||||||||
แสดงผลค่า |
|
VPutStringF
WEAVE_ERROR VPutStringF( uint64_t tag, const char *fmt, va_list ap )
เข้ารหัสเอาต์พุตสตริงที่จัดรูปแบบตามรูปแบบในองค์ประกอบ TLV
PutStringF คือแอนะล็อกของ sprintf ซึ่งเอาต์พุตจะจัดเก็บในองค์ประกอบ TLV แทนที่จะเป็นบัฟเฟอร์อักขระ เมื่อมีฟังก์ชัน Printf แบบขยายได้ ฟังก์ชันดังกล่าวจะสามารถแสดงผลสตริงผลลัพธ์ในพื้นที่เก็บข้อมูลพื้นฐานที่ไม่ต่อเนื่อง การใช้งานรองรับการเพิ่มประสิทธิภาพ Printf ต่อไปนี้
แพลตฟอร์มนี้จะมี vcbprintf
แบบ Callback ซึ่งให้ความสามารถในการเรียก Callback ที่กำหนดเองแทน Put Char ได้
แพลตฟอร์มนี้ให้ตัวแปร vsnprintf
ที่เรียกว่า vsnprintf_ex
ซึ่งทำงานเหมือนกับ vsnprintf ทุกประการยกเว้นว่าจะมีบทบัญญัติสำหรับการละเว้นอักขระ n
ตัวแรกของเอาต์พุต
โปรดทราบว่าแม้ฟังก์ชันที่ใช้โค้ดเรียกกลับอาจเรียบง่ายที่สุดและใช้รหัสน้อยที่สุด แต่ฟังก์ชัน vsprintf_ex
ที่หลากหลายจะใช้สแต็กน้อยกว่า
หากไม่มีทั้ง 2 อย่างข้างต้น แต่แพลตฟอร์มมี malloc
ฟังก์ชันจะจัดสรรบัฟเฟอร์ชั่วคราวเพื่อเก็บเอาต์พุต เมื่อแพลตฟอร์มไม่ได้เพิ่มประสิทธิภาพให้กลุ่ม Printf หรือ Malloc เอาต์พุตจะถูกตัดออกเพื่อให้ตรงตามสถานะต่อเนื่องในพื้นที่เก็บข้อมูล TLV ปัจจุบัน
รายละเอียด | |||||||
---|---|---|---|---|---|---|---|
พารามิเตอร์ |
|
||||||
แสดงผลค่า |
|
ฟังก์ชันแบบคงที่แบบสาธารณะ
FinalizePacketBuffer
WEAVE_ERROR FinalizePacketBuffer( TLVWriter & writer, uintptr_t bufHandle, uint8_t *bufStart, uint32_t dataLen )
การใช้งานฟังก์ชัน TLVWriter FinalizeBuffer สำหรับการเขียนเชนของ PacketBuffers
ฟังก์ชัน FinalizePacketBuffer() จะทำการสรุปที่จําเป็นเมื่อใช้ TLVWriter เพื่อเขียนไปยังเชนของ PacketBuffers ฟังก์ชันนี้ออกแบบมาให้ใช้ร่วมกับฟังก์ชัน GetNewPacketBuffer()
ดูคำจำกัดความประเภท FinalizeBufferFunct สำหรับข้อมูลเพิ่มเติมเกี่ยวกับ API ของฟังก์ชัน FinalizePacketBuffer()
GetNewBuffer_Malloced
WEAVE_ERROR GetNewBuffer_Malloced( TLVWriter & writer, uintptr_t & bufHandle, uint8_t *& bufStart, uint32_t & bufLen )
การใช้งานฟังก์ชัน GetNewBuffer TLVWriter สำหรับการเขียนไปยังบัฟเฟอร์แบบไดนามิก
ฟังก์ชัน GetNewBuffer_Malloced() จะเพิ่มพื้นที่เอาต์พุตใหม่ให้กับ TLVWriter โดยเพิ่มขนาดบัฟเฟอร์แบบไดนามิกที่สำคัญเป็น 2 เท่าตามความจำเป็นในการจัดเก็บการเข้ารหัส ฟังก์ชันนี้ออกแบบมาให้กำหนดให้กับตัวชี้ฟังก์ชัน GetNewBuffer ของ TLVWriter
ดูคำจำกัดความประเภท GetNewBufferFunct สำหรับข้อมูลเพิ่มเติมเกี่ยวกับ API ของฟังก์ชัน GetNewBuffer_Malloced()
GetNewPacketBuffer
WEAVE_ERROR GetNewPacketBuffer( TLVWriter & writer, uintptr_t & bufHandle, uint8_t *& bufStart, uint32_t & bufLen )
การใช้ฟังก์ชัน GetNewBuffer ของ TLVWriter สำหรับการเขียนในเชนของ PacketBuffers
ฟังก์ชัน GetNewPacketBuffer() ใส่พื้นที่เอาต์พุตใหม่ให้กับ TLVWriter โดยจัดสรรเชนของ PacketBuffers อย่างน้อย 1 รายการตามความจำเป็นเพื่อจัดเก็บการเข้ารหัส ฟังก์ชันนี้ออกแบบมาให้กำหนดให้กับตัวชี้ฟังก์ชัน GetNewBuffer ของ TLVWriter
โปรดทราบว่าเมื่อใช้ GetNewPacketBuffer กับ TLVWriter คุณควรใช้ฟังก์ชัน FinalizePacketBuffer() ที่เกี่ยวข้อง (หรือเทียบเท่า) เพื่อสร้างบัฟเฟอร์เชนให้เสร็จสมบูรณ์ด้วย
ดูคำจำกัดความประเภท GetNewBufferFunct สำหรับข้อมูลเพิ่มเติมเกี่ยวกับ API ของฟังก์ชัน GetNewPacketBuffer()
ฟังก์ชันที่มีการป้องกัน
IsCloseContainerReserved
bool IsCloseContainerReserved( void ) const
กำหนดว่าคอนเทนเนอร์ควรสงวนพื้นที่สำหรับสัญลักษณ์ CloseContainer เมื่อเริ่มต้น / เปิดคอนเทนเนอร์หรือไม่
IsContainerOpen
bool IsContainerOpen( void ) const
SetCloseContainerReserved
void SetCloseContainerReserved( bool aCloseContainerReserved )
กำหนดว่าคอนเทนเนอร์ควรสงวนพื้นที่สำหรับสัญลักษณ์ CloseContainer ที่จุดเริ่มต้น / เปิดคอนเทนเนอร์หรือไม่
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 )