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 で要素が強制排除されないようにすることができます。これは、さまざまな状況で役立ちます。基になる循環バッファは必要だが、その中のどの要素もオーバーライドしたくない場合に便利です。
詳細 | |||||||
---|---|---|---|---|---|---|---|
パラメータ |
|
||||||
戻り値 |
|
パブリック属性
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 は変更されません。
詳細 | |||||
---|---|---|---|---|---|
戻り値 |
|
FinalizeBuffer
WEAVE_ERROR FinalizeBuffer( TLVWriter & ioWriter, uint8_t *inBufStart, uint32_t inBufLen )
FinalizeBuffer は、TLVWriter からの出力の完了時に WeaveCircularTLVBuffer
状態を調整します。
この関数はキューの末尾の位置に影響を与えます。
詳細 | |||||||
---|---|---|---|---|---|---|---|
パラメータ |
|
||||||
戻り値 |
|
GetNewBuffer
WEAVE_ERROR GetNewBuffer( TLVWriter & ioWriter, uint8_t *& outBufStart, uint32_t & outBufLen )
GetNextBuffer
WEAVE_ERROR GetNextBuffer( TLVReader & ioReader, const uint8_t *& outBufStart, uint32_t & outBufLen )
TLVReader の追加容量を取得します。
WeaveCircularTLVBuffer によって提供されるストレージは、バッファ内でラップアラウンドされる場合があります。この関数を使用すると、循環バッファのバッファリングを TLVReader 制約に一致させることができます。リーダーはバッファから最大で mQueueSize
バイト読み取ります。
詳細 | |||||||
---|---|---|---|---|---|---|---|
パラメータ |
|
||||||
戻り値 |
|
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 コンストラクタ。
詳細 | |||||
---|---|---|---|---|---|
パラメータ |
|
WeaveCircularTLVBuffer
WeaveCircularTLVBuffer( uint8_t *inBuffer, size_t inBufferLength, uint8_t *inHead )
WeaveCircularTLVBuffer コンストラクタ。
詳細 | |||||||
---|---|---|---|---|---|---|---|
パラメータ |
|
静的パブリック関数
FinalizeBufferFunct
WEAVE_ERROR FinalizeBufferFunct( TLVWriter & ioWriter, uintptr_t inBufHandle, uint8_t *inBufStart, uint32_t inBufLen )
WeaveCircularTLVBuffer::FinalizeBuffer へのトランポリン。
詳細 | |||||||||
---|---|---|---|---|---|---|---|---|---|
パラメータ |
|
||||||||
戻り値 |
|
GetNewBufferFunct
WEAVE_ERROR GetNewBufferFunct( TLVWriter & ioWriter, uintptr_t & inBufHandle, uint8_t *& outBufStart, uint32_t & outBufLen )
TLVWriter の追加スペースを取得するためのトランポリン。
詳細 | |||||||||
---|---|---|---|---|---|---|---|---|---|
パラメータ |
|
||||||||
戻り値 |
|
GetNextBufferFunct
WEAVE_ERROR GetNextBufferFunct( TLVReader & ioReader, uintptr_t & inBufHandle, const uint8_t *& outBufStart, uint32_t & outBufLen )
WeaveCircularTLVBuffer::GetNextBuffer へのトランポリン。
詳細 | |||||||||
---|---|---|---|---|---|---|---|---|---|
パラメータ |
|
||||||||
戻り値 |
|