透過集合功能整理內容 你可以依據偏好儲存及分類內容。

nl::編織::TLV::WeaveCircularTLVBuffer

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

WeaveCircularTLVBuffer 提供 nl::Weave::TLV::TLVWriter 和 nl::Weave::TLVTLVReader 的圓形儲存空間。

摘要

nl::Weave::TLV::TLVWriter 可以在 WeaveCircularTLVBuffer 中寫入無限量的 TLV 項目,前提是每個個別 TLV 項目都符合提供的儲存空間。nl::Weave::TLV::TLVReader 最多會讀取緩衝區大小,但會保留緩衝區中的包裝。

建構函式和解構工具

WeaveCircularTLVBuffer(uint8_t *inBuffer, size_t inBufferLength)
WeaveCircularTLVBuffer 建構函式。
WeaveCircularTLVBuffer(uint8_t *inBuffer, size_t inBufferLength, uint8_t *inHead)
WeaveCircularTLVBuffer 建構函式。

公開類型

ProcessEvictedElementFunct)(WeaveCircularTLVBuffer &inBuffer, void *inAppData, TLVReader &inReader) WEAVE_ERROR(*)
在從 nl::Weave::TLV::WeaveCircularTLVBuffer 移除 TLV 元素之前,會呼叫此函式的函式。

公開屬性

mAppData
void *
使用者提供的選用內容,與處理移除元素的回呼搭配使用。
mImplicitProfileId
uint32_t
mProcessEvictedElement
使用者提供的選用回呼,用於在環形緩衝區中移出元素之前處理該元素。

公用函式

AvailableDataLength(void) const
size_t
DataLength(void) const
size_t
EvictHead(void)
刪除 WeaveCircularTLVBuffer 中最舊的頂層 TLV 元素。
FinalizeBuffer(TLVWriter & ioWriter, uint8_t *inBufStart, uint32_t inBufLen)
使用 TLVWriter 輸出完成後,FinalizeBuffer 會調整 WeaveCircularTLVBuffer 狀態。
GetNewBuffer(TLVWriter & ioWriter, uint8_t *& outBufStart, uint32_t & outBufLen)
TLVWriter 取得更多空間。
GetNextBuffer(TLVReader & ioReader, const uint8_t *& outBufStart, uint32_t & outBufLen)
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

公開的靜態函式

FinalizeBufferFunct(TLVWriter & ioWriter, uintptr_t inBufHandle, uint8_t *inBufStart, uint32_t inBufLen)
GetNewBufferFunct(TLVWriter & ioWriter, uintptr_t & inBufHandle, uint8_t *& outBufStart, uint32_t & outBufLen)
TLVWriter 擷取更多空間的彈跳床。
GetNextBufferFunct(TLVReader & ioReader, uintptr_t & inBufHandle, const uint8_t *& outBufStart, uint32_t & outBufLen)

公開類型

ProcessEvictedElementFunct

WEAVE_ERROR(* ProcessEvictedElementFunct)(WeaveCircularTLVBuffer &inBuffer, void *inAppData, TLVReader &inReader)

在從 nl::Weave::TLV::WeaveCircularTLVBuffer 移除 TLV 元素之前,會呼叫此函式的函式。

這個類型的函式會處理即將從緩衝區中移除的 TLV 元素。這個函式會提供 nl::Weave::TLV::TLVReader,並放在元素待刪除的元素上,以及 * 使用者可能在回呼中提供的額外環境。如果函式成功處理元素,則必須傳回 WEAVE_NO_ERROR;這表示 WeaveCircularTLVBuffer 表示元素可以安全地移除。系統會將任何其他傳回值視為錯誤,並阻止 WeaveCircularTLVBuffer 移除考慮中的元素。

注意:這個回呼可能用於強制 WeaveCircularTLVBuffer 移除元素。在許多情況下,如果需要底層環形緩衝區,但不覆寫其中任何元素,這項功能就能派上用場。

詳情
參數
[in] inBuffer
參照移除來源的緩衝區
[in] inAppData
指向使用者提供結構的指標,其中含有這個回呼的額外背景資訊
[in] inReader
要移除的元素中的 TLVReader
傳回值
WEAVE_NO_ERROR
上傳成功。元素會遭到撤銷。
other
事件處理過程發生錯誤。此元素會保留在緩衝區中。觸發這個元素移除作業的寫入函式會失敗。

公開屬性

行動應用程式資料

void * mAppData

使用者提供的選用內容,與處理移除元素的回呼搭配使用。

mImplicitProfileId

uint32_t mImplicitProfileId

mProcessEvictedElement

ProcessEvictedElementFunct mProcessEvictedElement

使用者提供的選用回呼,用於在環形緩衝區中移出元素之前處理該元素。

如要進一步瞭解 mProcessEvictedElement 函式的實作方式,請參閱 ProcessEvictedElementFunct 類型定義。

公用函式

可用的資料長度

size_t AvailableDataLength(
  void
) const 

資料長度

size_t DataLength(
  void
) const 

伊娃塞頭

WEAVE_ERROR EvictHead(
  void
)

刪除 WeaveCircularTLVBuffer 中最舊的頂層 TLV 元素。

這個函式會移除緩衝區中最頂層的 TLV 元素。函式會呼叫在 mProcessEvictedElement 註冊的回呼,以在移除前處理元素。如果回呼傳回 WEAVE_NO_ERROR 以外的任何內容,元素就不會移除。同樣地,如果緩衝區中沒有任何其他錯誤,基礎 WeaveCircularTLVBuffer 就會維持不變。

