nl:: Weave:: TLV:: WeaveCircularTLVBuffer
#include <src/lib/core/WeaveCircularTLVBuffer.h>
WeaveCircularTLVBuffer proporciona almacenamiento circular para nl::Weave::TLV::TLVWriter y nl::Weave::TLVTLVReader.
Resumen
nl::Weave::TLV::TLVWriter puede escribir una cantidad ilimitada de entradas de TLV en WeaveCircularTLVBuffer, siempre que cada entrada individual de TLV se ajuste completamente al almacenamiento proporcionado. nl::Weave::TLV::TLVReader leerá, como máximo, el tamaño del búfer, pero admitirá la unión dentro del búfer.
Constructores y destructores |
|
---|---|
WeaveCircularTLVBuffer(uint8_t *inBuffer, size_t inBufferLength)
|
|
WeaveCircularTLVBuffer(uint8_t *inBuffer, size_t inBufferLength, uint8_t *inHead)
|
Tipos públicos |
|
---|---|
ProcessEvictedElementFunct)(WeaveCircularTLVBuffer &inBuffer, void *inAppData, TLVReader &inReader)
|
WEAVE_ERROR(* Una función que se llama para procesar un elemento TLV antes de que se expulse de nl::Weave::TLV::WeaveCircularTLVBuffer. |
Atributos públicos |
|
---|---|
mAppData
|
void *
Contexto opcional proporcionado por el usuario que se usará con la devolución de llamada que procesa el elemento expulsado.
|
mImplicitProfileId
|
uint32_t
|
mProcessEvictedElement
|
Una devolución de llamada opcional proporcionada por el usuario que procesa el elemento antes de expulsarlo del búfer circular.
|
Funciones públicas |
|
---|---|
AvailableDataLength(void) const
|
size_t
|
DataLength(void) const
|
size_t
|
EvictHead(void)
|
Expulsa el elemento TLV de nivel superior más antiguo en WeaveCircularTLVBuffer.
|
FinalizeBuffer(TLVWriter & ioWriter, uint8_t *inBufStart, uint32_t inBufLen)
|
FinalizeBuffer ajusta el estado
WeaveCircularTLVBuffer cuando se completa la salida de TLVWriter |
GetNewBuffer(TLVWriter & ioWriter, uint8_t *& outBufStart, uint32_t & outBufLen)
|
Obtén espacio adicional para TLVWriter.
|
GetNextBuffer(TLVReader & ioReader, const uint8_t *& outBufStart, uint32_t & outBufLen)
|
Obtén espacio adicional para 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
|
Funciones estáticas públicas |
|
---|---|
FinalizeBufferFunct(TLVWriter & ioWriter, uintptr_t inBufHandle, uint8_t *inBufStart, uint32_t inBufLen)
|
Un trampolín para WeaveCircularTLVBuffer::FinalizeBuffer.
|
GetNewBufferFunct(TLVWriter & ioWriter, uintptr_t & inBufHandle, uint8_t *& outBufStart, uint32_t & outBufLen)
|
Un trampolín a fin de recuperar más espacio para TLVWriter
|
GetNextBufferFunct(TLVReader & ioReader, uintptr_t & inBufHandle, const uint8_t *& outBufStart, uint32_t & outBufLen)
|
Un trampolín para WeaveCircularTLVBuffer::GetNextBuffer.
|
Tipos públicos
ProcessEvictedElementFunct
WEAVE_ERROR(* ProcessEvictedElementFunct)(WeaveCircularTLVBuffer &inBuffer, void *inAppData, TLVReader &inReader)
Una función que se llama para procesar un elemento TLV antes de que se expulse de nl::Weave::TLV::WeaveCircularTLVBuffer.
Las funciones de este tipo se usan para procesar un elemento TLV que está a punto de ser expulsado del búfer. La función recibirá un elemento nl::Weave::TLV::TLVReader ubicado en el elemento a punto de borrarse, así como un contexto void * en el que el usuario puede haber proporcionado un entorno adicional para la devolución de llamada. Si la función procesó el elemento correctamente, debe mostrar WEAVE_NO_ERROR. Esto le indica a WeaveCircularTLVBuffer que el elemento puede expulsarse de forma segura. Cualquier otro valor que se muestre se tratará como un error y impedirá que WeaveCircularTLVBuffer expulse el elemento en cuestión.
Nota: Esta devolución de llamada se puede usar para forzar a WeaveCircularTLVBuffer a que no expulse el elemento. Esto puede ser útil en varias circunstancias, cuando se desea tener un búfer circular subyacente, pero no se debe anular ningún elemento dentro de él.
Detalles | |||||||
---|---|---|---|---|---|---|---|
Parámetros |
|
||||||
Valores que se muestran |
|
Atributos públicos
mAppData
void * mAppData
Contexto opcional proporcionado por el usuario que se usará con la devolución de llamada que procesa el elemento expulsado.
mImplicitProfileId
uint32_t mImplicitProfileId
mProcessEvictedElement
ProcessEvictedElementFunct mProcessEvictedElement
Una devolución de llamada opcional proporcionada por el usuario que procesa el elemento antes de expulsarlo del búfer circular.
Consulta la definición del tipo ProcessEvictedElementFunct para obtener información adicional sobre la implementación de la función mProcessEvictedElement.
Funciones públicas
AvailableDataLength
size_t AvailableDataLength( void ) const
DataLength
size_t DataLength( void ) const
EvictHead
WEAVE_ERROR EvictHead( void )
Expulsa el elemento TLV de nivel superior más antiguo en WeaveCircularTLVBuffer.
Esta función quita el elemento TLV de nivel superior más antiguo del búfer. La función llamará a la devolución de llamada registrada en mProcessEvictedElement para procesar el elemento antes de quitarlo. Si la devolución de llamada muestra un valor distinto de WEAVE_NO_ERROR, el elemento no se quita. De manera similar, si se produce algún otro error, no hay elementos dentro del búfer, etc., el WeaveCircularTLVBuffer subyacente no se modifica.
Detalles | |||||
---|---|---|---|---|---|
Valores que se muestran |
|
FinalizeBuffer
WEAVE_ERROR FinalizeBuffer( TLVWriter & ioWriter, uint8_t *inBufStart, uint32_t inBufLen )
FinalizeBuffer ajusta el estado WeaveCircularTLVBuffer
cuando se completa la salida de TLVWriter
Esta función afecta la posición de la cola de la cola.
Detalles | |||||||
---|---|---|---|---|---|---|---|
Parámetros |
|
||||||
Valores que se muestran |
|
GetNewBuffer
WEAVE_ERROR GetNewBuffer( TLVWriter & ioWriter, uint8_t *& outBufStart, uint32_t & outBufLen )
Obtén espacio adicional para TLVWriter.
En realidad, la función expulsa un elemento del búfer circular y ajusta el encabezado de esta cola de búfer
Detalles | |||||||
---|---|---|---|---|---|---|---|
Parámetros |
|
||||||
Valores que se muestran |
|
GetNextBuffer
WEAVE_ERROR GetNextBuffer( TLVReader & ioReader, const uint8_t *& outBufStart, uint32_t & outBufLen )
Obtén espacio adicional para TLVReader.
El almacenamiento que proporciona WeaveCircularTLVBuffer puede ser envolvente dentro del búfer. Esta función nos proporciona la capacidad de hacer coincidir el almacenamiento en búfer del búfer circular con las restricciones de TLVReader. El lector leerá, como máximo, mQueueSize
bytes del búfer.
Detalles | |||||||
---|---|---|---|---|---|---|---|
Parámetros |
|
||||||
Valores que se muestran |
|
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 )
Detalles | |||||
---|---|---|---|---|---|
Parámetros |
|
WeaveCircularTLVBuffer
WeaveCircularTLVBuffer( uint8_t *inBuffer, size_t inBufferLength, uint8_t *inHead )
Detalles | |||||||
---|---|---|---|---|---|---|---|
Parámetros |
|
Funciones estáticas públicas
FinalizeBufferFunct
WEAVE_ERROR FinalizeBufferFunct( TLVWriter & ioWriter, uintptr_t inBufHandle, uint8_t *inBufStart, uint32_t inBufLen )
Un trampolín para WeaveCircularTLVBuffer::FinalizeBuffer.
Detalles | |||||||||
---|---|---|---|---|---|---|---|---|---|
Parámetros |
|
||||||||
Valores que se muestran |
|
GetNewBufferFunct
WEAVE_ERROR GetNewBufferFunct( TLVWriter & ioWriter, uintptr_t & inBufHandle, uint8_t *& outBufStart, uint32_t & outBufLen )
Un trampolín a fin de recuperar más espacio para TLVWriter
Detalles | |||||||||
---|---|---|---|---|---|---|---|---|---|
Parámetros |
|
||||||||
Valores que se muestran |
|
GetNextBufferFunct
WEAVE_ERROR GetNextBufferFunct( TLVReader & ioReader, uintptr_t & inBufHandle, const uint8_t *& outBufStart, uint32_t & outBufLen )
Un trampolín para WeaveCircularTLVBuffer::GetNextBuffer.
Detalles | |||||||||
---|---|---|---|---|---|---|---|---|---|
Parámetros |
|
||||||||
Valores que se muestran |
|