En Google, luchamos por la equidad racial de la comunidad negra. Más información
Organiza tus páginas con colecciones Guarda y categoriza el contenido según tus preferencias.

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

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
[in] inBuffer
Una referencia al búfer del cual 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 en el elemento que se expulsa.
Valores de retorno
WEAVE_NO_ERROR
Con é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 elementos fallará.

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

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
[in,out] ioWriter
TLVWriter que llama a esta función
[in] inBufStart
puntero al inicio de los datos (desde la perspectiva de TLVWriter)
[in] inBufLen
La 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 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
[in,out] ioWriter
TLVWriter que llama a esta función
[out] outBufStart
El puntero del nuevo búfer
[out] outBufLen
Longitud disponible para escribir
Valores de retorno
WEAVE_NO_ERROR
Con éxito.
other
Si la función no pudo seleccionar un elemento TLV de nivel superior completo.

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
[in] ioReader
TLVReader invocando 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
A cambio, se establece como la cantidad de bytes continuos que se pueden leer fuera del búfer.
Valores de retorno
WEAVE_NO_ERROR
Tiene éxito incondicional.

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
)

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

Búfer de WeaveCircularTLV

 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 de la cabeza. El puntero inHead debe estar dentro del almacenamiento de copia de seguridad del búfer circular, es decir, dentro de inBuffer y de (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 que 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
La 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 para recuperar más espacio para TLVWriter.

Detalles
Parámetros
[in,out] ioWriter
TLVWriter que llama a esta función
[in,out] inBufHandle
Un controlador para el objeto CircularTLVWriter
[out] outBufStart
El puntero del nuevo búfer
[out] outBufLen
Longitud disponible para escribir
Valores de retorno
WEAVE_NO_ERROR
Con éxito.
other
Si la función no pudo seleccionar un elemento TLV de nivel superior completo.

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
[in,out] ioReader
TLVReader que 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
A cambio, se establece como la cantidad de bytes continuos que se pueden leer fuera del búfer.
Valores de retorno
WEAVE_NO_ERROR
Tiene éxito incondicional.