Google は、黒人コミュニティのための人種的公平の促進に取り組んでいます。詳細をご覧ください。
コレクションでコンテンツを整理 必要に応じて、コンテンツの保存と分類を行います。

nl::Weave::TLV::WeaveCircularTLVBuffer

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

WeaveCircularTLVBuffer は、nl::Weave::TLV::TLVWriter と nl::Weave::TLVTLVReader 用の円形ストレージを提供します。

まとめ

nl::Weave::TLV::TLVWriter は、制限なしの TLV エントリを WeaveCircularTLVBuffer に書き込むことができます。ただし、個々の 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(*)
TLV 要素を処理する前に呼び出される関数。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)

TLV 要素を処理する前に呼び出される関数。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
イベント処理中にエラーが発生しました。要素はバッファに残ります。この要素の削除をトリガーした書き込み関数が失敗します。

パブリック属性

モバイルアプリ

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 によって返されたその他のエラー。

最終処理バッファ

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
無条件。

新しいバッファの取得

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 

キューヘッド

uint8_t * QueueHead(
  void
) const 

キューテール

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]) に配置する必要があります。

静的パブリック関数

最終処理バッファ関数

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
無条件。

NewNewBufferFunct

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
無条件で成功します。