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 completamente nello spazio di archiviazione fornito. nl::Weave::TLV::TLVReader legge al massimo le dimensioni del buffer, ma consente un 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(* 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 in WeaveCircularTLVBuffer.
|
FinalizeBuffer(TLVWriter & ioWriter, uint8_t *inBufStart, uint32_t inBufLen)
|
FinalizeBuffer regola lo stato
WeaveCircularTLVBuffer al completamento 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 a WeaveCircularTLVBuffer::FinalizeBuffer.
|
GetNewBufferFunct(TLVWriter & ioWriter, uintptr_t & inBufHandle, uint8_t *& outBufStart, uint32_t & outBufLen)
|
Un trampolino per recuperare spazio per il TLVWriter.
|
GetNextBufferFunct(TLVReader & ioReader, uintptr_t & inBufHandle, const uint8_t *& outBufStart, uint32_t & outBufLen)
|
Un trampolino in WeaveCircularTLVBuffer::GetNextBuffer.
|
Tipi pubblici
ProcessEvictedElementFunct
WEAVE_ERROR(* ProcessEvictedElementFunct)(WeaveCircularTLVBuffer &inBuffer, void *inAppData, TLVReader &inReader)
Funzione chiamata per elaborare un elemento TLV prima che venga rimosso da nl::Weave::TLV::WeaveCircularTLVBuffer.
Le funzioni di questo tipo vengono utilizzate per elaborare un elemento TLV che sta per essere rimosso dal buffer. Alla funzione viene assegnato un contesto 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 l'elemento correttamente, deve restituire WEAVE_NO_ERROR; questo indica a WeaveCircularTLVBuffer che l'elemento può essere rimosso in modo sicuro. Qualsiasi altro valore restituito viene considerato un errore e impedisce a WeaveCircularTLVBuffer di rimuovere l'elemento in questione.
Nota: questo callback può essere utilizzato per forzare WeaveCircularTLVBuffer a non rimuovere l'elemento. Questa opzione può essere utile in varie circostanze, quando si desidera avere un buffer circolare sottostante, ma non per eseguire l'override degli 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.
Consulta la definizione del tipo ProcessEvictedElementFunct per ulteriori informazioni sull'implementazione della funzione mProcessEvictedElement.
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 in WeaveCircularTLVBuffer.
Questa funzione rimuove l'elemento TLV di primo livello meno recente nel buffer. La funzione chiama il callback registrato in mProcessEvictedElement per elaborare l'elemento prima della rimozione. Se il callback restituisce qualcosa di diverso da WEAVE_NO_ERROR, l'elemento non viene rimosso. Analogamente, se si verificano altri errori e non ci sono elementi nel buffer, il valore 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 completamento 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 di 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 può essere "wraparound" all'interno del buffer. Questa funzione consente di abbinare il buffer 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 a WeaveCircularTLVBuffer::FinalizeBuffer.
Dettagli | |||||||||
---|---|---|---|---|---|---|---|---|---|
Parametri |
|
||||||||
Valori restituiti |
|
GetNewBufferFunct
WEAVE_ERROR GetNewBufferFunct( TLVWriter & ioWriter, uintptr_t & inBufHandle, uint8_t *& outBufStart, uint32_t & outBufLen )
Un trampolino per recuperare spazio per il TLVWriter.
Dettagli | |||||||||
---|---|---|---|---|---|---|---|---|---|
Parametri |
|
||||||||
Valori restituiti |
|
GetNextBufferFunct
WEAVE_ERROR GetNextBufferFunct( TLVReader & ioReader, uintptr_t & inBufHandle, const uint8_t *& outBufStart, uint32_t & outBufLen )
Un trampolino in WeaveCircularTLVBuffer::GetNextBuffer.
Dettagli | |||||||||
---|---|---|---|---|---|---|---|---|---|
Parametri |
|
||||||||
Valori restituiti |
|