nl::Weave::TLV::WeaveCircularTLVBuffer

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

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

Resumo

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

Construtores e destrutores

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 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 do 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 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 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 ser removido de nl::Weave::TLV::WeaveCircularTLVBuffer.

As funções desse tipo são usadas para processar um elemento TLV que será removido do buffer. A função recebe um nl::Weave::TLV::TLVReader posicionado no elemento que está prestes a ser excluído, bem como o contexto "void *", em que o usuário pode ter fornecido um ambiente adicional para o callback. Se a função processou o elemento com sucesso, ela precisa retornar WEAVE_NO_ERROR. Isso significa para o WeaveCircularTLVBuffer que o elemento pode ser removido com segurança. Qualquer outro valor de retorno será tratado como um erro e impedirá que 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 deseja ter um buffer circular subjacente, mas não substituir nenhum elemento dentro dele.

Detalhes
Parâmetros
[in] inBuffer
Uma referência ao buffer de onde 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 der certo. 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 vai 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 obter informações adicionais 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 do WeaveCircularTLVBuffer.

Essa função remove o elemento TLV mais antigo do buffer. A função chama 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, não haverá elementos no buffer, e o WeaveCircularTLVBuffer permanecerá inalterado.

Detalhes
Valores de retorno
WEAVE_NO_ERROR
Se der certo.
other
Em qualquer outro erro retornado pelo callback ou pelo 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 esta função
[in] inBufStart
ponteiro para o início dos dados (da perspectiva de TLVWriter).
[in] inBufLen
comprimento dos dados no buffer apontados 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 TLVWriter.

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

Detalhes
Parâmetros
[in,out] ioWriter
TLVWriter chamando esta função
[out] outBufStart
O ponteiro para o buffer novo
[out] outBufLen
O tamanho disponível para gravação
Valores de retorno
WEAVE_NO_ERROR
Se der certo.
other
Se a função não conseguiu eliminar 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 estar dentro do buffer. Essa função permite corresponder o armazenamento em buffer do buffer circular com as restrições TLVReader. O leitor lerá no máximo mQueueSize bytes do buffer.

Detalhes
Parâmetros
[in] ioReader
TLVReader chamando essa função.
[in,out] outBufStart
A referência ao buffer de dados. De acordo com o retorno, ele é definido como um valor nesse buffer.
[out] outBufLen
Ao retornar, defina o número de bytes contínuos que poderiam ser lidos fora do buffer.
Valores de retorno
WEAVE_NO_ERROR
Tem sucesso incondicional.

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 apoio da fila
[in] inBufferLength
Comprimento, 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 apoio da fila
[in] inBufferLength
Comprimento, 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, dentro de 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 esta função
[in,out] inBufHandle
Um handle para o objeto CircularTLVWriter.
[in] inBufStart
ponteiro para o início dos dados (da perspectiva de TLVWriter).
[in] inBufLen
comprimento dos dados no buffer apontados 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 TLVWriter.

Detalhes
Parâmetros
[in,out] ioWriter
TLVWriter chamando esta função
[in,out] inBufHandle
Um handle para o objeto CircularTLVWriter.
[out] outBufStart
O ponteiro para o buffer novo
[out] outBufLen
O tamanho disponível para gravação
Valores de retorno
WEAVE_NO_ERROR
Se der certo.
other
Se a função não conseguiu eliminar 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. De acordo com o retorno, ele é definido como um valor nesse buffer.
[out] outBufLen
Ao retornar, defina o número de bytes contínuos que poderiam ser lidos fora do buffer.
Valores de retorno
WEAVE_NO_ERROR
Tem sucesso incondicional.