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.

nl :: Dệt :: TLV :: WeaveCircularTLVBuffer

#include <src/lib/core/WeaveCircularTLVBuffer.h>

WeaveCircularTLVBuffer cung cấp 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ể viết một số không giới hạn của TLV mục vào WeaveCircularTLVBuffer miễn là mỗi cá nhân TLV fits nhập hoàn toàn trong việc lưu trữ được cung cấp. Cácnl :: Weave :: TLV :: TLVReader sẽ đọc tại hầu hết các kích thước của bộ đệm, nhưng sẽ thích ứng với bao quanh 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)
WeaveCircularTLVBuffer constructor.

Các loại công khai

ProcessEvictedElementFunct )(WeaveCircularTLVBuffer &inBuffer, void *inAppData, TLVReader &inReader) WEAVE_ERROR (*
Một chức năng được gọi để xử lý một TLV yếu tố trước khi nó bị đuổi khỏi các 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)
Evicts các cấp cao nhất lâu đời nhất TLV phần tử trong WeaveCircularTLVBuffer .
FinalizeBuffer (TLVWriter & ioWriter, uint8_t *inBufStart, uint32_t inBufLen)
FinalizeBuffer điều chỉnh WeaveCircularTLVBuffer nhà nước khi hoàn thành đầu ra từTLVWriter .
GetNewBuffer (TLVWriter & ioWriter, uint8_t *& outBufStart, uint32_t & outBufLen)
Nhận thêm không gian choTLVWriter .
GetNextBuffer (TLVReader & ioReader, const uint8_t *& outBufStart, uint32_t & outBufLen)
Nhận thêm không gian 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 nhiều không gian hơn 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 chức năng được gọi để xử lý một TLV yếu tố trước khi nó bị đuổi khỏi các nl :: Weave :: TLV :: WeaveCircularTLVBuffer .

Chức năng của loại hình này được sử dụng để xử lý một TLV yếu tố sắp bị đuổi khỏi bộ đệm. Các chức năng sẽ được cung cấp mộtnl :: Weave :: TLV :: TLVReader đặt trên các yếu tố sắp bị xóa, cũng như bối cảnh * khoảng trống nơi người dùng có thể đã cung cấp môi trường bổ sung cho các callback. Nếu chức năng xử lý các phần tử thành công, nó phải trả lại WEAVE_NO_ERROR ; biểu thị này đến WeaveCircularTLVBuffer rằng nguyên tố này có thể bị đuổi một cách an toàn. Bất kỳ giá trị trả về khác được coi là một lỗi và sẽ ngăn chặn sự WeaveCircularTLVBuffer từ trục xuất các phần tử đang được xem xét.

Lưu ý: callback này có thể được sử dụng để buộc WeaveCircularTLVBuffer không đuổi các 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 đặt ở phần tử bị đuổi.
Giá trị trả lại
WEAVE_NO_ERROR
Về thành công. Phần tử sẽ bị trục xuất.
other
Đã xảy ra lỗi trong quá trình xử lý sự kiện. Phần tử vẫn 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 sẽ xử lý phần tử trước khi loại bỏ nó 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
)

Evicts các cấp cao nhất lâu đời nhất TLV phần tử trong WeaveCircularTLVBuffer .

Chức năng này loại bỏ các cấp cao nhất lâu đời nhất TLV yếu tố trong bộ đệm. Các chức năng sẽ gọi callback đăng ký tại mProcessEvictedElement để xử lý các yếu tố trước khi loại bỏ. Nếu gọi lại trả về bất cứ điều gì nhưng WEAVE_NO_ERROR , nguyên tố này không được cắt bỏ. Tương tự như vậy, nếu có lỗi khác xảy ra không có các yếu tố trong bộ đệm, vv nằm dưới WeaveCircularTLVBuffer vẫn không thay đổi.

Chi tiết
Giá trị trả lại
WEAVE_NO_ERROR
Về thành công.
other
Trên bất kỳ lỗi khác trở hoặc bằng cách gọi lại hoặc doTLVReader .

FinalizeBuffer

WEAVE_ERROR FinalizeBuffer(
  TLVWriter & ioWriter,
  uint8_t *inBufStart,
  uint32_t inBufLen
)

FinalizeBuffer điều chỉnh WeaveCircularTLVBuffer nhà nước 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 chức năng này
[in] inBufStart
con trỏ đến đầu của dữ liệu (từ TLVWriter quan điểm)
[in] inBufLen
chiều dài của dữ liệu trong bộ đệm được trỏ đến bởi inbufStart
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 không gian 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 chức năng 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ể bõ mẫu âm chót một top-level hoàn TLV phần tử.

GetNextBuffer

WEAVE_ERROR GetNextBuffer(
  TLVReader & ioReader,
  const uint8_t *& outBufStart,
  uint32_t & outBufLen
)

Nhận thêm không gian choTLVReader .

Việc lưu trữ được cung cấp bởi các WeaveCircularTLVBuffer chưa bao quanh trong bộ đệm. Chức năng này cung cấp cho chúng ta khả năng để phù hợp với đệm của bộ đệm tròn đếnTLVReader ràng buộc. 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
)

WeaveCircularTLVBuffer constructor.

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
)

WeaveCircularTLVBuffer constructor.

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 chức năng này
[in,out] inBufHandle
Một handle các CircularTLVWriter đối tượng
[in] inBufStart
con trỏ đến đầu của dữ liệu (từ TLVWriter quan điểm)
[in] inBufLen
chiều dài của dữ liệu trong bộ đệm được trỏ đến bởi inbufStart
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 nhiều không gian hơn choTLVWriter .

Chi tiết
Thông số
[in,out] ioWriter
TLVWriter gọi chức năng này
[in,out] inBufHandle
Một handle các CircularTLVWriter đối tượng
[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ể bõ mẫu âm chót một top-level hoàn TLV phần tử.

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 chức năng này
[in,out] inBufHandle
Một handle các CircularTLVWriter đối tượng
[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.