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 no delimitada de entradas TLV en WeaveCircularTLVBuffer, siempre y cuando cada entrada individual de TLV se ajuste por completo al almacenamiento proporcionado. nl::Weave::TLV::TLVReader leerá, como máximo, el tamaño del búfer, pero se adaptará al ajuste 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 a la que se llama para procesar un elemento TLV antes de que se expulse del nl::Weave::TLV::WeaveCircularTLVBuffer. |
Atributos públicos |
|
---|---|
mAppData
|
void *
Contexto opcional proporcionado por el usuario que se utilizará con la devolución de llamada que procesa el elemento expulsado.
|
mImplicitProfileId
|
uint32_t
|
mProcessEvictedElement
|
Es 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 finaliza la salida del 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 que recupere más espacio para el 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 a la que se llama para procesar un elemento TLV antes de que se expulse del nl::Weave::TLV::WeaveCircularTLVBuffer.
Las funciones de este tipo se usan para procesar un elemento TLV que está a punto de expulsarse del búfer. La función recibirá un nl::Weave::TLV::TLVReader posicionado en el elemento que está 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 significa para WeaveCircularTLVBuffer que el elemento se puede expulsar de forma segura. Cualquier otro valor que se muestre se tratará como un error y evitará que WeaveCircularTLVBuffer expulse el elemento en cuestión.
Nota: Esta devolución de llamada se puede usar para forzar WeaveCircularTLVBuffer a no expulsar el elemento. Esto puede ser útil en varias 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
mAppData
void * mAppData
Contexto opcional proporcionado por el usuario que se utilizará con la devolución de llamada que procesa el elemento expulsado.
mImplicitProfileId
uint32_t mImplicitProfileId
mProcessEvictedElement
ProcessEvictedElementFunct mProcessEvictedElement
Es 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 otra cosa que no sea WEAVE_NO_ERROR, el elemento no se quita. De manera similar, si se produce algún otro error, no hay elementos en el búfer, etc., el WeaveCircularTLVBuffer subyacente no se modificará.
Detalles | |||||
---|---|---|---|---|---|
Valores de retorno |
|
FinalizeBuffer
WEAVE_ERROR FinalizeBuffer( TLVWriter & ioWriter, uint8_t *inBufStart, uint32_t inBufLen )
FinalizeBuffer ajusta el estado WeaveCircularTLVBuffer
cuando finaliza la salida del TLVWriter.
Esta función afecta la posición de la cola 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 TLVWriter.
En realidad, la función expulsa un elemento del búfer circular y ajusta la cabeza 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 TLVReader.
El almacenamiento proporcionado por WeaveCircularTLVBuffer puede estar envolvente 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
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 de retorno |
|
GetNewBufferFunct
WEAVE_ERROR GetNewBufferFunct( TLVWriter & ioWriter, uintptr_t & inBufHandle, uint8_t *& outBufStart, uint32_t & outBufLen )
Un trampolín que recupere más espacio para el TLVWriter
Detalles | |||||||||
---|---|---|---|---|---|---|---|---|---|
Parámetros |
|
||||||||
Valores de retorno |
|
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 de retorno |
|