nl:: Weave:: TLV:: TLVWriter
#include <src/lib/core/WeaveTLV.h>
Cung cấp một bộ mã hóa hiệu quả của bộ nhớ để ghi dữ liệu ở định dạng Weave TLV.
Tóm tắt
TLVWriter triển khai bộ mã hóa kiểu luồng chỉ dành cho dữ liệu TLV của Weave. Các ứng dụng ghi dữ liệu vào quá trình mã hóa bằng cách gọi một trong các phương thức Put() của tác giả, chuyển thông tin thẻ và giá trị được liên kết nếu cần. Các ứng dụng tương tự có thể mã hóa các loại vùng chứa TLV (cấu trúc, mảng hoặc đường dẫn) bằng cách gọi các phương thức OpenContainer() hoặc EnterCONTAINER() của nhà viết kịch bản.
Một đối tượng TLVWriter có thể ghi dữ liệu trực tiếp vào một bộ đệm đầu ra cố định hoặc tới một chuỗi gồm một hoặc nhiều đối tượng PacketBuffer. Ngoài ra, các ứng dụng có thể cung cấp chức năng GetNewBuffer
và FinalizeBuffer
của riêng mình để chuyển hướng đầu ra đến một đích tuỳ ý, ví dụ: một cổng hoặc hàng đợi sự kiện.
Tính kế thừa
Các lớp con đã biết trực tiếp: nl::Weave::TLV::CirularTLVWriter
Các loại được bảo vệ |
|
---|---|
@72{
|
enum |
Loại công khai |
|
---|---|
FinalizeBufferFunct)(TLVWriter &writer, uintptr_t bufHandle, uint8_t *bufStart, uint32_t bufLen)
|
WEAVE_ERROR(* Một hàm dùng để thực hiện việc cuối cùng của kết quả từ đối tượng TLVWriter. |
GetNewBufferFunct)(TLVWriter &writer, uintptr_t &bufHandle, uint8_t *&bufStart, uint32_t &bufLen)
|
WEAVE_ERROR(* Một hàm cung cấp không gian vùng đệm đầu ra mới cho TLVWriter. |
Thuộc tính công khai |
|
---|---|
AppData
|
void *
Một trường con trỏ có thể được dùng cho dữ liệu dành riêng cho ứng dụng.
|
FinalizeBuffer
|
Con trỏ đến một hàm sẽ được gọi khi TLVWriter hoàn tất.
|
GetNewBuffer
|
Con trỏ đến một hàm cung cấp không gian bộ đệm đầu ra mới cho TLVWriter.
|
ImplicitProfileId
|
uint32_t
Mã hồ sơ của các thẻ cần được mã hóa ở dạng ngầm.
|
Thuộc tính được bảo vệ |
|
---|---|
mBufHandle
|
uintptr_t
|
mBufStart
|
uint8_t *
|
mContainerType
|
|
mLenWritten
|
uint32_t
|
mMaxLen
|
uint32_t
|
mRemainingLen
|
uint32_t
|
mWritePoint
|
uint8_t *
|
Hàm công khai |
|
---|---|
CloseContainer(TLVWriter & containerWriter)
|
Hoàn thành việc ghi vùng chứa TLV sau lệnh gọi đến OpenCONTAINER().
|
ContinuePutBytes(const uint8_t *buf, uint32_t len)
|
Mã hóa một giá trị chuỗi byte TLV.
|
CopyContainer(TLVReader & container)
|
Sao chép một phần tử vùng chứa TLV từ đối tượng TLV Reader.
|
CopyContainer(uint64_t tag, TLVReader & container)
|
Mã hóa phần tử vùng chứa TLV từ một nhóm phần tử thành viên được mã hóa trước.
|
CopyContainer(uint64_t tag, const uint8_t *encodedContainer, uint16_t encodedContainerLen)
|
Mã hóa phần tử vùng chứa TLV chứa các phần tử thành phần từ một vùng chứa được mã hóa trước.
|
CopyElement(TLVReader & reader)
|
Sao chép một phần tử TLV từ đối tượng người đọc vào tác giả.
|
CopyElement(uint64_t tag, TLVReader & reader)
|
|
EndContainer(TLVType outerContainerType)
|
Hoàn thành mã hóa một phần tử vùng chứa TLV.
|
Finalize(void)
|
Hoàn tất việc viết mã TLV.
|
GetContainerType(void) const
|
Trả về loại vùng chứa mà TLVWriter đang viết.
|
GetLengthWritten(void)
|
uint32_t
Trả về tổng số byte được viết từ khi người viết được khởi tạo.
|
Init(uint8_t *buf, uint32_t maxLen)
|
void
Khởi tạo đối tượng TLVWriter để ghi vào một bộ đệm đầu ra.
|
Init(PacketBuffer *buf, uint32_t maxLen)
|
void
Khởi tạo đối tượng TLVWriter để ghi vào một PacketBuffer.
|
Init(PacketBuffer *buf, uint32_t maxLen, bool allowDiscontiguousBuffers)
|
void
Khởi tạo đối tượng TLVWriter để ghi vào một hoặc nhiều PacketBuffers.
|
InitMalloced(uint8_t *& outBuf, uint32_t initialBufSize, uint32_t maxLen)
|
void
Khởi tạo đối tượng TLVWriter để ghi vào một bộ đệm động.
|
OpenContainer(uint64_t tag, TLVType containerType, TLVWriter & containerWriter)
|
|
Put(uint64_t tag, int8_t v)
|
Mã hóa một giá trị số nguyên có chữ ký TLV.
|
Put(uint64_t tag, int8_t v, bool preserveSize)
|
Mã hóa một giá trị số nguyên có chữ ký 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)
|
Mã hóa một giá trị số nguyên không dấu TLV.
|
Put(uint64_t tag, uint8_t v, bool preserveSize)
|
Mã hóa một giá trị số nguyên không dấu 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)
|
Mã hóa một giá trị dấu phẩy động TLV.
|
PutBoolean(uint64_t tag, bool v)
|
Mã hóa một giá trị boolean TLV.
|
PutBytes(uint64_t tag, const uint8_t *buf, uint32_t len)
|
Mã hóa một giá trị chuỗi byte TLV.
|
PutNull(uint64_t tag)
|
Mã hóa một giá trị rỗng TLV.
|
PutPreEncodedContainer(uint64_t tag, TLVType containerType, const uint8_t *data, uint32_t dataLen)
|
Mã hóa phần tử vùng chứa TLV từ một nhóm phần tử thành viên được mã hóa trước.
|
PutString(uint64_t tag, const char *buf)
|
Mã hóa một giá trị chuỗi UTF8 TLV.
|
PutString(uint64_t tag, const char *buf, uint32_t len)
|
Mã hóa một giá trị chuỗi UTF8 TLV.
|
PutStringF(uint64_t tag, const char *fmt, ...)
|
Mã hóa đầu ra chuỗi được định dạng theo định dạng trong phần tử TLV.
|
StartContainer(uint64_t tag, TLVType containerType, TLVType & outerContainerType)
|
Bắt đầu mã hoá một thành phần vùng chứa TLV mới.
|
StartPutBytes(uint64_t tag, uint32_t totalLen)
|
Mã hóa một chuỗi byte TLV theo nhiều phân đoạn.
|
VPutStringF(uint64_t tag, const char *fmt, va_list ap)
|
Mã hóa đầu ra chuỗi được định dạng theo định dạng trong phần tử TLV.
|
Hàm tĩnh công khai |
|
---|---|
FinalizePacketBuffer(TLVWriter & writer, uintptr_t bufHandle, uint8_t *bufStart, uint32_t dataLen)
|
Triển khai hàm TLVWriter FinalizeBuffer để viết vào chuỗi của PacketBuffers.
|
GetNewBuffer_Malloced(TLVWriter & writer, uintptr_t & bufHandle, uint8_t *& bufStart, uint32_t & bufLen)
|
Triển khai hàm TLVWriter GetNewBuffer để ghi vào một bộ đệm động.
|
GetNewPacketBuffer(TLVWriter & writer, uintptr_t & bufHandle, uint8_t *& bufStart, uint32_t & bufLen)
|
Triển khai hàm TLVWriter GetNewBuffer để viết vào chuỗi của PacketBuffers.
|
Hàm được bảo vệ |
|
---|---|
IsCloseContainerReserved(void) const
|
bool
Xác định xem vùng chứa có nên đặt trước không gian cho biểu tượng CloseContainer tại điểm bắt đầu / mở vùng chứa hay không.
|
IsContainerOpen(void) const
|
bool
|
SetCloseContainerReserved(bool aCloseContainerReserved)
|
void
Đặt vùng chứa có đặt trước không gian cho biểu tượng CloseVùng tại điểm bắt đầu / mở vùng chứa hay không.
|
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)
|
Các loại được bảo vệ
@72
@72
Loại công khai
FinalizeBufferFunct
WEAVE_ERROR(* FinalizeBufferFunct)(TLVWriter &writer, uintptr_t bufHandle, uint8_t *bufStart, uint32_t bufLen)
Một hàm dùng để thực hiện việc cuối cùng của kết quả từ đối tượng TLVWriter.
Các hàm thuộc loại này được gọi khi phương thức TLVWriter\39;s finalize() được gọi. Chức năng này dự kiến sẽ thực hiện mọi bước dọn dẹp hoặc hoàn thiện cần thiết liên quan đến việc sử dụng kết quả của đối tượng tác giả. Ví dụ: Nội dung này có thể là những trường hợp ghi lại độ dài cuối cùng của quá trình mã hóa hoặc đóng phần mô tả tệp.
Thông tin chi tiết | |||||||||
---|---|---|---|---|---|---|---|---|---|
Các thông số |
|
||||||||
Giá trị trả về |
|
GetNewBufferFunct
WEAVE_ERROR(* GetNewBufferFunct)(TLVWriter &writer, uintptr_t &bufHandle, uint8_t *&bufStart, uint32_t &bufLen)
Một hàm cung cấp không gian vùng đệm đầu ra mới cho TLVWriter.
Các hàm thuộc loại này dùng để chuẩn bị không gian bộ đệm mới để TLVWriter ghi vào. Khi được gọi, hàm dự kiến sẽ trả về một con trỏ đến vị trí bộ nhớ mà dữ liệu mới được viết cùng với độ dài tối đa được liên kết. Hàm có thể cung cấp không gian ghi bằng cách phân bổ bộ đệm mới để lưu giữ dữ liệu hoặc bằng cách xóa dữ liệu đã ghi trước đó khỏi bộ đệm hiện có.
Thông tin chi tiết | |||||||||
---|---|---|---|---|---|---|---|---|---|
Các thông số |
|
||||||||
Giá trị trả về |
|
Thuộc tính công khai
ĐÃ GỬI
void * AppData
Một trường con trỏ có thể được dùng cho dữ liệu dành riêng cho ứng dụng.
Vòng cuối
FinalizeBufferFunct FinalizeBuffer
Con trỏ đến một hàm sẽ được gọi khi TLVWriter hoàn tất.
Đối tượng TLVWriter sẽ gọi hàm FinalizeBuffer bất cứ khi nào phương thức finalize() được gọi. Các ứng dụng có thể đặt con trỏ hàm vào bất kỳ thời điểm nào trước khi gọi finalize(). Theo mặc định, con trỏ được đặt thành NULL, điều này khiến phương thức finalize() bỏ qua việc gọi hàm.
Xem định nghĩa loại FinalizeBufferFunct để biết thêm thông tin về cách triển khai hàm FinalizeBuffer.
Tải NewBBer
GetNewBufferFunct GetNewBuffer
Con trỏ đến một hàm cung cấp không gian bộ đệm đầu ra mới cho TLVWriter.
Đối tượng TLVWriter sẽ gọi hàm GetNewBuffer mỗi khi bạn cố gắng ghi dữ liệu vượt quá kích thước của bộ đệm đầu ra hiện tại. Nếu đặt thành NULL (giá trị mặc định), người viết sẽ trả về WEAVE_ERROR_NO_MEMORY nếu dữ liệu đầu ra tràn ra bộ đệm hiện tại.
GetNewBuffer có thể được một ứng dụng đặt bất cứ lúc nào, nhưng thường được đặt khi người viết khởi tạo.
Xem định nghĩa loại GetNewBufferFunct để biết thêm thông tin về cách triển khai hàm GetNewBuffer.
Hồ sơ ngầm ẩn
uint32_t ImplicitProfileId
Mã hồ sơ của các thẻ cần được mã hóa ở dạng ngầm.
Khi một người viết được yêu cầu mã hóa một phần tử mới, nếu mã hồ sơ của thẻ liên kết với phần tử mới đó khớp với giá trị của thành viên ImplicitProfileId
, thì người viết sẽ mã hóa thẻ ở dạng ngầm, bỏ qua mã hồ sơ trong quá trình này.
Theo mặc định, thuộc tính ImplicitProfileId
được đặt thành kProfileIdNotSpecated. Lệnh này sẽ hướng dẫn người viết không phát ra các thẻ được mã hóa ngầm. Các ứng dụng có thể đặt ImplicitProfileId
bất cứ lúc nào để bật các thẻ mã hóa ở dạng ngầm, bắt đầu từ thời điểm hiện tại trong quá trình mã hóa. Id hồ sơ thích hợp để đặt thường phụ thuộc vào ngữ cảnh của ứng dụng hoặc giao thức đang được nói.
Thuộc tính được bảo vệ
mBufhandle
uintptr_t mBufHandle
mBufStart
uint8_t * mBufStart
mVùngType
TLVType mContainerType
Viết mLenen
uint32_t mLenWritten
mMaxLen
uint32_t mMaxLen
Còn lại
uint32_t mRemainingLen
mWritePoint
uint8_t * mWritePoint
Hàm công khai
Vùng chứa đóng
WEAVE_ERROR CloseContainer( TLVWriter & containerWriter )
Hoàn thành việc ghi vùng chứa TLV sau lệnh gọi đến OpenCONTAINER().
Phương thức Close
Khi CloseContainer() trả về, ứng dụng có thể tiếp tục sử dụng trình viết mẹ để ghi các phần tử TLV xuất hiện sau phần tử vùng chứa. Tại thời điểm này, người viết vùng chứa đã cung cấp phải được xem là "$39&de-khởi tạo\39; và không được sử dụng trừ khi khởi chạy lại.
Thông tin chi tiết | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Các thông số |
|
||||||||||||
Giá trị trả về |
|
Tiếp tục
WEAVE_ERROR ContinuePutBytes( const uint8_t *buf, uint32_t len )
Mã hóa một giá trị chuỗi byte TLV.
Bạn nên dùng thuộc tính này cùng với Put PutBytes.
Thông tin chi tiết | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Các thông số |
|
||||||||||||
Giá trị trả về |
|
Sao chép vùng chứa
WEAVE_ERROR CopyContainer( TLVReader & container )
Sao chép một phần tử vùng chứa TLV từ đối tượng TLV Reader.
CopyCopy() mã hóa một phần tử vùng chứa mới TLV bằng cách sao chép một phần tử vùng chứa được mã hóa trước nằm ở vị trí hiện tại của đối tượng TLV Reader. Phương thức này ghi toàn bộ phần tử vùng chứa mới vào một lệnh gọi, sao chép loại, thẻ và các phần tử của vùng chứa từ phương thức mã hóa nguồn. Khi phương thức này trả về, đối tượng tác giả có thể được dùng để viết các phần tử TLV bổ sung sau phần tử vùng chứa.
Thông tin chi tiết | |||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Các thông số |
|
||||||||||||||||||
Giá trị trả về |
|
Sao chép vùng chứa
WEAVE_ERROR CopyContainer( uint64_t tag, TLVReader & container )
Mã hóa phần tử vùng chứa TLV từ một nhóm phần tử thành viên được mã hóa trước.
Phương thức CopyCopy() mã hóa một phần tử vùng chứa TLV mới (cấu trúc, mảng hoặc đường dẫn) chứa một tập hợp các phần tử thành phần được lấy từ đối tượng TLV Reader. Khi phương thức này được gọi, đối tượng đọc đã cung cấp dự kiến sẽ được định vị trên phần tử vùng chứa TLV. Vùng chứa mới được mã hóa sẽ có cùng loại và thành viên với vùng chứa đầu vào. Thẻ cho vùng chứa mới được chỉ định làm thông số đầu vào.
Khi phương thức này trả về, đối tượng tác giả có thể được dùng để viết các phần tử TLV bổ sung sau phần tử vùng chứa.
Thông tin chi tiết | |||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Các thông số |
|
||||||||||||||||||
Giá trị trả về |
|
Sao chép vùng chứa
WEAVE_ERROR CopyContainer( uint64_t tag, const uint8_t *encodedContainer, uint16_t encodedContainerLen )
Mã hóa phần tử vùng chứa TLV chứa các phần tử thành phần từ một vùng chứa được mã hóa trước.
Phương thức CopyCopy() mã hóa một phần tử vùng chứa TLV mới (một cấu trúc, mảng hoặc đường dẫn) chứa một tập hợp các phần tử thành phần được lấy từ nội dung của một vùng chứa đã mã hóa trước đó. Khi phương thức này được gọi, dữ liệu trong bộ đệm nhập được cung cấp sẽ được phân tích cú pháp như một phần tử vùng chứa TLV mà vùng chứa mới được viết có cùng loại và thành viên với vùng chứa đầu vào. Thẻ cho vùng chứa mới được chỉ định làm thông số đầu vào.
Khi phương thức này trả về, đối tượng tác giả có thể được dùng để viết các phần tử TLV bổ sung sau phần tử vùng chứa.
Thông tin chi tiết | |||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Các thông số |
|
||||||||||||||||
Giá trị trả về |
|
Phần tử sao chép
WEAVE_ERROR CopyElement( TLVReader & reader )
Sao chép một phần tử TLV từ đối tượng người đọc vào tác giả.
Phương thức CopyElement() mã hoá một phần tử TLV mới có loại, thẻ và giá trị được lấy từ đối tượng TLV Reader. Khi phương thức này được gọi, đối tượng đọc đã cung cấp dự kiến sẽ được định vị trên phần tử TLV nguồn. Phần tử mới được mã hóa sẽ có cùng loại, thẻ và nội dung với vùng chứa đầu vào. Nếu phần tử được cung cấp là một vùng chứa TLV (cấu trúc, mảng hoặc đường dẫn), thì toàn bộ nội dung của vùng chứa đó sẽ được sao chép.
Thông tin chi tiết | |||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Các thông số |
|
||||||||||||||||||
Giá trị trả về |
|
Phần tử sao chép
WEAVE_ERROR CopyElement( uint64_t tag, TLVReader & reader )
Vùng chứa cuối
WEAVE_ERROR EndContainer( TLVType outerContainerType )
Hoàn thành mã hóa một phần tử vùng chứa TLV.
Phương thức EndContainer() sẽ hoàn tất quá trình mã hóa phần tử vùng chứa TLV và khôi phục trạng thái của đối tượng TLVWrite sau lệnh gọi trước đó đến StartCONTAINER(). Đối với mọi lệnh gọi đến StartContainer() phải thực hiện lệnh gọi tương ứng đến EndCONTAINER(), chuyển giá trị TLVType được trả về bởi lệnh gọi {1CONTAINER}StartContainer(). Khi EndCONTAINER() trả về, đối tượng người viết có thể được dùng để viết các phần tử TLV bổ sung theo phần tử vùng chứa.
Thông tin chi tiết | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Các thông số |
|
||||||||||||
Giá trị trả về |
|
Hoàn tất
WEAVE_ERROR Finalize( void )
Hoàn tất việc viết mã TLV.
Phương thức finalize() hoàn tất quá trình ghi mã hóa TLV vào bộ đệm đầu ra cơ bản. Ứng dụng phải gọi phương thức này trước khi nó sử dụng nội dung của bộ đệm. Chỉ có thể gọi finalize() khi không có tác giả vùng chứa nào cho người viết hiện tại. (Xem OpenContainer()
).
Thông tin chi tiết | |||||||
---|---|---|---|---|---|---|---|
Giá trị trả về |
|
Loại vùng chứa
TLVType GetContainerType( void ) const
Trả về loại vùng chứa mà TLVWriter đang viết.
Phương thức GetCONTAINERType() trả về loại vùng chứa TLV mà TLVWriter đang ghi. Nếu TLVWriter không ghi các phần tử trong một vùng chứa (tức là nếu ghi ở cấp ngoài cùng của phương thức mã hóa), thì phương thức sẽ trả về kTLVType_NotSpecated.
Thông tin chi tiết | |
---|---|
Trả về |
TLVType của vùng chứa hiện tại hoặc kTLVType_NotNot đặc biệt nếu TLVWriter không ghi các phần tử trong một vùng chứa.
|
GetLengthWrite
uint32_t GetLengthWritten( void )
Trả về tổng số byte được viết từ khi người viết được khởi tạo.
Thông tin chi tiết | |
---|---|
Trả về |
Tổng số byte được viết kể từ khi người viết được khởi tạo.
|
Số nguyên
void Init( uint8_t *buf, uint32_t maxLen )
Số nguyên
void Init( PacketBuffer *buf, uint32_t maxLen )
Số nguyên
void Init( PacketBuffer *buf, uint32_t maxLen, bool allowDiscontiguousBuffers )
Khởi tạo đối tượng TLVWriter để ghi vào một hoặc nhiều PacketBuffers.
Quá trình ghi bắt đầu ngay sau byte cuối cùng của dữ liệu hiện có trong bộ đệm được chỉ định. Nếu allowDiscontiguousBuffers
là true, thì PacketBuffers bổ sung sẽ được phân bổ và chuỗi vào bộ đệm được cung cấp khi cần thiết để đáp ứng lượng dữ liệu đã ghi. Nếu bộ đệm đầu ra được chỉ định đã là đầu của chuỗi bộ đệm, thì đầu ra sẽ được ghi vào các bộ đệm tiếp theo trong chuỗi trước khi mọi bộ đệm mới được phân bổ.
Thông tin chi tiết | |||||||
---|---|---|---|---|---|---|---|
Các thông số |
|
Tích hợp
void InitMalloced( uint8_t *& outBuf, uint32_t initialBufSize, uint32_t maxLen )
Khởi tạo đối tượng TLVWriter để ghi vào một bộ đệm động.
Thông tin chi tiết | |||||||
---|---|---|---|---|---|---|---|
Các thông số |
|
Vùng chứa mở
WEAVE_ERROR OpenContainer( uint64_t tag, TLVType containerType, TLVWriter & containerWriter )
Khởi tạo một đối tượng TLVWriter mới để ghi thành phần của thành phần vùng chứa TLV.
Phương thức OpenContainer() được dùng để ghi các thành phần vùng chứa TLV (cấu trúc, mảng hoặc đường dẫn) vào quá trình mã hoá. Phương thức này lấy loại và thẻ (nếu có) của vùng chứa mới và tham chiếu đến một đối tượng tác giả mới (người viết vùng chứa) sẽ được khởi tạo cho mục đích viết phần tử của vùng chứa. Các ứng dụng ghi thành viên của vùng chứa mới bằng cách sử dụng trình viết vùng chứa, sau đó gọi CloseClose() để hoàn tất mã hóa vùng chứa.
Khi người viết vùng chứa đang mở, ứng dụng không được thực hiện lệnh gọi hoặc thay đổi trạng thái của người viết chính.
Tác giả vùng chứa kế thừa các thuộc tính cấu hình từ người viết chính. Đó là:
- Mã hồ sơ ngầm ẩn (ngầmProfileId)
- Con trỏ dữ liệu ứng dụng (AppData)
- Các con trỏ hàm GetNewBuffer và FinalizeBuffer
Thông tin chi tiết | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Các thông số |
|
||||||||||||||
Giá trị trả về |
|
Đặt
WEAVE_ERROR Put( uint64_t tag, int8_t v )
Mã hóa một giá trị số nguyên có chữ ký TLV.
Đây là một hàm thành phần quá tải, được cung cấp để thuận tiện cho bạn. Hàm này chỉ khác với hàm ở trên trong(các) đối số mà hàm chấp nhận.
Thông tin chi tiết | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Các thông số |
|
||||||||||||
Giá trị trả về |
|
Đặt
WEAVE_ERROR Put( uint64_t tag, int8_t v, bool preserveSize )
Mã hóa một giá trị số nguyên có chữ ký TLV.
Đây là một hàm thành phần quá tải, được cung cấp để thuận tiện cho bạn. Hàm này chỉ khác với hàm ở trên trong(các) đối số mà hàm chấp nhận.
Thông tin chi tiết | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Các thông số |
|
||||||||||||
Giá trị trả về |
|
Đặt
WEAVE_ERROR Put( uint64_t tag, int16_t v )
Đặt
WEAVE_ERROR Put( uint64_t tag, int16_t v, bool preserveSize )
Đặt
WEAVE_ERROR Put( uint64_t tag, int32_t v )
Đặt
WEAVE_ERROR Put( uint64_t tag, int32_t v, bool preserveSize )
Đặt
WEAVE_ERROR Put( uint64_t tag, int64_t v )
Đặt
WEAVE_ERROR Put( uint64_t tag, int64_t v, bool preserveSize )
Đặt
WEAVE_ERROR Put( uint64_t tag, uint8_t v )
Mã hóa một giá trị số nguyên không dấu TLV.
Đây là một hàm thành phần quá tải, được cung cấp để thuận tiện cho bạn. Hàm này chỉ khác với hàm ở trên trong(các) đối số mà hàm chấp nhận.
Thông tin chi tiết | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Các thông số |
|
||||||||||||
Giá trị trả về |
|
Đặt
WEAVE_ERROR Put( uint64_t tag, uint8_t v, bool preserveSize )
Mã hóa một giá trị số nguyên không dấu TLV.
Đây là một hàm thành phần quá tải, được cung cấp để thuận tiện cho bạn. Hàm này chỉ khác với hàm ở trên trong(các) đối số mà hàm chấp nhận.
Thông tin chi tiết | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Các thông số |
|
||||||||||||
Giá trị trả về |
|
Đặt
WEAVE_ERROR Put( uint64_t tag, uint16_t v )
Đặt
WEAVE_ERROR Put( uint64_t tag, uint16_t v, bool preserveSize )
Đặt
WEAVE_ERROR Put( uint64_t tag, uint32_t v )
Đặt
WEAVE_ERROR Put( uint64_t tag, uint32_t v, bool preserveSize )
Đặt
WEAVE_ERROR Put( uint64_t tag, uint64_t v )
Đặt
WEAVE_ERROR Put( uint64_t tag, uint64_t v, bool preserveSize )
Đặt
WEAVE_ERROR Put( uint64_t tag, float v )
Đặt
WEAVE_ERROR Put( uint64_t tag, double v )
Mã hóa một giá trị dấu phẩy động TLV.
Đây là một hàm thành phần quá tải, được cung cấp để thuận tiện cho bạn. Hàm này chỉ khác với hàm ở trên trong(các) đối số mà hàm chấp nhận.
Thông tin chi tiết | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Các thông số |
|
||||||||||||
Giá trị trả về |
|
Boolean
WEAVE_ERROR PutBoolean( uint64_t tag, bool v )
Mã hóa một giá trị boolean TLV.
Thông tin chi tiết | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Các thông số |
|
||||||||||||
Giá trị trả về |
|
Đặt số byte
WEAVE_ERROR PutBytes( uint64_t tag, const uint8_t *buf, uint32_t len )
Mã hóa một giá trị chuỗi byte TLV.
Thông tin chi tiết | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Các thông số |
|
||||||||||||
Giá trị trả về |
|
Bỏ chọn
WEAVE_ERROR PutNull( uint64_t tag )
Mã hóa một giá trị rỗng TLV.
Thông tin chi tiết | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Các thông số |
|
||||||||||||
Giá trị trả về |
|
Đặt Quảng cáo đặt trước được mã hóa
WEAVE_ERROR PutPreEncodedContainer( uint64_t tag, TLVType containerType, const uint8_t *data, uint32_t dataLen )
Mã hóa phần tử vùng chứa TLV từ một nhóm phần tử thành viên được mã hóa trước.
Phương thức PutPreEnencodedSlot() mã hóa phần tử vùng chứa TLV mới (cấu trúc, mảng hoặc đường dẫn) chứa một tập hợp phần tử thành phần được lấy từ bộ đệm được mã hóa trước. Vùng đệm đầu vào dự kiến sẽ chứa không có hoặc nhiều phần tử TLV được mã hóa đầy đủ, trong đó các thẻ tuân thủ quy tắc liên kết với loại vùng chứa đã chỉ định (ví dụ: các thành viên của cấu trúc phải có các thẻ, trong khi các thành phần mảng thì không được làm như vậy).
Phương thức này mã hóa toàn bộ thành phần của vùng chứa trong một lệnh gọi. Khi PutPreEnencodedcontainer() trả về, đối tượng người viết có thể được dùng để viết các phần tử TLV bổ sung sau phần tử vùng chứa.
Thông tin chi tiết | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Các thông số |
|
||||||||||||||
Giá trị trả về |
|
Chuỗi
WEAVE_ERROR PutString( uint64_t tag, const char *buf )
Mã hóa một giá trị chuỗi UTF8 TLV.
Thông tin chi tiết | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Các thông số |
|
||||||||||||
Giá trị trả về |
|
Chuỗi
WEAVE_ERROR PutString( uint64_t tag, const char *buf, uint32_t len )
Mã hóa một giá trị chuỗi UTF8 TLV.
Thông tin chi tiết | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Các thông số |
|
||||||||||||
Giá trị trả về |
|
Quảng cáo chuỗi
WEAVE_ERROR PutStringF( uint64_t tag, const char *fmt, ... )
Mã hóa đầu ra chuỗi được định dạng theo định dạng trong phần tử TLV.
PutStringF là một loại tương tự của một chạy nước rút, trong đó kết quả được lưu trữ trong một phần tử TLV chứ không phải một bộ đệm ký tự. Khi có chức năng printf mở rộng, hàm có thể xuất chuỗi kết quả vào một bộ nhớ liên tục. Cách triển khai hỗ trợ các tính năng in nâng cao sau đây:
Nền tảng này cung cấp một lệnh gọi lại vcbprintf
dựa trên lệnh gọi lại, cho phép bạn gọi lệnh gọi lại tùy chỉnh thay cho Putchar.
Nền tảng này cung cấp một biến thể của vsnprintf
có tên là vsnprintf_ex
. Biến thể này hoạt động giống hệt như biến sonprintf, ngoại trừ việc có các điều khoản để bỏ qua n
ký tự đầu tiên của dữ liệu đầu ra.
Xin lưu ý rằng mặc dù hàm dựa trên lệnh gọi lại có thể là hàm đơn giản nhất và dùng ít mã nhất, nhưng hàm hàm vsprintf_ex
sẽ dùng ít ngăn xếp hơn.
Nếu cả hai giá trị trên đều không được cung cấp, nhưng nền tảng cung cấp malloc
, thì hàm sẽ phân bổ bộ đệm tạm thời để lưu giữ dữ liệu đầu ra. Khi nền tảng không cung cấp tính năng nâng cao cho cả lớp in ấn cũng như trung tâm mua sắm, kết quả sẽ bị cắt bớt để phù hợp với trạng thái liên tục trong bộ nhớ TLV hiện tại
Thông tin chi tiết | |||||||
---|---|---|---|---|---|---|---|
Các thông số |
|
||||||
Giá trị trả về |
|
Bắt đầu vùng chứa
WEAVE_ERROR StartContainer( uint64_t tag, TLVType containerType, TLVType & outerContainerType )
Bắt đầu mã hoá một thành phần vùng chứa TLV mới.
Phương thức StartContainer() được dùng để ghi các thành phần vùng chứa TLV (cấu trúc, mảng hoặc đường dẫn) vào quá trình mã hóa. Phương thức này lấy loại và thẻ (nếu có) của vùng chứa mới, đồng thời tham chiếu đến giá trị TLVType được dùng để lưu ngữ cảnh hiện tại của người viết trong khi dùng để ghi vùng chứa.
Khi phương thức StartVùng() trả về, ứng dụng sẽ sử dụng đối tượng TLVWriter hiện tại để ghi các thành phần của vùng chứa. Khi hoàn tất, ứng dụng phải gọi phương thức EndCONTAINER() để hoàn tất mã hóa vùng chứa.
Thông tin chi tiết | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Các thông số |
|
||||||||||||||
Giá trị trả về |
|
Bắt đầu đặt byte
WEAVE_ERROR StartPutBytes( uint64_t tag, uint32_t totalLen )
Mã hóa một chuỗi byte TLV theo nhiều phân đoạn.
Bạn nên dùng thuộc tính này cùng FollowPlaceBytes.
Thông tin chi tiết | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Các thông số |
|
||||||||||||
Giá trị trả về |
|
VĐặtStringF
WEAVE_ERROR VPutStringF( uint64_t tag, const char *fmt, va_list ap )
Mã hóa đầu ra chuỗi được định dạng theo định dạng trong phần tử TLV.
PutStringF là một loại tương tự của một chạy nước rút, trong đó kết quả được lưu trữ trong một phần tử TLV chứ không phải một bộ đệm ký tự. Khi có chức năng printf mở rộng, hàm có thể xuất chuỗi kết quả vào một bộ nhớ liên tục. Cách triển khai hỗ trợ các tính năng in nâng cao sau đây:
Nền tảng này cung cấp một lệnh gọi lại vcbprintf
dựa trên lệnh gọi lại, cho phép bạn gọi lệnh gọi lại tùy chỉnh thay cho Putchar.
Nền tảng này cung cấp một biến thể của vsnprintf
có tên là vsnprintf_ex
. Biến thể này hoạt động giống hệt như biến sonprintf, ngoại trừ việc có các điều khoản để bỏ qua n
ký tự đầu tiên của dữ liệu đầu ra.
Xin lưu ý rằng mặc dù hàm dựa trên lệnh gọi lại có thể là hàm đơn giản nhất và dùng ít mã nhất, nhưng hàm hàm vsprintf_ex
sẽ dùng ít ngăn xếp hơn.
Nếu cả hai giá trị trên đều không được cung cấp, nhưng nền tảng cung cấp malloc
, thì hàm sẽ phân bổ bộ đệm tạm thời để lưu giữ dữ liệu đầu ra. Khi nền tảng không cung cấp tính năng nâng cao cho cả lớp in ấn cũng như trung tâm mua sắm, kết quả sẽ bị cắt bớt để phù hợp với trạng thái liên tục trong bộ nhớ TLV hiện tại
Thông tin chi tiết | |||||||
---|---|---|---|---|---|---|---|
Các thông số |
|
||||||
Giá trị trả về |
|
Hàm tĩnh công khai
FinalizePacketBuffer
WEAVE_ERROR FinalizePacketBuffer( TLVWriter & writer, uintptr_t bufHandle, uint8_t *bufStart, uint32_t dataLen )
Triển khai hàm TLVWriter FinalizeBuffer để viết vào chuỗi của PacketBuffers.
Hàm finalizePacketBuffer() thực hiện quá trình hoàn tất cần thiết khi sử dụng TLVWriter để ghi vào một chuỗi các PacketBuffers. Hàm này được thiết kế để sử dụng cùng với hàm GetNewPacketBuffer().
Xem định nghĩa loại FinalizeBufferFunct để biết thêm thông tin về API của hàm finalizePacketBuffer().
GetNewBuffer_Malloced
WEAVE_ERROR GetNewBuffer_Malloced( TLVWriter & writer, uintptr_t & bufHandle, uint8_t *& bufStart, uint32_t & bufLen )
Triển khai hàm TLVWriter GetNewBuffer để ghi vào một bộ đệm động.
Hàm GetNewBuffer_Malloced() cung cấp không gian đầu ra mới cho TLVWriter bằng cách tăng gấp đôi kích thước của bộ đệm động cơ bản (nếu cần) để lưu trữ bộ mã hóa. Hàm này được thiết kế để chỉ định cho con trỏ hàm TLVWriter GetNewBuffer.
Xem định nghĩa loại GetNewBufferFunct để biết thêm thông tin về API của hàm GetNewBuffer_Malloced().
GetNewPacketBuffer
WEAVE_ERROR GetNewPacketBuffer( TLVWriter & writer, uintptr_t & bufHandle, uint8_t *& bufStart, uint32_t & bufLen )
Triển khai hàm TLVWriter GetNewBuffer để viết vào chuỗi của PacketBuffers.
Hàm GetNewPacketBuffer() cung cấp không gian đầu ra mới cho TLVWriter bằng cách phân bổ chuỗi của một hoặc nhiều PacketBuffers khi cần để lưu trữ phương thức mã hóa. Hàm này được thiết kế để chỉ định cho con trỏ hàm TLVWriter GetNewBuffer.
Lưu ý rằng khi sử dụng GetNewPacketBuffer với TLVWriter, hãy dùng hàm finalizePacketBuffer() tương ứng (hoặc hàm tương đương) để hoàn tất chuỗi bộ đệm.
Xem định nghĩa loại GetNewBufferFunct để biết thêm thông tin về API của hàm GetNewPacketBuffer().
Hàm được bảo vệ
Đã đóng vùng chứa đã đặt trước
bool IsCloseContainerReserved( void ) const
Xác định xem vùng chứa có nên đặt trước không gian cho biểu tượng CloseContainer tại điểm bắt đầu / mở vùng chứa hay không.
Là vùng chứa mở
bool IsContainerOpen( void ) const
Đặt đóng vùng chứa đã đặt trước
void SetCloseContainerReserved( bool aCloseContainerReserved )
Đặt vùng chứa có đặt trước không gian cho biểu tượng CloseVùng tại điểm bắt đầu / mở vùng chứa hay không.
Đặt Vùng chứa mở
void SetContainerOpen( bool aContainerOpen )
Ghi dữ liệu
WEAVE_ERROR WriteData( const uint8_t *p, uint32_t len )
Viết thành phần đầu
WEAVE_ERROR WriteElementHead( TLVElementType elemType, uint64_t tag, uint64_t lenOrVal )
GhiElementElementData
WEAVE_ERROR WriteElementWithData( TLVType type, uint64_t tag, const uint8_t *data, uint32_t dataLen )