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)
WeaveCircularTLVBuffer(uint8_t *inBuffer, size_t inBufferLength, uint8_t *inHead)

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)
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)

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
[in] inBuffer
Un riferimento al buffer da cui avviene l'eliminazione
[in] inAppData
Un puntatore alla struttura fornita dall'utente contenente ulteriore contesto per questo callback
[in] inReader
Un TLVReader posizionato in corrispondenza dell'elemento da rimuovere.
Valori restituiti
WEAVE_NO_ERROR
In caso di successo. L'elemento verrà rimosso.
other
Si è verificato un errore durante l'elaborazione dell'evento. L'elemento rimane nel buffer. La funzione di scrittura che ha attivato l'eliminazione di questo elemento avrà esito negativo.

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
WEAVE_NO_ERROR
In caso di successo.
other
Per qualsiasi altro errore restituito dal callback o da TLVReader.

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
[in,out] ioWriter
TLVWriter che chiama questa funzione
[in] inBufStart
puntatore all'inizio dei dati (dal punto di vista TLVWriter)
[in] inBufLen
lunghezza dei dati nel buffer a cui punta inbufStart
Valori restituiti
WEAVE_NO_ERROR
Incondizionatamente.

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
[in,out] ioWriter
TLVWriter che chiama questa funzione
[out] outBufStart
Il puntatore al nuovo buffer
[out] outBufLen
La lunghezza disponibile per la scrittura
Valori restituiti
WEAVE_NO_ERROR
In caso di successo.
other
Se la funzione non è riuscita a rimuovere un elemento TLV di primo livello completo.

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
[in] ioReader
TLVReader chiama questa funzione.
[in,out] outBufStart
Il riferimento al buffer dei dati. Al contrario, viene impostato su un valore all'interno di questo buffer.
[out] outBufLen
Al ritorno, impostato sul numero di byte continui che potrebbero essere letti dal buffer.
Valori restituiti
WEAVE_NO_ERROR
Riuscire senza condizioni.

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
[in] inBuffer
Un puntatore all'archivio di supporto per la coda
[in] inBufferLength
Lunghezza, in byte, dell'archivio di supporto

WeaveCircularTLVBuffer

 WeaveCircularTLVBuffer(
  uint8_t *inBuffer,
  size_t inBufferLength,
  uint8_t *inHead
)

Costruttore WeaveCircularTLVBuffer.

Dettagli
Parametri
[in] inBuffer
Un puntatore all'archivio di supporto per la coda
[in] inBufferLength
Lunghezza, in byte, dell'archivio di supporto
[in] inHead
Punto iniziale per la testa. Il puntatore inHead deve trovarsi all'interno dell'archivio di backup per il buffer circolare, ad esempio all'interno di inBuffer e (inBuffer[inBufferLength])

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
[in,out] ioWriter
TLVWriter che chiama questa funzione
[in,out] inBufHandle
Un handle per l'oggetto CircularTLVWriter
[in] inBufStart
puntatore all'inizio dei dati (dal punto di vista TLVWriter)
[in] inBufLen
lunghezza dei dati nel buffer a cui punta inbufStart
Valori restituiti
WEAVE_NO_ERROR
Incondizionatamente.

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
[in,out] ioWriter
TLVWriter che chiama questa funzione
[in,out] inBufHandle
Un handle per l'oggetto CircularTLVWriter
[out] outBufStart
Il puntatore al nuovo buffer
[out] outBufLen
La lunghezza disponibile per la scrittura
Valori restituiti
WEAVE_NO_ERROR
In caso di successo.
other
Se la funzione non è riuscita a rimuovere un elemento TLV di primo livello completo.

GetNextBufferFunct

WEAVE_ERROR GetNextBufferFunct(
  TLVReader & ioReader,
  uintptr_t & inBufHandle,
  const uint8_t *& outBufStart,
  uint32_t & outBufLen
)

Un trampolino in WeaveCircularTLVBuffer::GetNextBuffer.

Dettagli
Parametri
[in,out] ioReader
TLVReader chiama questa funzione
[in,out] inBufHandle
Un handle per l'oggetto CircularTLVWriter
[in,out] outBufStart
Il riferimento al buffer dei dati. Al contrario, viene impostato su un valore all'interno di questo buffer.
[out] outBufLen
Al ritorno, impostato sul numero di byte continui che potrebbero essere letti dal buffer.
Valori restituiti
WEAVE_NO_ERROR
Riuscire senza condizioni.