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

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
[in] inBuffer
Una referencia al búfer del que se produce 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 ubicado en el elemento que se expulsará.
Valores que se muestran
WEAVE_NO_ERROR
Si la operación es exitosa. 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 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
WEAVE_NO_ERROR
Si la operación es exitosa.
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 se completa la salida de 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 que se muestran
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 el encabezado de esta cola de búfer

Detalles
Parámetros
[in,out] ioWriter
TLVWriter llama a esta función
[out] outBufStart
El puntero del nuevo búfer
[out] outBufLen
La longitud disponible para la redacción
Valores que se muestran
WEAVE_NO_ERROR
Si la operación es exitosa.
other
Si la función no pudo eludir 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 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
[in] ioReader
TLVReader llama a esta función.
[in,out] outBufStart
Es la referencia al búfer de datos. Cuando se muestra, se establece en un valor dentro de este búfer.
[out] outBufLen
Cuando se muestra, se establece en la cantidad de bytes continuos que se pueden leer fuera del búfer.
Valores que se muestran
WEAVE_NO_ERROR
Éxito incondicionalmente.

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 para 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 para la cola
[in] inBufferLength
Longitud, en bytes, del almacén de copia de seguridad
[in] inHead
Punto inicial para 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 que se muestran
WEAVE_NO_ERROR
Incondicionalmente.

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
[in,out] ioWriter
TLVWriter llama a esta función
[in,out] inBufHandle
Un controlador para el objeto CircularTLVWriter
[out] outBufStart
El puntero del nuevo búfer
[out] outBufLen
La longitud disponible para la redacción
Valores que se muestran
WEAVE_NO_ERROR
Si la operación es exitosa.
other
Si la función no pudo eludir 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
Es la referencia al búfer de datos. Cuando se muestra, se establece en un valor dentro de este búfer.
[out] outBufLen
Cuando se muestra, se establece en la cantidad de bytes continuos que se pueden leer fuera del búfer.
Valores que se muestran
WEAVE_NO_ERROR
Éxito incondicionalmente.