нл:: Переплетение:: ТЛВ:: 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(*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) | Удаляет самый старый элемент TLV верхнего уровня в WeaveCircularTLVBuffer . |
FinalizeBuffer ( TLVWriter & ioWriter, uint8_t *inBufStart, uint32_t inBufLen) | FinalizeBuffer настраивает состояние WeaveCircularTLVBuffer по завершении вывода из TLVWriter . |
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 не исключать элемент. Это может быть полезно в ряде случаев, когда желательно иметь базовый циклический буфер, но не переопределять какие-либо элементы внутри него.
Подробности | |||||||
---|---|---|---|---|---|---|---|
Параметры |
| ||||||
Возвращаемые значения |
|
Публичные атрибуты
mAppData
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 )
Удаляет самый старый элемент TLV верхнего уровня в WeaveCircularTLVBuffer .
Эта функция удаляет самый старый элемент TLV верхнего уровня в буфере. Функция вызовет обратный вызов, зарегистрированный в mProcessEvictedElement, для обработки элемента перед удалением. Если обратный вызов возвращает что-либо, кроме WEAVE_NO_ERROR , элемент не удаляется. Аналогично, если возникает какая-либо другая ошибка, в буфере отсутствуют элементы и т. д., базовый WeaveCircularTLVBuffer остается неизменным.
Подробности | |||||
---|---|---|---|---|---|
Возвращаемые значения |
|
Финализироватьбуфер
WEAVE_ERROR FinalizeBuffer( TLVWriter & ioWriter, uint8_t *inBufStart, uint32_t inBufLen )
FinalizeBuffer настраивает состояние WeaveCircularTLVBuffer
по завершении вывода из TLVWriter .
Эта функция влияет на положение хвоста очереди.
Подробности | |||||||
---|---|---|---|---|---|---|---|
Параметры |
| ||||||
Возвращаемые значения |
|
GetNewBuffer
WEAVE_ERROR GetNewBuffer( TLVWriter & ioWriter, uint8_t *& outBufStart, uint32_t & outBufLen )
Получите дополнительное место для TLVWriter .
На самом деле функция удаляет элемент из кольцевого буфера и корректирует заголовок этой буферной очереди.
Подробности | |||||||
---|---|---|---|---|---|---|---|
Параметры |
| ||||||
Возвращаемые значения |
|
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
ОчередьHead
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 .
Подробности | |||||||||
---|---|---|---|---|---|---|---|---|---|
Параметры |
| ||||||||
Возвращаемые значения |
|