En Google, luchamos por la equidad racial de la comunidad negra. Más información

nl :: Tejido:: TLV :: TejidoCircularTLVBuffer

#include <src/lib/core/WeaveCircularTLVBuffer.h>

WeaveCircularTLVBuffer proporciona almacenamiento circular para elnl :: Armadura :: :: TLV TLVWriter y NL :: :: Armadura TLVTLVReader.

Resumen

nl :: Weave :: TLV :: TLVWriter es capaz de escribir un número ilimitado de TLV entradas a la WeaveCircularTLVBuffer siempre que cada individuales TLV única entrada completamente dentro del almacenamiento previsto. Lanl :: Armadura :: :: TLV TLVReader leerá como máximo el tamaño de la memoria intermedia, pero se acomoda a la envolvente dentro de la memoria intermedia.

Constructores y Destructores

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

Tipos públicos

ProcessEvictedElementFunct )(WeaveCircularTLVBuffer &inBuffer, void *inAppData, TLVReader &inReader) WEAVE_ERROR (*
Una función que se llama para procesar un TLV elemento antes de ser desalojado de la nl :: Armadura :: :: TLV WeaveCircularTLVBuffer .

Atributos públicos

mAppData
void *
Un contexto opcional proporcionado por el usuario que se utilizará con la devolución de llamada procesando el elemento desalojado.
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 publicas

AvailableDataLength (void) const
size_t
DataLength (void) const
size_t
EvictHead (void)
Desaloja el nivel superior más antigua TLV elemento en el WeaveCircularTLVBuffer .
FinalizeBuffer (TLVWriter & ioWriter, uint8_t *inBufStart, uint32_t inBufLen)
FinalizeBuffer ajustar el WeaveCircularTLVBuffer estado en la finalización de la producción de laTLVWriter .
GetNewBuffer (TLVWriter & ioWriter, uint8_t *& outBufStart, uint32_t & outBufLen)
Obtener un espacio adicional para elTLVWriter .
GetNextBuffer (TLVReader & ioReader, const uint8_t *& outBufStart, uint32_t & outBufLen)
Obtener un espacio adicional para elTLVReader .
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 ir a buscar más espacio para elTLVWriter .
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 TLV elemento antes de ser desalojado de la nl :: Armadura :: :: TLV WeaveCircularTLVBuffer .

Funciones de este tipo se utilizan para procesar un TLV elemento a punto de ser desalojado de la memoria intermedia. Se dará la función de unnl :: Weave :: TLV :: TLVReader posicionado en el elemento de punto de ser eliminado, así como contexto void * donde el usuario puede haber proporcionado entorno adicional para la devolución de llamada. Si la función de procesar el elemento de éxito, debe devolver WEAVE_NO_ERROR ; Esto significa a la WeaveCircularTLVBuffer que el elemento puede ser desalojado de forma segura. Cualquier otro valor de retorno se trata como un error y evitará que el WeaveCircularTLVBuffer de desalojar el elemento bajo consideración.

Nota: Esta devolución de llamada puede ser usado para forzar WeaveCircularTLVBuffer de no desalojar el elemento. Esto puede ser útil en varias circunstancias, cuando se desea tener un búfer circular subyacente, pero no anular ningún elemento dentro de él.

Detalles
Parámetros
[in] inBuffer
Una referencia al búfer desde el que tiene lugar el desalojo.
[in] inAppData
Un puntero a la estructura proporcionada por el usuario que contiene contexto adicional para esta devolución de llamada
[in] inReader
ATLVReader coloca en el elemento a ser desalojado.
Valores devueltos
WEAVE_NO_ERROR
Sobre el éxito. El elemento será desalojado.
other
Ha ocurrido un error durante el procesamiento del evento. El elemento permanece en el búfer. La función de escritura que activó el desalojo de este elemento fallará.

Atributos públicos

mAppData

void * mAppData

Un contexto opcional proporcionado por el usuario que se utilizará con la devolución de llamada que procesa el elemento desalojado.

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.

Consulte la definición de tipo ProcessEvictedElementFunct para obtener información adicional sobre la implementación de la función mProcessEvictedElement.

Funciones publicas

AvailableDataLength

size_t AvailableDataLength(
  void
) const 

Longitud de datos

size_t DataLength(
  void
) const 

EvictHead

WEAVE_ERROR EvictHead(
  void
)

Desaloja el nivel superior más antigua TLV elemento en el WeaveCircularTLVBuffer .

Esta función elimina el nivel superior más antigua TLV elemento en la memoria intermedia. La función llamará a la devolución de llamada registrada en mProcessEvictedElement para procesar el elemento antes de la extracción. Si la devolución de llamada devuelve nada pero WEAVE_NO_ERROR , no se elimina el elemento. Del mismo modo, si se produce cualquier otro error no hay elementos dentro de la memoria intermedia, etc el subyacente WeaveCircularTLVBuffer permanece sin cambios.

Detalles
Valores devueltos
WEAVE_NO_ERROR
Sobre el éxito.
other
En cualquier otro error devuelto ya sea por la devolución de llamada o por elTLVReader .

FinalizarBuffer

WEAVE_ERROR FinalizeBuffer(
  TLVWriter & ioWriter,
  uint8_t *inBufStart,
  uint32_t inBufLen
)

FinalizeBuffer ajustar el WeaveCircularTLVBuffer estado en la finalización de la producción de laTLVWriter .

Esta función afecta la posición de la cola de la cola.

Detalles
Parámetros
[in,out] ioWriter
TLVWriter llamar a esta función
[in] inBufStart
puntero al comienzo de los datos (de TLVWriter perspectiva)
[in] inBufLen
longitud de los datos en la memoria intermedia a la que apunta inbufStart
Valores devueltos
WEAVE_NO_ERROR
Incondicionalmente.

GetNewBuffer

WEAVE_ERROR GetNewBuffer(
  TLVWriter & ioWriter,
  uint8_t *& outBufStart,
  uint32_t & outBufLen
)

Obtener un espacio adicional para elTLVWriter .

En realidad, la función expulsa un elemento del búfer circular y ajusta el encabezado de esta cola del búfer

Detalles
Parámetros
[in,out] ioWriter
TLVWriter llamar a esta función
[out] outBufStart
El puntero al nuevo búfer
[out] outBufLen
La longitud disponible para escribir
Valores devueltos
WEAVE_NO_ERROR
Sobre el éxito.
other
Si la función no fue capaz de eludir un completo nivel superior TLV elemento.

GetNextBuffer

WEAVE_ERROR GetNextBuffer(
  TLVReader & ioReader,
  const uint8_t *& outBufStart,
  uint32_t & outBufLen
)

Obtener un espacio adicional para elTLVReader .

El almacenamiento proporcionado por el WeaveCircularTLVBuffer puede wraparound dentro de la memoria intermedia. Esta función nos proporciona la capacidad para que coincida con el búfer de la memoria intermedia circular a losTLVReader limitaciones. El lector podrá leer en la mayoría de mQueueSize bytes desde el buffer.

Detalles
Parámetros
[in] ioReader
TLVReader llamar a esta función.
[in,out] outBufStart
La referencia al búfer de datos. Al regresar, se establece en un valor dentro de este búfer.
[out] outBufLen
Al regresar, establezca el número de bytes continuos que se pueden leer del búfer.
Valores devueltos
WEAVE_NO_ERROR
Tiene éxito incondicionalmente.

GetQueue

uint8_t * GetQueue(
  void
) const 

GetQueueSize

size_t GetQueueSize(
  void
) const 

QueueHead

uint8_t * QueueHead(
  void
) const 

Cola Cola

uint8_t * QueueTail(
  void
) const 

SetQueueHead

void SetQueueHead(
  uint8_t *aQueueHead
)

SetQueueLength

void SetQueueLength(
  size_t aQueueLength
)

TejidoCircularTLVBuffer

 WeaveCircularTLVBuffer(
  uint8_t *inBuffer,
  size_t inBufferLength
)

WeaveCircularTLVBuffer constructor.

Detalles
Parámetros
[in] inBuffer
Un puntero a la tienda de respaldo para la cola.
[in] inBufferLength
Longitud, en bytes, del almacén de respaldo

TejidoCircularTLVBuffer

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

WeaveCircularTLVBuffer constructor.

Detalles
Parámetros
[in] inBuffer
Un puntero a la tienda de respaldo para la cola.
[in] inBufferLength
Longitud, en bytes, del almacén de respaldo
[in] inHead
Punto inicial para la cabeza. El puntero inHead es debe caer dentro del almacén de respaldo para la memoria intermedia circular, es decir, dentro InBuffer y Y (InBuffer [inBufferLength])

Funciones estáticas públicas

FinalizeBufferFunct

WEAVE_ERROR FinalizeBufferFunct(
  TLVWriter & ioWriter,
  uintptr_t inBufHandle,
  uint8_t *inBufStart,
  uint32_t inBufLen
)

Una cama elástica a WeaveCircularTLVBuffer :: FinalizeBuffer .

Detalles
Parámetros
[in,out] ioWriter
TLVWriter llamar a esta función
[in,out] inBufHandle
Un identificador para el CircularTLVWriter objeto
[in] inBufStart
puntero al comienzo de los datos (de TLVWriter perspectiva)
[in] inBufLen
longitud de los datos en la memoria intermedia a la que apunta inbufStart
Valores devueltos
WEAVE_NO_ERROR
Incondicionalmente.

GetNewBufferFunct

WEAVE_ERROR GetNewBufferFunct(
  TLVWriter & ioWriter,
  uintptr_t & inBufHandle,
  uint8_t *& outBufStart,
  uint32_t & outBufLen
)

Un trampolín para ir a buscar más espacio para elTLVWriter .

Detalles
Parámetros
[in,out] ioWriter
TLVWriter llamar a esta función
[in,out] inBufHandle
Un identificador para el CircularTLVWriter objeto
[out] outBufStart
El puntero al nuevo búfer
[out] outBufLen
La longitud disponible para escribir
Valores devueltos
WEAVE_NO_ERROR
Sobre el éxito.
other
Si la función no fue capaz de eludir un completo nivel superior TLV elemento.

GetNextBufferFunct

WEAVE_ERROR GetNextBufferFunct(
  TLVReader & ioReader,
  uintptr_t & inBufHandle,
  const uint8_t *& outBufStart,
  uint32_t & outBufLen
)

Una cama elástica a WeaveCircularTLVBuffer :: GetNextBuffer .

Detalles
Parámetros
[in,out] ioReader
TLVReader llamar a esta función
[in,out] inBufHandle
Un identificador para el CircularTLVWriter objeto
[in,out] outBufStart
La referencia al búfer de datos. Al regresar, se establece en un valor dentro de este búfer.
[out] outBufLen
Al regresar, establezca el número de bytes continuos que se pueden leer del búfer.
Valores devueltos
WEAVE_NO_ERROR
Tiene éxito incondicionalmente.