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