nl::Weave::TLV::WeaveCircularTLVBuffer

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

O WeaveCircularTLVBuffer oferece armazenamento circular para nl::Weave::TLV::TLVWriter e nl::Weave::TLVTLVReader.

Resumo

nl::Weave::TLV::TLVWriter é capaz de gravar um número ilimitado de entradas TLV no WeaveCircularTLVBuffer, desde que cada entrada TLV individual se encaixe totalmente no armazenamento fornecido. O nl::Weave::TLV::TLVReader lerá no máximo o tamanho do buffer, mas acomodará a voltagem dentro dele.

Construtores e destruidores

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(*
Uma função chamada para processar um elemento TLV antes de ele ser removido de nl::Weave::TLV::WeaveCircularTLVBuffer.

Atributos públicos

mAppData
void *
Um contexto opcional fornecido pelo usuário a ser usado com o callback que processa o elemento removido.
mImplicitProfileId
uint32_t
mProcessEvictedElement
Um callback opcional fornecido pelo usuário que processa o elemento antes de retirá-lo do buffer circular.

Funções públicas

AvailableDataLength(void) const
size_t
DataLength(void) const
size_t
EvictHead(void)
Remove o elemento TLV de nível superior mais antigo no WeaveCircularTLVBuffer.
FinalizeBuffer(TLVWriter & ioWriter, uint8_t *inBufStart, uint32_t inBufLen)
O FinalizeBuffer ajusta o estado WeaveCircularTLVBuffer na conclusão da saída do TLVWriter.
GetNewBuffer(TLVWriter & ioWriter, uint8_t *& outBufStart, uint32_t & outBufLen)
Consiga mais espaço para o TLVWriter.
GetNextBuffer(TLVReader & ioReader, const uint8_t *& outBufStart, uint32_t & outBufLen)
Consiga mais espaço para o 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

Funções 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)
Um trampolim para buscar mais espaço para o 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)

Uma função chamada para processar um elemento TLV antes de ele ser removido de nl::Weave::TLV::WeaveCircularTLVBuffer.

As funções desse tipo são usadas para processar um elemento TLV prestes a ser removido do buffer. A função receberá um nl::Weave::TLV::TLVReader posicionado no elemento prestes a ser excluído, bem como um contexto void * em que o usuário possa ter fornecido um ambiente adicional para o callback. Se a função processou o elemento com sucesso, ela deve retornar WEAVE_NO_ERROR; isso significa para o WeaveCircularTLVBuffer que o elemento pode ser removido com segurança. Qualquer outro valor de retorno é tratado como um erro e impede que o WeaveCircularTLVBuffer remova o elemento em questão.

Observação: esse callback pode ser usado para forçar WeaveCircularTLVBuffer a não remover o elemento. Isso pode ser útil em diversas circunstâncias, quando se quer ter um buffer circular subjacente, mas não para substituir nenhum elemento dentro dele.

Detalhes
Parâmetros
[in] inBuffer
Referência ao buffer do qual ocorre a remoção.
[in] inAppData
Um ponteiro para a estrutura fornecida pelo usuário que contém mais contexto para esse callback
[in] inReader
Um TLVReader posicionado no elemento a ser removido.
Valores de retorno
WEAVE_NO_ERROR
Se a operação for bem-sucedida. O elemento será removido.
other
Ocorreu um erro durante o processamento do evento. O elemento permanece no buffer. A função de gravação que acionou a remoção desse elemento falhará.

Atributos públicos

mAppData

void * mAppData

Um contexto opcional fornecido pelo usuário a ser usado com o callback que processa o elemento removido.

mImplicitProfileId

uint32_t mImplicitProfileId

mProcessEvictedElement

ProcessEvictedElementFunct mProcessEvictedElement

Um callback opcional fornecido pelo usuário que processa o elemento antes de retirá-lo do buffer circular.

Consulte a definição do tipo ProcessEvictedElementFunct para ver mais informações sobre como implementar a função mProcessEvictedElement.

Funções públicas

AvailableDataLength

size_t AvailableDataLength(
  void
) const 

DataLength

size_t DataLength(
  void
) const 

EvictHead

WEAVE_ERROR EvictHead(
  void
)

Remove o elemento TLV de nível superior mais antigo no WeaveCircularTLVBuffer.

Essa função remove o elemento TLV de nível superior mais antigo do buffer. A função chamará o callback registrado em mProcessEvictedElement para processar o elemento antes da remoção. Se o callback retornar algo além de WEAVE_NO_ERROR, o elemento não será removido. Da mesma forma, se ocorrer qualquer outro erro, nenhum elemento dentro do buffer etc., o WeaveCircularTLVBuffer subjacente permanece inalterado.

