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ố lượng mục TLV không giới hạn vào WeaveCircularTLVBuffer miễn là mỗi mục TLV riêng lẻ hoàn toàn nằm vừa vặn trong 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 vùng đệm trong bộ đệm.
Hàm khởi tạo và phá huỷ |
|
---|---|
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 bị loại khỏi nl::Weave::TLV::WeaveCircularTLVBuffer. |
Các 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 để sử dụng cùng với lệnh gọi lại giúp 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 sẽ xử lý phần tử trước khi loại 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 thành đầu ra từ TLVWriter. |
GetNewBuffer(TLVWriter & ioWriter, uint8_t *& outBufStart, uint32_t & outBufLen)
|
Lấy thêm không gian cho TLVWriter.
|
GetNextBuffer(TLVReader & ioReader, const uint8_t *& outBufStart, uint32_t & outBufLen)
|
Mua thêm không gian 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 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 bị loại khỏi nl::Weave::TLV::WeaveCircularTLVBuffer.
Các hàm thuộc loại này được dùng để xử lý phần tử TLV sắp bị loại khỏi vùng đệm. Hàm này sẽ được cung cấp một nl::Weave::TLV::TLVReader được đặt trên phần tử sắp bị xoá, cũng như ngữ cảnh void * mà 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, hàm phải trả về WEAVE_NO_ERROR; điều này cho biết WeaveCircularTLVBuffer rằng phần tử này có thể được loại bỏ một cách an toàn. Mọi giá trị trả về 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ể dùng để 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ó một vùng đệm tròn cơ bản nhưng không ghi đè bất kỳ phần tử nào trong đó.
Thông tin chi tiết | |||||||
---|---|---|---|---|---|---|---|
Tham số |
|
||||||
Giá trị trả về |
|
Các 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 để sử dụng cùng với lệnh gọi lại giúp 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 sẽ xử lý phần tử trước khi loại phần tử đó khỏi vùng đệm tròn.
Hãy 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ự, nếu bất kỳ lỗi nào khác xảy ra mà không có phần tử nào trong vùng đệm, v.v. thì WeaveCircularTLVBuffer cơ bản sẽ 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 thành đầ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 | |||||||
---|---|---|---|---|---|---|---|
Tham số |
|
||||||
Giá trị trả về |
|
GetNewBuffer
WEAVE_ERROR GetNewBuffer( TLVWriter & ioWriter, uint8_t *& outBufStart, uint32_t & outBufLen )
Lấy thêm không gian cho TLVWriter.
Trên thực tế, hàm này sẽ 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 | |||||||
---|---|---|---|---|---|---|---|
Tham số |
|
||||||
Giá trị trả về |
|
GetNextBuffer
WEAVE_ERROR GetNextBuffer( TLVReader & ioReader, const uint8_t *& outBufStart, uint32_t & outBufLen )
Mua thêm không gian cho TLVReader.
Bộ nhớ do WeaveCircularTLVBuffer cung cấp có thể bao bọc trong vùng đệm. Hàm này cung cấp cho chúng ta khả năng khớp bộ đệ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 | |||||||
---|---|---|---|---|---|---|---|
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 | |||||
---|---|---|---|---|---|
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 | |||||||
---|---|---|---|---|---|---|---|
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 | |||||||||
---|---|---|---|---|---|---|---|---|---|
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 thêm không gian cho TLVWriter.
Thông tin chi tiết | |||||||||
---|---|---|---|---|---|---|---|---|---|
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 | |||||||||
---|---|---|---|---|---|---|---|---|---|
Tham số |
|
||||||||
Giá trị trả về |
|