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(
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)
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)

nl::Weave::TLV::WeaveCircularTLVBuffer から強制排除される前に、TLV 要素を処理するために呼び出される関数。

このタイプの関数は、バッファから強制排除される 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
無条件に成功します。