nl:: Weave:: TLV:: WeaveCircularTLVBuffer
#include <src/lib/core/WeaveCircularTLVBuffer.h>
WeaveCircularTLVBuffer cung cấp bộ nhớ tròn cho nl::Weave::TLV::TLVWriter và nl::Weave::TLVTLVReader.
Tóm tắt
nl::Weave::TLV::TLVWriter có thể ghi số mục nhập TLV không giới hạn vào WeaveCircularTLVBuffer miễn là mỗi mục nhập TLV riêng lẻ hoàn toàn nằm trong bộ nhớ được cung cấp. Tệp nl::Weave::TLV::TLVReader sẽ đọc tối đa kích thước của vùng đệm nhưng sẽ phù hợp với gói bao bọc trong vùng đệm.
Hàm khởi tạo và hàm phá |
|
---|---|
WeaveCircularTLVBuffer(uint8_t *inBuffer, size_t inBufferLength)
Hàm khởi tạo WeaveCircularTLVBuffer.
|
|
WeaveCircularTLVBuffer(uint8_t *inBuffer, size_t inBufferLength, uint8_t *inHead)
Hàm khởi tạo WeaveCircularTLVBuffer.
|
Loại công khai |
|
---|---|
ProcessEvictedElementFunct)(WeaveCircularTLVBuffer &inBuffer, void *inAppData, TLVReader &inReader)
|
WEAVE_ERROR(* Một hàm được gọi để xử lý phần tử TLV trước khi phần tử đó bị loại khỏi nl::Weave::TLV::WeaveCircularTLVBuffer. |
Thuộc tính công khai |
|
---|---|
mAppData
|
void *
Ngữ cảnh không bắt buộc do người dùng cung cấp, được dùng với lệnh gọi lại đang xử lý phần tử bị loại bỏ.
|
mImplicitProfileId
|
uint32_t
|
mProcessEvictedElement
|
Lệnh gọi lại không bắt buộc do người dùng cung cấp, giúp xử lý phần tử trước khi loại bỏ phần tử đó khỏi vùng đệm tròn.
|
Hàm công khai |
|
---|---|
AvailableDataLength(void) const
|
size_t
|
DataLength(void) const
|
size_t
|
EvictHead(void)
|
Loại bỏ phần tử TLV cấp cao nhất cũ nhất trong WeaveCircularTLVBuffer.
|
FinalizeBuffer(TLVWriter & ioWriter, uint8_t *inBufStart, uint32_t inBufLen)
|
FinalizeBuffer điều chỉnh trạng thái
WeaveCircularTLVBuffer khi hoàn tất đầu ra từ TLVWriter. |
GetNewBuffer(TLVWriter & ioWriter, uint8_t *& outBufStart, uint32_t & outBufLen)
|
Tăng dung lượng cho TLVWriter.
|
GetNextBuffer(TLVReader & ioReader, const uint8_t *& outBufStart, uint32_t & outBufLen)
|
Mua thêm dung lượng cho TLVReader.
|
GetQueue(void) const
|
uint8_t *
|
GetQueueSize(void) const
|
size_t
|
QueueHead(void) const
|
uint8_t *
|
QueueTail(void) const
|
uint8_t *
|
SetQueueHead(uint8_t *aQueueHead)
|
void
|
SetQueueLength(size_t aQueueLength)
|
void
|
Hàm tĩnh công khai |
|
---|---|
FinalizeBufferFunct(TLVWriter & ioWriter, uintptr_t inBufHandle, uint8_t *inBufStart, uint32_t inBufLen)
|
Một thành phần phản hồi với thao tác nhấn vào WeaveCircularTLVBuffer::FinalizeBuffer.
|
GetNewBufferFunct(TLVWriter & ioWriter, uintptr_t & inBufHandle, uint8_t *& outBufStart, uint32_t & outBufLen)
|
Một thành phần phản hồi với thao tác nhấn vào để tìm nạp thêm không gian cho TLVWriter.
|
GetNextBufferFunct(TLVReader & ioReader, uintptr_t & inBufHandle, const uint8_t *& outBufStart, uint32_t & outBufLen)
|
Một thành phần phản hồi với thao tác nhấn vào WeaveCircularTLVBuffer::GetNextBuffer.
|
Loại công khai
ProcessEvictedElementFunct
WEAVE_ERROR(* ProcessEvictedElementFunct)(WeaveCircularTLVBuffer &inBuffer, void *inAppData, TLVReader &inReader)
Một hàm được gọi để xử lý phần tử TLV trước khi phần tử đó bị loại khỏi nl::Weave::TLV::WeaveCircularTLVBuffer.
Các hàm thuộc loại này dùng để xử lý phần tử TLV sắp bị loại khỏi vùng đệm. Hàm này sẽ được định vị một nl::Weave::TLV::TLVReader được định vị trên phần tử sắp bị xoá, cũng như ngữ cảnh void * mà có thể người dùng đã cung cấp môi trường bổ sung cho lệnh gọi lại. Nếu đã xử lý thành công phần tử, thì hàm phải trả về giá trị WEAVE_NO_ERROR; điều này biểu thị cho WeaveCircularTLVBuffer có thể loại bỏ phần tử một cách an toàn. Mọi giá trị trả về khác đều được xem là lỗi và sẽ ngăn WeaveCircularTLVBuffer loại bỏ phần tử đang được xem xét.
Lưu ý: Bạn có thể dùng lệnh gọi lại này để buộc WeaveCircularTLVBuffer không loại bỏ phần tử này. Điều này có thể hữu ích trong một số trường hợp khi bạn muốn có vùng đệm tròn bên dưới nhưng không ghi đè bất kỳ phần tử nào trong đó.
Thông tin chi tiết | |||||||
---|---|---|---|---|---|---|---|
Các tham số |
|
||||||
Giá trị trả về |
|
Thuộc tính công khai
mAppData
void * mAppData
Ngữ cảnh không bắt buộc do người dùng cung cấp, được dùng với lệnh gọi lại đang xử lý phần tử bị loại bỏ.
mImplicitProfileId
uint32_t mImplicitProfileId
mProcessEvictedElement
ProcessEvictedElementFunct mProcessEvictedElement
Lệnh gọi lại không bắt buộc do người dùng cung cấp, giúp xử lý phần tử trước khi loại bỏ phần tử đó khỏi vùng đệm tròn.
Xem định nghĩa loại ProcessEvictedElementFunct để biết thêm thông tin về cách triển khai hàm mProcessEvictedElement.
Hàm công khai
AvailableDataLength
size_t AvailableDataLength( void ) const
DataLength
size_t DataLength( void ) const
EvictHead
WEAVE_ERROR EvictHead( void )
Loại bỏ phần tử TLV cấp cao nhất cũ nhất trong WeaveCircularTLVBuffer.
Hàm này xoá phần tử TLV cấp cao nhất cũ nhất trong vùng đệm. Hàm này sẽ gọi lệnh gọi lại đã đăng ký tại mProcessEvictedElement để xử lý phần tử trước khi xoá. Nếu lệnh gọi lại trả về bất kỳ giá trị nào trừ WEAVE_NO_ERROR, thì phần tử này sẽ không bị xoá. Tương tự như vậy, nếu có lỗi nào khác xảy ra, không có phần tử nào trong vùng đệm, v.v., thông số WeaveCircularTLVBuffer cơ bản vẫn không thay đổi.
Thông tin chi tiết | |||||
---|---|---|---|---|---|
Giá trị trả về |
|
FinalizeBuffer
WEAVE_ERROR FinalizeBuffer( TLVWriter & ioWriter, uint8_t *inBufStart, uint32_t inBufLen )
FinalizeBuffer điều chỉnh trạng thái WeaveCircularTLVBuffer
khi hoàn tất đầu ra từ TLVWriter.
Hàm này ảnh hưởng đến vị trí của đuôi hàng đợi.
Thông tin chi tiết | |||||||
---|---|---|---|---|---|---|---|
Các tham số |
|
||||||
Giá trị trả về |
|
GetNewBuffer
WEAVE_ERROR GetNewBuffer( TLVWriter & ioWriter, uint8_t *& outBufStart, uint32_t & outBufLen )
Tăng dung lượng cho TLVWriter.
Trên thực tế, hàm này loại bỏ một phần tử khỏi vùng đệm tròn và điều chỉnh phần đầu của hàng đợi bộ đệm này
Thông tin chi tiết | |||||||
---|---|---|---|---|---|---|---|
Các tham số |
|
||||||
Giá trị trả về |
|
GetNextBuffer
WEAVE_ERROR GetNextBuffer( TLVReader & ioReader, const uint8_t *& outBufStart, uint32_t & outBufLen )
Mua thêm dung lượng cho TLVReader.
Dung lượng lưu trữ do WeaveCircularTLVBuffer cung cấp có thể được bao bọc trong bộ đệm. Hàm này cho phép chúng ta so khớp vùng đệm của vùng đệm tròn với các quy tắc ràng buộc của TLVReader. Trình đọc sẽ đọc tối đa mQueueSize
byte từ vùng đệm.
Thông tin chi tiết | |||||||
---|---|---|---|---|---|---|---|
Các tham số |
|
||||||
Giá trị trả về |
|
GetQueue
uint8_t * GetQueue( void ) const
GetQueueSize
size_t GetQueueSize( void ) const
QueueHead
uint8_t * QueueHead( void ) const
QueueTail
uint8_t * QueueTail( void ) const
SetQueueHead
void SetQueueHead( uint8_t *aQueueHead )
SetQueueLength
void SetQueueLength( size_t aQueueLength )
WeaveCircularTLVBuffer
WeaveCircularTLVBuffer( uint8_t *inBuffer, size_t inBufferLength )
Hàm khởi tạo WeaveCircularTLVBuffer.
Thông tin chi tiết | |||||
---|---|---|---|---|---|
Các tham số |
|
WeaveCircularTLVBuffer
WeaveCircularTLVBuffer( uint8_t *inBuffer, size_t inBufferLength, uint8_t *inHead )
Hàm khởi tạo WeaveCircularTLVBuffer.
Thông tin chi tiết | |||||||
---|---|---|---|---|---|---|---|
Các tham số |
|
Hàm tĩnh công khai
FinalizeBufferFunct
WEAVE_ERROR FinalizeBufferFunct( TLVWriter & ioWriter, uintptr_t inBufHandle, uint8_t *inBufStart, uint32_t inBufLen )
Một thành phần phản hồi với thao tác nhấn vào WeaveCircularTLVBuffer::FinalizeBuffer.
Thông tin chi tiết | |||||||||
---|---|---|---|---|---|---|---|---|---|
Các tham số |
|
||||||||
Giá trị trả về |
|
GetNewBufferFunct
WEAVE_ERROR GetNewBufferFunct( TLVWriter & ioWriter, uintptr_t & inBufHandle, uint8_t *& outBufStart, uint32_t & outBufLen )
Một thành phần phản hồi với thao tác nhấn vào để tìm nạp thêm không gian cho TLVWriter.
Thông tin chi tiết | |||||||||
---|---|---|---|---|---|---|---|---|---|
Các tham số |
|
||||||||
Giá trị trả về |
|
GetNextBufferFunct
WEAVE_ERROR GetNextBufferFunct( TLVReader & ioReader, uintptr_t & inBufHandle, const uint8_t *& outBufStart, uint32_t & outBufLen )
Một thành phần phản hồi với thao tác nhấn vào WeaveCircularTLVBuffer::GetNextBuffer.
Thông tin chi tiết | |||||||||
---|---|---|---|---|---|---|---|---|---|
Các tham số |
|
||||||||
Giá trị trả về |
|