nl:: Weave:: TLV:: WeaveCircularTLVBuffer
#include <src/lib/core/WeaveCircularTLVBuffer.h>
WeaveCircularTLVBuffer proporciona almacenamiento circular para los nl::Weave::TLV::TLVWriter y nl::Weave::TLVTLVReader.
Resumen
nl::Weave::TLV::TLVWriter puede escribir una cantidad ilimitada de entradas TLV en WeaveCircularTLVBuffer, siempre que cada entrada individual TLV se ajuste completamente al almacenamiento proporcionado. nl::Weave::TLV::TLVReader leerá como máximo el tamaño del búfer, pero se ajustará el tamaño envolvente.
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 a la que se llama para procesar un elemento TLV antes de que sea expulsado del nl::Weave::TLV::WeaveCircularTLVBuffer. |
Atributos públicos |
|
---|---|
mAppData
|
void *
Un contexto opcional proporcionado por el usuario para usarse 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 de WeaveCircularTLVBuffer.
|
FinalizeBuffer(TLVWriter & ioWriter, uint8_t *inBufStart, uint32_t inBufLen)
|
FinalizeBuffer ajusta el estado
WeaveCircularTLVBuffer cuando se completa el resultado de TLVWriter. |
GetNewBuffer(TLVWriter & ioWriter, uint8_t *& outBufStart, uint32_t & outBufLen)
|
Obtén espacio adicional para el TLVWriter.
|
GetNextBuffer(TLVReader & ioReader, const uint8_t *& outBufStart, uint32_t & outBufLen)
|
Obtén espacio adicional para el 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 para 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
ProcesoExpulsadoElementoFund
WEAVE_ERROR(* ProcessEvictedElementFunct)(WeaveCircularTLVBuffer &inBuffer, void *inAppData, TLVReader &inReader)
Una función a la que se llama para procesar un elemento TLV antes de que sea expulsado del 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 nl::Weave::TLV::TLVReader, que se posiciona en el elemento que se va a borrar, y un contexto vacío * 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 significa que el elemento WeaveCircularTLVBuffer puede expulsarse de forma segura. Cualquier otro valor de retorno se considerará un error y evitará que WeaveCircularTLVBuffer expulse el elemento en cuestión.
Nota: Esta devolución de llamada se puede usar para forzar a WeaveCircularTLVBuffer a no expulsar el elemento. Esto puede ser útil en diversas circunstancias, cuando se desea tener un búfer circular subyacente, pero no para anular ningún elemento dentro de él.
Detalles | |||||||
---|---|---|---|---|---|---|---|
Parámetros |
|
||||||
Valores de retorno |
|
Atributos públicos
Datos móviles
void * mAppData
Un contexto opcional proporcionado por el usuario para usarse con la devolución de llamada que procesa el elemento expulsado.
ID de perfil de móvil
uint32_t mImplicitProfileId
Elemento electrónico expulsado
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 de tipo ProcessEvictedElementFunct para obtener información adicional sobre la implementación de la función mProcessEvictedElement.
Funciones públicas
Longitud de datos disponible
size_t AvailableDataLength( void ) const
Longitud de los datos
size_t DataLength( void ) const
Expulsarcabeza
WEAVE_ERROR EvictHead( void )
Expulsa el elemento TLV de nivel superior más antiguo de 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 la eliminación. Si la devolución de llamada muestra algo excepto WEAVE_NO_ERROR, no se quita el elemento. Del mismo modo, si no se produce ningún otro error dentro del búfer, etc., el WeaveCircularTLVBuffer subyacente no se modifica.
Detalles | |||||
---|---|---|---|---|---|
Valores de retorno |
|
Finalizar búfer
WEAVE_ERROR FinalizeBuffer( TLVWriter & ioWriter, uint8_t *inBufStart, uint32_t inBufLen )
FinalizeBuffer ajusta el estado WeaveCircularTLVBuffer
cuando se completa el resultado de TLVWriter.
Esta función afecta la posición de la cola.
Detalles | |||||||
---|---|---|---|---|---|---|---|
Parámetros |
|
||||||
Valores de retorno |
|
GetNewBuffer
WEAVE_ERROR GetNewBuffer( TLVWriter & ioWriter, uint8_t *& outBufStart, uint32_t & outBufLen )
Obtén espacio adicional para el 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 de retorno |
|
GetNextBuffer
WEAVE_ERROR GetNextBuffer( TLVReader & ioReader, const uint8_t *& outBufStart, uint32_t & outBufLen )
Obtén espacio adicional para el TLVReader.
El almacenamiento proporcionado por WeaveCircularTLVBuffer puede envolverse dentro del búfer. Esta función nos permite 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 de retorno |
|
GetQueue.
uint8_t * GetQueue( void ) const
GetQueueSize.
size_t GetQueueSize( void ) const
Cabeza de cola
uint8_t * QueueHead( void ) const
Cola
uint8_t * QueueTail( void ) const
SetQueueHead
void SetQueueHead( uint8_t *aQueueHead )
Longitud de la cola
void SetQueueLength( size_t aQueueLength )
Búfer de WeaveCircularTLV
WeaveCircularTLVBuffer( uint8_t *inBuffer, size_t inBufferLength )
Detalles | |||||
---|---|---|---|---|---|
Parámetros |
|
Búfer de WeaveCircularTLV
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 de retorno |
|
GetNewBufferFunct
WEAVE_ERROR GetNewBufferFunct( TLVWriter & ioWriter, uintptr_t & inBufHandle, uint8_t *& outBufStart, uint32_t & outBufLen )
Un trampolín para recuperar más espacio para TLVWriter.
Detalles | |||||||||
---|---|---|---|---|---|---|---|---|---|
Parámetros |
|
||||||||
Valores de retorno |
|
ObtenerNextBufferFunct
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 de retorno |
|