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)
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)

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
[in] inBuffer
Una referencia al búfer desde el que se realiza la expulsión
[in] inAppData
Un puntero a la estructura proporcionada por el usuario que contiene contexto adicional para esta devolución de llamada
[in] inReader
Un TLVReader posicionado en el elemento que se expulsará.
Valores de retorno
WEAVE_NO_ERROR
Si tiene éxito. Se expulsará el elemento.
other
Se produjo un error durante el procesamiento del evento. El elemento permanece en el búfer. La función de escritura que activó la expulsión de este elemento fallará.

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
WEAVE_NO_ERROR
Si tiene éxito.
other
En cualquier otro error que muestre la devolución de llamada o el TLVReader.

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
[in,out] ioWriter
TLVWriter llama a esta función.
[in] inBufStart
puntero al inicio de los datos (desde la perspectiva de TLVWriter)
[in] inBufLen
longitud de los datos en el búfer al que apunta inbufStart
Valores de retorno
WEAVE_NO_ERROR
Incondicionalmente.

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
[in,out] ioWriter
TLVWriter llama a esta función.
[out] outBufStart
El puntero para el nuevo búfer
[out] outBufLen
La longitud disponible para escribir
Valores de retorno
WEAVE_NO_ERROR
Si tiene éxito.
other
Si la función no pudo omitir un elemento TLV completo de nivel superior.

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
[in] ioReader
TLVReader llama a esta función.
[in,out] outBufStart
La referencia al búfer de datos. Cuando se muestra, se establece en un valor dentro de este búfer.
[out] outBufLen
En retorno, se establece en la cantidad de bytes continuos que se pueden leer fuera del búfer.
Valores de retorno
WEAVE_NO_ERROR
Se realiza de forma incondicional.

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.

Detalles
Parámetros
[in] inBuffer
Un puntero al almacén de copia de seguridad de la cola
[in] inBufferLength
Longitud, en bytes, del almacén de copia de seguridad

WeaveCircularTLVBuffer

 WeaveCircularTLVBuffer(
  uint8_t *inBuffer,
  size_t inBufferLength,
  uint8_t *inHead
)

WeaveCircularTLVBuffer.

Detalles
Parámetros
[in] inBuffer
Un puntero al almacén de copia de seguridad de la cola
[in] inBufferLength
Longitud, en bytes, del almacén de copia de seguridad
[in] inHead
Punto inicial de la cabeza. El puntero inHead debe encontrarse dentro del almacén de copia de seguridad del búfer circular, es decir, dentro de inBuffer y &(inBuffer[inBufferLength])

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
[in,out] ioWriter
TLVWriter llama a esta función.
[in,out] inBufHandle
Un controlador para el objeto CircularTLVWriter
[in] inBufStart
puntero al inicio de los datos (desde la perspectiva de TLVWriter)
[in] inBufLen
longitud de los datos en el búfer al que apunta inbufStart
Valores de retorno
WEAVE_NO_ERROR
Incondicionalmente.

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
[in,out] ioWriter
TLVWriter llama a esta función.
[in,out] inBufHandle
Un controlador para el objeto CircularTLVWriter
[out] outBufStart
El puntero para el nuevo búfer
[out] outBufLen
La longitud disponible para escribir
Valores de retorno
WEAVE_NO_ERROR
Si tiene éxito.
other
Si la función no pudo omitir un elemento TLV completo de nivel superior.

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
[in,out] ioReader
TLVReader llama a esta función.
[in,out] inBufHandle
Un controlador para el objeto CircularTLVWriter
[in,out] outBufStart
La referencia al búfer de datos. Cuando se muestra, se establece en un valor dentro de este búfer.
[out] outBufLen
En retorno, se establece en la cantidad de bytes continuos que se pueden leer fuera del búfer.
Valores de retorno
WEAVE_NO_ERROR
Se realiza de forma incondicional.