Google cam kết thúc đẩy công bằng chủng tộc cho Cộng đồng người da đen. Xem cách thực hiện.
Trang này được dịch bởi Cloud Translation API.
Switch to English

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)
WeaveCircularTLVBuffer (uint8_t *inBuffer, size_t inBufferLength, uint8_t *inHead)

Các loại công khai

ProcessEvictedElementFunct )(WeaveCircularTLVBuffer &inBuffer, void *inAppData, TLVReader &inReader) 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)
Kích hoạt phần tử TLV cấp cao nhất lâu đời nhất trong Bộ đệm 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)
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ố
[in] inBuffer
Tham chiếu đến vùng đệm mà từ đó việc trục xuất diễn ra
[in] inAppData
Một con trỏ đến cấu trúc do người dùng cung cấp có chứa ngữ cảnh bổ sung cho lệnh gọi lại này
[in] inReader
MộtTLVReader được định vị tại phần tử cần loại bỏ.
Giá trị trả lại
WEAVE_NO_ERROR
Về thành công. Phần tử sẽ bị loại bỏ.
other
Đã xảy ra lỗi trong quá trình xử lý sự kiện. Phần tử nằm trong bộ đệm. Chức năng ghi đã kích hoạt loại bỏ phần tử này sẽ không thành công.

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
WEAVE_NO_ERROR
Về thành công.
other
Đối với bất kỳ lỗi nào khác được trả về bởi cuộc gọi lại hoặc bởiTLVReader .

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ố
[in,out] ioWriter
TLVWriter gọi hàm này
[in] inBufStart
con trỏ đến đầu dữ liệu (từ góc nhìn TLVWriter )
[in] inBufLen
độ dài của dữ liệu trong bộ đệm được inbufStart trỏ đến
Giá trị trả lại
WEAVE_NO_ERROR
Một cách vô điều kiện.

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ố
[in,out] ioWriter
TLVWriter gọi hàm này
[out] outBufStart
Con trỏ đến bộ đệm mới
[out] outBufLen
Độ dài có sẵn để viết
Giá trị trả lại
WEAVE_NO_ERROR
Về thành công.
other
Nếu chức năng không thể làm sạch một phần tử TLV cấp cao nhất hoàn chỉnh.

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ố
[in] ioReader
TLVReader gọi chức năng này.
[in,out] outBufStart
Tham chiếu đến bộ đệm dữ liệu. Đổi lại, nó được đặt thành một giá trị trong bộ đệm này.
[out] outBufLen
Đổi lại, đặt thành số byte liên tục có thể được đọc ra khỏi bộ đệm.
Giá trị trả lại
WEAVE_NO_ERROR
Thành công vô điều kiện.

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ố
[in] inBuffer
Một con trỏ đến cửa hàng hỗ trợ cho hàng đợi
[in] inBufferLength
Chiều dài, tính bằng byte, của kho dự trữ

WeaveCircularTLVBuffer

 WeaveCircularTLVBuffer(
  uint8_t *inBuffer,
  size_t inBufferLength,
  uint8_t *inHead
)

Hàm tạo WeaveCircularTLVBuffer .

Chi tiết
Thông số
[in] inBuffer
Một con trỏ đến cửa hàng hỗ trợ cho hàng đợi
[in] inBufferLength
Chiều dài, tính bằng byte, của kho dự trữ
[in] inHead
Điểm ban đầu cho người đứng đầu. Con trỏ inHead là phải nằm trong các cửa hàng ủng hộ cho bộ đệm tròn, tức là trong vòng inBuffer và & (inBuffer [inBufferLength])

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ố
[in,out] ioWriter
TLVWriter gọi hàm này
[in,out] inBufHandle
Một điều khiển đối tượng CircularTLVWriter
[in] inBufStart
con trỏ đến đầu dữ liệu (từ góc nhìn TLVWriter )
[in] inBufLen
độ dài của dữ liệu trong bộ đệm được inbufStart trỏ đến
Giá trị trả lại
WEAVE_NO_ERROR
Một cách vô điều kiện.

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ố
[in,out] ioWriter
TLVWriter gọi hàm này
[in,out] inBufHandle
Một điều khiển đối tượng CircularTLVWriter
[out] outBufStart
Con trỏ đến bộ đệm mới
[out] outBufLen
Độ dài có sẵn để viết
Giá trị trả lại
WEAVE_NO_ERROR
Về thành công.
other
Nếu chức năng không thể làm sạch một phần tử TLV cấp cao nhất hoàn chỉnh.

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ố
[in,out] ioReader
TLVReader gọi hàm này
[in,out] inBufHandle
Một điều khiển đối tượng CircularTLVWriter
[in,out] outBufStart
Tham chiếu đến bộ đệm dữ liệu. Đổi lại, nó được đặt thành một giá trị trong bộ đệm này.
[out] outBufLen
Đổi lại, đặt thành số byte liên tục có thể được đọc ra khỏi bộ đệm.
Giá trị trả lại
WEAVE_NO_ERROR
Thành công vô điều kiện.