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)
construtor WeaveCircularTLVBuffer.
|
|
WeaveCircularTLVBuffer(uint8_t *inBuffer, size_t inBufferLength, uint8_t *inHead)
construtor WeaveCircularTLVBuffer.
|
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)
|
Um trampolim para WeaveCircularTLVBuffer::FinalizeBuffer.
|
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)
|
Um trampolim para WeaveCircularTLVBuffer::GetNextBuffer.
|
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 |
|
||||||
Valores de retorno |
|
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 |
|
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 |
|
||||||
Valores de retorno |
|
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 |
|
||||||
Valores de retorno |
|
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 |
|
||||||
Valores de retorno |
|
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 |
|
WeaveCircularTLVBuffer
WeaveCircularTLVBuffer( uint8_t *inBuffer, size_t inBufferLength, uint8_t *inHead )
construtor WeaveCircularTLVBuffer.
Detalhes | |||||||
---|---|---|---|---|---|---|---|
Parâmetros |
|
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 |
|
||||||||
Valores de retorno |
|
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 |
|
||||||||
Valores de retorno |
|
GetNextBufferFunct
WEAVE_ERROR GetNextBufferFunct( TLVReader & ioReader, uintptr_t & inBufHandle, const uint8_t *& outBufStart, uint32_t & outBufLen )
Um trampolim para WeaveCircularTLVBuffer::GetNextBuffer.
Detalhes | |||||||||
---|---|---|---|---|---|---|---|---|---|
Parâmetros |
|
||||||||
Valores de retorno |
|