nl::Weave::TLV::WeaveCircularTLVBuffer

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

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

Resumo

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

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 removida do nl::Weave::TLV::WeaveCircularTLVBuffer.

Atributos públicos

mAppData
void *
Um contexto opcional fornecido pelo usuário a ser usado com o retorno de chamada que processa o elemento removido.
mImplicitProfileId
uint32_t
mProcessEvictedElement
Um callback opcional fornecido pelo usuário que processa o elemento antes de removê-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 em WeaveCircularTLVBuffer.
FinalizeBuffer(TLVWriter & ioWriter, uint8_t *inBufStart, uint32_t inBufLen)
FinalizeBuffer ajusta o estado WeaveCircularTLVBuffer na conclusão da saída do TLVWriter.
GetNewBuffer(TLVWriter & ioWriter, uint8_t *& outBufStart, uint32_t & outBufLen)
Tenha 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 ser removida do nl::Weave::TLV::WeaveCircularTLVBuffer.

As funções desse tipo são usadas para processar um elemento TLV que está sendo removido do buffer. A função vai receber um nl::Weave::TLV::TLVReader posicionado no elemento que está prestes a ser excluído, além de um contexto * nulo em que o usuário pode ter fornecido um ambiente adicional para o callback. Se a função processou o elemento, é necessário retornar WEAVE_NO_ERROR, o que significa que WeaveCircularTLVBuffer significa que o elemento pode ser removido com segurança. Qualquer outro valor de retorno é tratado como um erro e vai impedir que o WeaveCircularTLVBuffer remova o elemento considerado.

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

Detalhes
Parâmetros
[in] inBuffer
Uma referência ao buffer de que a remoção ocorre
[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
Em caso de sucesso. 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

No Google

void * mAppData

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

mImplicitProfileId

uint32_t mImplicitProfileId

MElementEvictedElement

ProcessEvictedElementFunct mProcessEvictedElement

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

Consulte a definição do tipo ProcessEvictedElementFunct sobre informações adicionais sobre a implementação da função mProcessEvictedElement.

Funções públicas

Duração de dados disponíveis

size_t AvailableDataLength(
  void
) const 

Duração dos dados

size_t DataLength(
  void
) const 

EvictHead

WEAVE_ERROR EvictHead(
  void
)

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

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

Detalhes
Valores de retorno
WEAVE_NO_ERROR
Em caso de sucesso.
other
Em qualquer outro erro retornado pelo callback ou pelo TLVReader.

Finalizar buffer

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

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 de dados (da perspectiva TLVWriter)
[in] inBufLen
tamanho dos dados no buffer indicados por inbufStart
Valores de retorno
WEAVE_NO_ERROR
Incondicionalmente.

GetNewBuffer

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

Tenha mais espaço para o TLVWriter.

Na realidade, a função remove 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 novo buffer
[out] outBufLen
O tamanho disponível para escrita
Valores de retorno
WEAVE_NO_ERROR
Em caso de sucesso.
other
Se a função não conseguiu extrair um elemento TLV de nível superior completo.

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 feito dentro do buffer. Com essa função, é possível corresponder o buffer do buffer circular com as restrições do TLVReader. O leitor vai 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. Na volta, ele é definido como um valor dentro desse buffer.
[out] outBufLen
Na resposta, defina para o número de bytes contínuos que podem ser lidos fora do buffer.
Valores de retorno
WEAVE_NO_ERROR
Sucesso incondicional.

GetQueue

uint8_t * GetQueue(
  void
) const 

GetQueueSize

size_t GetQueueSize(
  void
) const 

Cabeça da fila

uint8_t * QueueHead(
  void
) const 

Fila de fila

uint8_t * QueueTail(
  void
) const 

Definir fila

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
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 backup da fila
[in] inBufferLength
Comprimento, em bytes, do armazenamento de apoio
[in] inHead
Ponto inicial para a cabeça. O ponteiro inHead precisa estar dentro do armazenamento de apoio para o buffer circular, ou seja, dentro de inBuffer e &(inBuffer[inBufferLength])

Funções estáticas públicas

FinalizarBufferFunct

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 identificador para o objeto CircularTLVWriter
[in] inBufStart
ponteiro para o início de dados (da perspectiva TLVWriter)
[in] inBufLen
tamanho dos dados no buffer indicados 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 esta função
[in,out] inBufHandle
Um identificador para o objeto CircularTLVWriter
[out] outBufStart
O ponteiro para o novo buffer
[out] outBufLen
O tamanho disponível para escrita
Valores de retorno
WEAVE_NO_ERROR
Em caso de sucesso.
other
Se a função não conseguiu extrair um elemento TLV de nível superior completo.

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 esta função
[in,out] inBufHandle
Um identificador para o objeto CircularTLVWriter
[in,out] outBufStart
A referência ao buffer de dados. Na volta, ele é definido como um valor dentro desse buffer.
[out] outBufLen
Na resposta, defina para o número de bytes contínuos que podem ser lidos fora do buffer.
Valores de retorno
WEAVE_NO_ERROR
Sucesso incondicional.