詳情
傳回值
WEAVE_NO_ERROR
上傳成功。
other
由回呼或 TLVReader 傳回的任何其他錯誤。

FinalizeBuffer

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

使用 TLVWriter 輸出完成後,FinalizeBuffer 會調整 WeaveCircularTLVBuffer 狀態。

這個函式會影響佇列尾的位置。

詳情
參數
[in,out] ioWriter
TLVWriter 呼叫此函式
[in] inBufStart
指向資料開始的指標 (從 TLVWriter 的角度來看)
[in] inBufLen
緩衝區指向 inbufStart 的資料長度
傳回值
WEAVE_NO_ERROR
無條件。

新增緩衝區

WEAVE_ERROR GetNewBuffer(
  TLVWriter & ioWriter,
  uint8_t *& outBufStart,
  uint32_t & outBufLen
)

TLVWriter 取得更多空間。

實際上,函式會從圓形緩衝區中移出元素,並調整此緩衝區佇列的標頭

詳情
參數
[in,out] ioWriter
TLVWriter 呼叫此函式
[out] outBufStart
指向新緩衝區的指標
[out] outBufLen
可書寫的時間長度
傳回值
WEAVE_NO_ERROR
上傳成功。
other
如果函式無法清除完整的頂層 TLV 元素,

GetNextBuffer

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

TLVReader 取得更多空間。

WeaveCircularTLVBuffer 提供的儲存空間或許可以在緩衝區中包裝。此函式提供將緩衝區緩衝區緩衝區與 TLVReader 限製配對的功能。讀取器最多可從緩衝區讀取 mQueueSize 個位元組。

詳情
參數
[in] ioReader
TLVReader 呼叫此函式。
[in,out] outBufStart
資料緩衝區的參照。傳回時,會設為這個緩衝區中的 值。
[out] outBufLen
傳回時,請設定可從緩衝區中讀取的連續位元組數量。
傳回值
WEAVE_NO_ERROR
成功無條件。

GetQueue

uint8_t * GetQueue(
  void
) const 

取得佇列大小

size_t GetQueueSize(
  void
) const 

待播清單

uint8_t * QueueHead(
  void
) const 

QueueTail

uint8_t * QueueTail(
  void
) const 

SetQueueHead

void SetQueueHead(
  uint8_t *aQueueHead
)

設定佇列長度

void SetQueueLength(
  size_t aQueueLength
)

編織緩衝車 LLVBuffer

 WeaveCircularTLVBuffer(
  uint8_t *inBuffer,
  size_t inBufferLength
)

WeaveCircularTLVBuffer 建構函式。

詳情
參數
[in] inBuffer
指向佇列支援存放區的指標
[in] inBufferLength
備份商店的長度 (以位元組為單位)

編織緩衝車 LLVBuffer

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

WeaveCircularTLVBuffer 建構函式。

詳情
參數
[in] inBuffer
指向佇列支援存放區的指標
[in] inBufferLength
備份商店的長度 (以位元組為單位)
[in] inHead
頭部的起點。inHead 指標必須位於圓形緩衝區的備份存放區中,即 inBuffer 和 &(inBuffer[inBufferLength])

公開的靜態函式

FinalizeBufferFunct

WEAVE_ERROR FinalizeBufferFunct(
  TLVWriter & ioWriter,
  uintptr_t inBufHandle,
  uint8_t *inBufStart,
  uint32_t inBufLen
)

WeaveCircularTLVBuffer::FinalizeBuffer 的彈跳床。

詳情
參數
[in,out] ioWriter
TLVWriter 呼叫此函式
[in,out] inBufHandle
CircularTLVWriter 物件的處理常式
[in] inBufStart
指向資料開始的指標 (從 TLVWriter 的角度來看)
[in] inBufLen
緩衝區指向 inbufStart 的資料長度
傳回值
WEAVE_NO_ERROR
無條件。

GetNewBufferFunct

WEAVE_ERROR GetNewBufferFunct(
  TLVWriter & ioWriter,
  uintptr_t & inBufHandle,
  uint8_t *& outBufStart,
  uint32_t & outBufLen
)

TLVWriter 擷取更多空間的彈跳床。

詳情
參數
[in,out] ioWriter
TLVWriter 呼叫此函式
[in,out] inBufHandle
CircularTLVWriter 物件的處理常式
[out] outBufStart
指向新緩衝區的指標
[out] outBufLen
可書寫的時間長度
傳回值
WEAVE_NO_ERROR
上傳成功。
other
如果函式無法清除完整的頂層 TLV 元素,

GetNextBufferFunct

WEAVE_ERROR GetNextBufferFunct(
  TLVReader & ioReader,
  uintptr_t & inBufHandle,
  const uint8_t *& outBufStart,
  uint32_t & outBufLen
)

WeaveCircularTLVBuffer::GetNextBuffer 的彈跳床。

詳情
參數
[in,out] ioReader
TLVReader 呼叫此函式
[in,out] inBufHandle
CircularTLVWriter 物件的處理常式
[in,out] outBufStart
資料緩衝區的參照。傳回時,會設為這個緩衝區中的 值。
[out] outBufLen
傳回時,請設定可從緩衝區中讀取的連續位元組數量。
傳回值
WEAVE_NO_ERROR
成功無條件。