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)
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 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)
|
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 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 |
|
||||||
Valores de retorno |
|
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 |
|
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 |
|
||||||
Valores de retorno |
|
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 |
|
||||||
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 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 |
|
||||||
Valores de retorno |
|
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 |
|
WeaveCircularTLVBuffer
WeaveCircularTLVBuffer( uint8_t *inBuffer, size_t inBufferLength, uint8_t *inHead )
Construtor WeaveCircularTLVBuffer.
Detalhes | |||||||
---|---|---|---|---|---|---|---|
Parâmetros |
|
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 |
|
||||||||
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 |
|