nl::Weave::TLV::WeaveCircularTLVBuffer

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

WeaveCircularTLVBuffer は、nl::Weave::TLV::TLVWriter と nl::Weave::TLVTLVReader に循環型ストレージを提供します。

概要

nl::Weave::TLV::TLVWriter は、それぞれの TLV エントリが指定のストレージ内に完全に収まっている限り、無制限の数の TLV エントリを WeaveCircularTLVBuffer に書き込むことができます。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(*)
TLVTLV 要素が nl::Weave::TLV::WeaveCircularTLVBuffer から削除される前に、その要素を処理するために呼び出される関数。

パブリック属性

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)
FinalizeBuffer は、TLVWriter からの出力の完了時に 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)
WeaveCircularTLVBuffer::FinalizeBuffer へのトランポリン。
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)
WeaveCircularTLVBuffer::GetNextBuffer へのトランポリン。

公開タイプ

ProcessEvictedElementFunct

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

TLVTLV 要素が nl::Weave::TLV::WeaveCircularTLVBuffer から削除される前に、その要素を処理するために呼び出される関数。

この型の関数は、バッファからエビクションされる予定の TLV 要素を処理するために使用されます。この関数には、削除しようとしている要素上にある nl::Weave::TLV::TLVReader と、ユーザーがコールバック用に追加の環境を提供した可能性のある void * コンテキストが渡されます。関数が要素を正常に処理した場合は、WEAVE_NO_ERROR が返されます。これは、要素を安全にエビクションできることを WeaveCircularTLVBuffer に通知します。その他の戻り値はエラーとして扱われ、WeaveCircularTLVBuffer で対象となる要素がエビクションされるのを防ぐことができます。

注: このコールバックは、WeaveCircularTLVBuffer で要素を強制排除しないようにする場合に使用できます。これはさまざまな状況で有用です。たとえば、内部に循環バッファを持たせたいが、その中のどの要素もオーバーライドしたくない場合などです。

詳細
パラメータ
[in] inBuffer
エビクションが行われるバッファへの参照。
[in] inAppData
このコールバックの追加コンテキストを含む、ユーザー提供の構造体へのポインタ。
[in] inReader
強制排除される要素に配置されている TLVReader
戻り値
WEAVE_NO_ERROR
成功時。要素が削除されます。
other
イベントの処理中にエラーが発生しました。要素はバッファに残ります。この要素のエビクションをトリガーした書き込み関数は失敗します。

パブリック属性

mAppData

void * mAppData

強制排除された要素を処理するコールバックで使用する、ユーザー指定のコンテキスト(省略可)。

mImplicitProfileId

uint32_t mImplicitProfileId

mProcessEvictedElement

ProcessEvictedElementFunct mProcessEvictedElement

要素を処理してから循環バッファから要素を削除する、ユーザー指定のコールバック(省略可)。

mProcessEvictedElement 関数の実装に関する追加情報については、ProcessEvictedElementFunct 型の定義をご覧ください。

パブリック関数

AvailableDataLength

size_t AvailableDataLength(
  void
) const 

DataLength

size_t DataLength(
  void
) const 

EvictHead

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
)

FinalizeBuffer は、TLVWriter からの出力の完了時に WeaveCircularTLVBuffer 状態を調整します。

この関数はキューのテール位置に影響します。

詳細
パラメータ
[in,out] ioWriter
この関数を呼び出す TLVWriter
[in] inBufStart
データの先頭を指すポインタ(TLVWriter から見た場合)
[in] inBufLen
inbufStart が指すバッファ内のデータの長さ
戻り値
WEAVE_NO_ERROR
無条件に

GetNewBuffer

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 

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 コンストラクタ。

詳細
パラメータ
[in] inBuffer
キューのバッキング ストアへのポインタ
[in] inBufferLength
バッキング ストアの長さ(バイト単位)

WeaveCircularTLVBuffer

 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
無条件に成功する。