nl :: Tecer:: TLV :: WeaveCircularTLVBuffer
#include <src/lib/core/WeaveCircularTLVBuffer.h>
WeaveCircularTLVBuffer fornece armazenamento circular paranl :: 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 ajuste inteiramente ao armazenamento fornecido. Onl :: Weave :: TLV :: TLVReader irá ler no máximo o tamanho do buffer, mas irá acomodar o wraparound dentro do buffer.
Tipos públicos |
---|
ProcessEvictedElementFunct )(WeaveCircularTLVBuffer &inBuffer, void *inAppData, TLVReader &inReader) | WEAVE_ERROR (* |
Atributos públicos |
---|
mAppData | void * Um contexto opcional fornecido pelo usuário a ser usado com o processamento de retorno de chamada do elemento removido. |
mImplicitProfileId | uint32_t |
mProcessEvictedElement | Um retorno de chamada opcional fornecido pelo usuário que processa o elemento antes de removê-lo do buffer circular. |
Tipos públicos
ProcessEvictedElementFunct
WEAVE_ERROR(* ProcessEvictedElementFunct)(WeaveCircularTLVBuffer &inBuffer, void *inAppData, TLVReader &inReader)
Uma função que é chamada para processar um elemento TLV antes de ser removido do nl :: Weave :: TLV :: WeaveCircularTLVBuffer .
Funções desse tipo são usadas para processar um elemento TLV prestes a ser removido do buffer. A função receberá umnl :: Weave :: TLV :: TLVReader posicionado no elemento prestes a ser excluído, bem como um contexto void * onde o usuário pode ter fornecido um ambiente adicional para o retorno de chamada. 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 impedirá que o WeaveCircularTLVBuffer remova o elemento em consideração.
Nota: Este retorno de chamada pode ser usado para forçar WeaveCircularTLVBuffer a não remover o elemento. Isso pode ser útil em várias circunstâncias, quando se deseja ter um buffer circular subjacente, mas não sobrescrever quaisquer elementos dentro dele.
Detalhes | Parâmetros | [in] inBuffer | Uma referência ao buffer de onde ocorre o despejo | [in] inAppData | Um ponteiro para a estrutura fornecida pelo usuário contendo contexto adicional para este retorno de chamada | [in] inReader | Um TLVReader posicionado no elemento a ser despejado. |
|
Valores Retornados | WEAVE_NO_ERROR | Com sucesso. O elemento será despejado. | other | Ocorreu um erro durante o processamento do evento. O elemento permanece no buffer. A função de gravação que acionou este despejo de elemento falhará. |
|
Atributos públicos
mAppData
void * mAppData
Um contexto opcional fornecido pelo usuário a ser usado com o processamento de retorno de chamada do elemento removido.
mImplicitProfileId
uint32_t mImplicitProfileId
mProcessEvictedElement
ProcessEvictedElementFunct mProcessEvictedElement
Um retorno de chamada opcional fornecido pelo usuário que processa o elemento antes de removê-lo do buffer circular.
Consulte a definição de tipo ProcessEvictedElementFunct para obter informações adicionais sobre a implementação da função mProcessEvictedElement.
Funções públicas
AvailableDataLength
size_t AvailableDataLength(
void
) const
DataLength
size_t DataLength(
void
) const
EvictHead
WEAVE_ERROR EvictHead(
void
)
Expulsa o elemento TLV de nível superior mais antigo no WeaveCircularTLVBuffer .
Esta função remove o elemento TLV de nível superior mais antigo do buffer. A função chamará o retorno de chamada registrado em mProcessEvictedElement para processar o elemento antes da remoção. Se o retorno de chamada retornar qualquer coisa, exceto WEAVE_NO_ERROR , o elemento não será removido. Da mesma forma, se qualquer outro erro ocorrer, nenhum elemento no buffer, etc., o WeaveCircularTLVBuffer subjacente permanecerá inalterado.
Detalhes | Valores Retornados | WEAVE_NO_ERROR | Com sucesso. | other | Em qualquer outro erro retornado pelo retorno de chamada ou pelo TLVReader . |
|
FinalizeBuffer
WEAVE_ERROR FinalizeBuffer(
TLVWriter & ioWriter,
uint8_t *inBufStart,
uint32_t inBufLen
)
FinalizeBuffer ajusta o estado WeaveCircularTLVBuffer
na conclusão da saída doTLVWriter .
Esta função afeta a posição da cauda da fila.
Detalhes | Parâmetros | [in,out] ioWriter | | [in] inBufStart | ponteiro para o início dos dados (da perspectiva TLVWriter ) | [in] inBufLen | comprimento de dados no buffer apontado por inbufStart |
|
Valores Retornados | WEAVE_NO_ERROR | Incondicionalmente. |
|
GetNewBuffer
WEAVE_ERROR GetNewBuffer(
TLVWriter & ioWriter,
uint8_t *& outBufStart,
uint32_t & outBufLen
)
Obtenha espaço adicional para oTLVWriter .
Na verdade, a função expulsa um elemento do buffer circular e ajusta a cabeça desta fila de buffer
Detalhes | Parâmetros | [in,out] ioWriter | | [out] outBufStart | O ponteiro para o novo buffer | [out] outBufLen | O comprimento disponível para escrita |
|
Valores Retornados | WEAVE_NO_ERROR | Com sucesso. | other | Se a função não foi capaz de eliminar um elemento TLV de nível superior completo. |
|
GetNextBuffer
WEAVE_ERROR GetNextBuffer(
TLVReader & ioReader,
const uint8_t *& outBufStart,
uint32_t & outBufLen
)
Obtenha espaço adicional para oTLVReader .
O armazenamento fornecido pelo WeaveCircularTLVBuffer pode ser delimitado pelo buffer. Essa função nos fornece a capacidade de combinar o armazenamento em buffer do buffer circular com as restrições doTLVReader . O leitor lerá no máximo bytes mQueueSize
do buffer.
Detalhes | Parâmetros | [in] ioReader | | [in,out] outBufStart | A referência ao buffer de dados. No retorno, é definido como um valor dentro desse buffer. | [out] outBufLen | No retorno, defina o número de bytes contínuos que podem ser lidos do buffer. |
|
Valores Retornados | WEAVE_NO_ERROR | É bem-sucedido 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 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 para a cabeça. O ponteiro inHead deve estar dentro do 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 | | [in,out] inBufHandle | | [in] inBufStart | ponteiro para o início dos dados (da perspectiva TLVWriter ) | [in] inBufLen | comprimento de dados no buffer apontado por inbufStart |
|
Valores Retornados | 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 oTLVWriter .
Detalhes | Parâmetros | [in,out] ioWriter | | [in,out] inBufHandle | | [out] outBufStart | O ponteiro para o novo buffer | [out] outBufLen | O comprimento disponível para escrita |
|
Valores Retornados | WEAVE_NO_ERROR | Com sucesso. | other | Se a função não foi capaz de eliminar 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 | | [in,out] inBufHandle | | [in,out] outBufStart | A referência ao buffer de dados. No retorno, é definido como um valor dentro desse buffer. | [out] outBufLen | No retorno, defina o número de bytes contínuos que podem ser lidos do buffer. |
|
Valores Retornados | WEAVE_NO_ERROR | É bem-sucedido incondicionalmente. |
|