nl:: Weave:: TLV:: WeaveCircularTLVBuffer
#include <src/lib/core/WeaveCircularTLVBuffer.h>
WeaveCircularTLVBuffer fornisce uno spazio di archiviazione circolare per nl::Weave::TLV::TLVWriter e nl::Weave::TLVTLVReader.
Riepilogo
nl::Weave::TLV::TLVWriter è in grado di scrivere un numero illimitato di voci TLV in WeaveCircularTLVBuffer purché ogni singola voce TLV rientri interamente nello spazio di archiviazione fornito. nl::Weave::TLV::TLVReader legge al massimo la dimensione del buffer, ma adatta il wraparound all'interno del buffer.
Costruttori e distruttori |
|
---|---|
WeaveCircularTLVBuffer(uint8_t *inBuffer, size_t inBufferLength)
Costruttore WeaveCircularTLVBuffer.
|
|
WeaveCircularTLVBuffer(uint8_t *inBuffer, size_t inBufferLength, uint8_t *inHead)
Costruttore WeaveCircularTLVBuffer.
|
Tipi pubblici |
|
---|---|
ProcessEvictedElementFunct)(WeaveCircularTLVBuffer &inBuffer, void *inAppData, TLVReader &inReader)
|
WEAVE_ERROR(* Una funzione chiamata per elaborare un elemento TLV prima che venga rimosso da nl::Weave::TLV::WeaveCircularTLVBuffer. |
Attributi pubblici |
|
---|---|
mAppData
|
void *
Un contesto facoltativo fornito dall'utente da utilizzare con il callback che elabora l'elemento rimosso.
|
mImplicitProfileId
|
uint32_t
|
mProcessEvictedElement
|
Un callback facoltativo fornito dall'utente che elabora l'elemento prima di rimuoverlo dal buffer circolare.
|
Funzioni pubbliche |
|
---|---|
AvailableDataLength(void) const
|
size_t
|
DataLength(void) const
|
size_t
|
EvictHead(void)
|
Rimuove l'elemento TLV di primo livello meno recente da WeaveCircularTLVBuffer.
|
FinalizeBuffer(TLVWriter & ioWriter, uint8_t *inBufStart, uint32_t inBufLen)
|
FinalizeBuffer regola lo stato
WeaveCircularTLVBuffer al termine dell'output da TLVWriter. |
GetNewBuffer(TLVWriter & ioWriter, uint8_t *& outBufStart, uint32_t & outBufLen)
|
Ottieni spazio aggiuntivo per TLVWriter.
|
GetNextBuffer(TLVReader & ioReader, const uint8_t *& outBufStart, uint32_t & outBufLen)
|
Ottieni spazio aggiuntivo per 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
|
Funzioni statiche pubbliche |
|
---|---|
FinalizeBufferFunct(TLVWriter & ioWriter, uintptr_t inBufHandle, uint8_t *inBufStart, uint32_t inBufLen)
|
Un trampolino per WeaveCircularTLVBuffer::FinalizeBuffer.
|
GetNewBufferFunct(TLVWriter & ioWriter, uintptr_t & inBufHandle, uint8_t *& outBufStart, uint32_t & outBufLen)
|
Un trampolino per ottenere più spazio per TLVWriter.
|
GetNextBufferFunct(TLVReader & ioReader, uintptr_t & inBufHandle, const uint8_t *& outBufStart, uint32_t & outBufLen)
|
Un trampolino per WeaveCircularTLVBuffer::GetNextBuffer.
|
Tipi pubblici
ProcessEvictedElementFunct
WEAVE_ERROR(* ProcessEvictedElementFunct)(WeaveCircularTLVBuffer &inBuffer, void *inAppData, TLVReader &inReader)
Una funzione chiamata per elaborare un elemento TLV prima che venga rimosso da nl::Weave::TLV::WeaveCircularTLVBuffer.
Funzioni di questo tipo vengono utilizzate per elaborare un elemento TLV che sta per essere rimosso dal buffer. Alla funzione viene assegnato un nl::Weave::TLV::TLVReader posizionato sull'elemento che sta per essere eliminato, nonché un contesto void * in cui l'utente potrebbe aver fornito un ambiente aggiuntivo per il callback. Se la funzione ha elaborato correttamente l'elemento, deve restituire WEAVE_NO_ERROR. Ciò significa a WeaveCircularTLVBuffer che l'elemento può essere rimosso in sicurezza. Qualsiasi altro valore restituito viene considerato come un errore e impedisce a WeaveCircularTLVBuffer di rimuovere l'elemento in esame.
Nota: questo callback può essere usato per forzare WeaveCircularTLVBuffer a non rimuovere l'elemento. Ciò può essere utile in diverse circostanze, quando si desidera avere un buffer circolare sottostante, ma non sostituire gli elementi al suo interno.
Dettagli | |||||||
---|---|---|---|---|---|---|---|
Parametri |
|
||||||
Valori restituiti |
|
Attributi pubblici
mAppData
void * mAppData
Un contesto facoltativo fornito dall'utente da utilizzare con il callback che elabora l'elemento rimosso.
mImplicitProfileId
uint32_t mImplicitProfileId
mProcessEvictedElement
ProcessEvictedElementFunct mProcessEvictedElement
Un callback facoltativo fornito dall'utente che elabora l'elemento prima di rimuoverlo dal buffer circolare.
Per ulteriori informazioni sull'implementazione della funzione mProcessEvictedElement, consulta la definizione del tipo ProcessEvictedElementFunct.
Funzioni pubbliche
AvailableDataLength
size_t AvailableDataLength( void ) const
DataLength
size_t DataLength( void ) const
EvictHead
WEAVE_ERROR EvictHead( void )
Rimuove l'elemento TLV di primo livello meno recente da WeaveCircularTLVBuffer.
Questa funzione rimuove nel buffer l'elemento TLV di primo livello meno recente. La funzione chiama il callback registrato in mProcessEvictedElement per elaborare l'elemento prima della rimozione. Se il callback restituisce un valore diverso da WEAVE_NO_ERROR, l'elemento non viene rimosso. Analogamente, se si verifica qualsiasi altro errore non si verifica alcun elemento nel buffer e così via, il WeaveCircularTLVBuffer sottostante rimane invariato.
Dettagli | |||||
---|---|---|---|---|---|
Valori restituiti |
|
FinalizeBuffer
WEAVE_ERROR FinalizeBuffer( TLVWriter & ioWriter, uint8_t *inBufStart, uint32_t inBufLen )
FinalizeBuffer regola lo stato WeaveCircularTLVBuffer
al termine dell'output da TLVWriter.
Questa funzione influisce sulla posizione della coda della coda.
Dettagli | |||||||
---|---|---|---|---|---|---|---|
Parametri |
|
||||||
Valori restituiti |
|
GetNewBuffer
WEAVE_ERROR GetNewBuffer( TLVWriter & ioWriter, uint8_t *& outBufStart, uint32_t & outBufLen )
Ottieni spazio aggiuntivo per TLVWriter.
In realtà, la funzione rimuove un elemento dal buffer circolare e regola l'intestazione di questa coda del buffer
Dettagli | |||||||
---|---|---|---|---|---|---|---|
Parametri |
|
||||||
Valori restituiti |
|
GetNextBuffer
WEAVE_ERROR GetNextBuffer( TLVReader & ioReader, const uint8_t *& outBufStart, uint32_t & outBufLen )
Ottieni spazio aggiuntivo per TLVReader.
Lo spazio di archiviazione fornito da WeaveCircularTLVBuffer potrebbe essere wraparound all'interno del buffer. Questa funzione ci consente di abbinare il buffering del buffer circolare ai vincoli TLVReader. Il lettore leggerà al massimo mQueueSize
byte dal buffer.
Dettagli | |||||||
---|---|---|---|---|---|---|---|
Parametri |
|
||||||
Valori restituiti |
|
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 )
Costruttore WeaveCircularTLVBuffer.
Dettagli | |||||
---|---|---|---|---|---|
Parametri |
|
WeaveCircularTLVBuffer
WeaveCircularTLVBuffer( uint8_t *inBuffer, size_t inBufferLength, uint8_t *inHead )
Costruttore WeaveCircularTLVBuffer.
Dettagli | |||||||
---|---|---|---|---|---|---|---|
Parametri |
|
Funzioni statiche pubbliche
FinalizeBufferFunct
WEAVE_ERROR FinalizeBufferFunct( TLVWriter & ioWriter, uintptr_t inBufHandle, uint8_t *inBufStart, uint32_t inBufLen )
Un trampolino per WeaveCircularTLVBuffer::FinalizeBuffer.
Dettagli | |||||||||
---|---|---|---|---|---|---|---|---|---|
Parametri |
|
||||||||
Valori restituiti |
|
GetNewBufferFunct
WEAVE_ERROR GetNewBufferFunct( TLVWriter & ioWriter, uintptr_t & inBufHandle, uint8_t *& outBufStart, uint32_t & outBufLen )
Un trampolino per ottenere più spazio per TLVWriter.
Dettagli | |||||||||
---|---|---|---|---|---|---|---|---|---|
Parametri |
|
||||||||
Valori restituiti |
|
GetNextBufferFunct
WEAVE_ERROR GetNextBufferFunct( TLVReader & ioReader, uintptr_t & inBufHandle, const uint8_t *& outBufStart, uint32_t & outBufLen )
Un trampolino per WeaveCircularTLVBuffer::GetNextBuffer.
Dettagli | |||||||||
---|---|---|---|---|---|---|---|---|---|
Parametri |
|
||||||||
Valori restituiti |
|