Detalhes
Valores de retorno
WEAVE_NO_ERROR
Se a operação for bem-sucedida.
other
em qualquer outro erro retornado pelo callback ou TLVReader

FinalizeBuffer

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

O FinalizeBuffer ajusta o estado WeaveCircularTLVBuffer na conclusão da saída do TLVWriter.

Essa função afeta a posição da cauda da fila.

Detalhes
Parâmetros
[in,out] ioWriter
TLVWriter chamando essa função
[in] inBufStart
ponteiro para o início dos dados (da perspectiva TLVWriter)
[in] inBufLen
comprimento dos dados no buffer indicado por inbufStart
Valores de retorno
WEAVE_NO_ERROR
Incondicionalmente.

GetNewBuffer

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

Consiga mais espaço para o TLVWriter.

Na realidade, a função elimina um elemento do buffer circular e ajusta o cabeçalho dessa fila de buffer

Detalhes
Parâmetros
[in,out] ioWriter
TLVWriter chamando essa função
[out] outBufStart
O ponteiro para o novo buffer
[out] outBufLen
O tamanho disponível para gravação
Valores de retorno
WEAVE_NO_ERROR
Se a operação for bem-sucedida.
other
Se a função não conseguir remover um elemento TLV completo de nível superior.

GetNextBuffer

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

Consiga mais espaço para o TLVReader.

O armazenamento fornecido pelo WeaveCircularTLVBuffer pode ser encapsulado dentro do buffer. Essa função nos permite corresponder o armazenamento em buffer do buffer circular às restrições do TLVReader. O leitor vai ler no máximo mQueueSize bytes do buffer.

Detalhes
Parâmetros
[in] ioReader
TLVReader que está chamando essa função.
[in,out] outBufStart
A referência ao buffer de dados. Ao retornar, ele é definido como um valor dentro desse buffer.
[out] outBufLen
Ao retornar, defina como o número de bytes contínuos que podem ser lidos do buffer.
Valores de retorno
WEAVE_NO_ERROR
É bem-sucedida 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
)

Construtor WeaveCircularTLVBuffer.

Detalhes
Parâmetros
[in] inBuffer
Um ponteiro para o armazenamento de backup da fila
[in] inBufferLength
Tamanho, em bytes, do armazenamento de apoio

WeaveCircularTLVBuffer

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

Construtor WeaveCircularTLVBuffer.

Detalhes
Parâmetros
[in] inBuffer
Um ponteiro para o armazenamento de backup da fila
[in] inBufferLength
Tamanho, em bytes, do armazenamento de apoio
[in] inHead
Ponto inicial da cabeça. O ponteiro inHead precisa estar no armazenamento de apoio do buffer circular, ou seja, em inBuffer e &(inBuffer[inBufferLength])

Funções estáticas públicas

FinalizeBufferFunct

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

Um trampolim para WeaveCircularTLVBuffer::FinalizeBuffer.

Detalhes
Parâmetros
[in,out] ioWriter
TLVWriter chamando essa função
[in,out] inBufHandle
Um handle para o objeto CircularTLVWriter.
[in] inBufStart
ponteiro para o início dos dados (da perspectiva TLVWriter)
[in] inBufLen
comprimento dos dados no buffer indicado por inbufStart
Valores de retorno
WEAVE_NO_ERROR
Incondicionalmente.

GetNewBufferFunct

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

Um trampolim para buscar mais espaço para o TLVWriter.

Detalhes
Parâmetros
[in,out] ioWriter
TLVWriter chamando essa função
[in,out] inBufHandle
Um handle para o objeto CircularTLVWriter.
[out] outBufStart
O ponteiro para o novo buffer
[out] outBufLen
O tamanho disponível para gravação
Valores de retorno
WEAVE_NO_ERROR
Se a operação for bem-sucedida.
other
Se a função não conseguir remover um elemento TLV completo de nível superior.

GetNextBufferFunct

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

Um trampolim para WeaveCircularTLVBuffer::GetNextBuffer.

Detalhes
Parâmetros
[in,out] ioReader
TLVReader chamando essa função
[in,out] inBufHandle
Um handle para o objeto CircularTLVWriter.
[in,out] outBufStart
A referência ao buffer de dados. Ao retornar, ele é definido como um valor dentro desse buffer.
[out] outBufLen
Ao retornar, defina como o número de bytes contínuos que podem ser lidos do buffer.
Valores de retorno
WEAVE_NO_ERROR
É bem-sucedida incondicionalmente.