Google se compromete a impulsar la igualdad racial para las comunidades afrodescendientes. Obtén información al respecto.
Se usó la API de Cloud Translation para traducir esta página.
Switch to English

nl :: Tejido:: TLV :: TejidoCircularTLVBuffer

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

WeaveCircularTLVBuffer proporciona almacenamiento circular paranl :: Weave :: TLV :: TLVWriter y nl :: Weave :: TLVTLVReader.

Resumen

nl :: Weave :: TLV :: TLVWriter puede escribir un número ilimitado de entradas de TLV en WeaveCircularTLVBuffer siempre que cada entrada de TLV individual se ajuste completamente al almacenamiento proporcionado. Elnl :: Weave :: TLV :: TLVReader leerá como máximo el tamaño del búfer, pero acomodará el envoltorio dentro del búfer.

Constructores y Destructores

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

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 sea desalojado del nl :: Weave :: TLV :: WeaveCircularTLVBuffer .

Atributos públicos

mAppData
void *
Un contexto opcional proporcionado por el usuario que se utilizará con la devolución de llamada que procesa 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 elemento TLV de nivel superior más antiguo en WeaveCircularTLVBuffer .
FinalizeBuffer (TLVWriter & ioWriter, uint8_t *inBufStart, uint32_t inBufLen)
FinalizeBuffer ajusta el estado WeaveCircularTLVBuffer al completar la salida delTLVWriter .
GetNewBuffer (TLVWriter & ioWriter, uint8_t *& outBufStart, uint32_t & outBufLen)
Obtenga espacio adicional paraTLVWriter .
GetNextBuffer (TLVReader & ioReader, const uint8_t *& outBufStart, uint32_t & outBufLen)
Obtenga espacio adicional paraTLVReader .
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 conseguir 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 elemento TLV antes de que sea desalojado del nl :: Weave :: TLV :: WeaveCircularTLVBuffer .

Las funciones de este tipo se utilizan para procesar un elemento TLV a punto de ser expulsado del búfer. La función recibirá unnl :: Weave :: TLV :: TLVReader posicionado en el elemento que se va a eliminar, así como un contexto vacío * donde el usuario puede haber proporcionado un entorno adicional para la devolución de llamada. Si la función procesó el elemento correctamente, debe devolver WEAVE_NO_ERROR ; esto significa para WeaveCircularTLVBuffer que el elemento puede ser desalojado de forma segura. Cualquier otro valor de retorno se trata como un error y evitará que WeaveCircularTLVBuffer desaloje el elemento en consideración.

Nota: Esta devolución de llamada se puede utilizar para obligar a WeaveCircularTLVBuffer a no desalojar el elemento. Esto puede resultar ú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
UnTLVReader colocado en el elemento a desalojar.
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 desencadenó 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 elemento TLV de nivel superior más antiguo en WeaveCircularTLVBuffer .

Esta función elimina 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 su eliminación. Si la devolución de llamada devuelve cualquier cosa que no sea WEAVE_NO_ERROR , el elemento no se elimina. Del mismo modo, si se produce cualquier otro error, no hay elementos dentro del búfer, etc., el WeaveCircularTLVBuffer subyacente permanece sin cambios.

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

FinalizarBuffer

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

FinalizeBuffer ajusta el estado WeaveCircularTLVBuffer al completar la salida delTLVWriter .

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

Detalles
Parámetros
[in,out] ioWriter
TLVWriter llamando 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 devueltos
WEAVE_NO_ERROR
Incondicionalmente.

GetNewBuffer

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

Obtenga espacio adicional paraTLVWriter .

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 llamando 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 pudo eludir un elemento TLV de nivel superior completo.

GetNextBuffer

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

Obtenga espacio adicional paraTLVReader .

El almacenamiento proporcionado por WeaveCircularTLVBuffer puede estar envuelto 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 deTLVReader . El lector leerá como máximo mQueueSize bytes del búfer.

Detalles
Parámetros
[in] ioReader
TLVReader llamando 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
)

Constructor WeaveCircularTLVBuffer .

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
)

Constructor WeaveCircularTLVBuffer .

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 debe estar dentro del almacenamiento de respaldo para el 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 llamando a esta función
[in,out] inBufHandle
Un identificador 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 devueltos
WEAVE_NO_ERROR
Incondicionalmente.

GetNewBufferFunct

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

Un trampolín para conseguir más espacio para elTLVWriter .

Detalles
Parámetros
[in,out] ioWriter
TLVWriter llamando a esta función
[in,out] inBufHandle
Un identificador para el objeto CircularTLVWriter
[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 pudo eludir un elemento TLV de nivel superior completo.

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 llamando a esta función
[in,out] inBufHandle
Un identificador para el objeto CircularTLVWriter
[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.