nl:: Weave:: TLV:: WeaveCircularTLVBuffer
#include <src/lib/core/WeaveCircularTLVBuffer.h>
WeaveCircularTLVBuffer 可为 nl::Weave::TLV::TLVWriter 和 nl::Weave::TLVTLVReader 提供循环存储空间。
摘要
只要各个 TLV 条目完全放入所提供的存储空间,nl::Weave::TLV::TLVWriter 就能够向 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)
|
在 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)
|
WeaveCircularTLVBuffer::FinalizeBuffer 的 trampoline。
|
GetNewBufferFunct(TLVWriter & ioWriter, uintptr_t & inBufHandle, uint8_t *& outBufStart, uint32_t & outBufLen)
|
用于为 TLVWriter 获取更多空间的 trampoline。
|
GetNextBufferFunct(TLVReader & ioReader, uintptr_t & inBufHandle, const uint8_t *& outBufStart, uint32_t & outBufLen)
|
WeaveCircularTLVBuffer::GetNextBuffer 的 trampoline。
|
公共类型
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 不逐出元素。在很多情况下,如果需要具有底层环形缓冲区,但不希望覆盖其中的任何元素,这会非常有用。
详细信息 | |||||||
---|---|---|---|---|---|---|---|
参数 |
|
||||||
返回值 |
|
公共属性
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 )
在 TLVWriter 完成输出时,FinalizeBuffer 会调整 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 的 trampoline。
详细信息 | |||||||||
---|---|---|---|---|---|---|---|---|---|
参数 |
|
||||||||
返回值 |
|
GetNewBufferFunct
WEAVE_ERROR GetNewBufferFunct( TLVWriter & ioWriter, uintptr_t & inBufHandle, uint8_t *& outBufStart, uint32_t & outBufLen )
用于为 TLVWriter 获取更多空间的 trampoline。
详细信息 | |||||||||
---|---|---|---|---|---|---|---|---|---|
参数 |
|
||||||||
返回值 |
|
GetNextBufferFunct
WEAVE_ERROR GetNextBufferFunct( TLVReader & ioReader, uintptr_t & inBufHandle, const uint8_t *& outBufStart, uint32_t & outBufLen )
WeaveCircularTLVBuffer::GetNextBuffer 的 trampoline。
详细信息 | |||||||||
---|---|---|---|---|---|---|---|---|---|
参数 |
|
||||||||
返回值 |
|