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

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

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
[in] inBuffer
Un riferimento al buffer da cui avviene l'eliminazione
[in] inAppData
Un puntatore alla struttura fornita dall'utente contenente contesto aggiuntivo per questo callback
[in] inReader
Un TLVReader posizionato in corrispondenza dell'elemento da rimuovere.
Valori restituiti
WEAVE_NO_ERROR
Un 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 dell'elemento non riuscirà.

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
WEAVE_NO_ERROR
Un 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 termine dell'output da TLVWriter.

Questa funzione influisce sulla posizione della coda della coda.

Dettagli
Parametri
[in,out] ioWriter
TLVWriter chiama questa funzione
[in] inBufStart
Puntatore all'inizio dei dati (dal punto di vista TLVWriter)
[in] inBufLen
lunghezza dei dati nel buffer puntati da inbufStart
Valori restituiti
WEAVE_NO_ERROR
Senza condizioni.

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
[in,out] ioWriter
TLVWriter chiama questa funzione
[out] outBufStart
Il puntatore al nuovo buffer
[out] outBufLen
La durata disponibile per la scrittura
Valori restituiti
WEAVE_NO_ERROR
Un successo.
other
Se la funzione non è stata in grado di eliminare 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 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
[in] ioReader
TLVReader chiama questa funzione.
[in,out] outBufStart
Il riferimento al buffer. Al ritorno, viene impostato su un valore all'interno di questo buffer.
[out] outBufLen
Al ritorno, imposta il numero di byte continui che potrebbero essere letti dal buffer.
Valori restituiti
WEAVE_NO_ERROR
Riuscita incondizionatamente.

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 al backing store per la coda
[in] inBufferLength
Lunghezza, in byte, del datastore di supporto

WeaveCircularTLVBuffer

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

Costruttore WeaveCircularTLVBuffer.

Dettagli
Parametri
[in] inBuffer
Un puntatore al backing store per la coda
[in] inBufferLength
Lunghezza, in byte, del datastore di supporto
[in] inHead
Punto iniziale della testa. Il puntatore inHead deve rientrare nel datastore di supporto 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 per WeaveCircularTLVBuffer::FinalizeBuffer.

Dettagli
Parametri
[in,out] ioWriter
TLVWriter 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 puntati da inbufStart
Valori restituiti
WEAVE_NO_ERROR
Senza condizioni.

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
[in,out] ioWriter
TLVWriter chiama questa funzione
[in,out] inBufHandle
Un handle per l'oggetto CircularTLVWriter
[out] outBufStart
Il puntatore al nuovo buffer
[out] outBufLen
La durata disponibile per la scrittura
Valori restituiti
WEAVE_NO_ERROR
Un successo.
other
Se la funzione non è stata in grado di eliminare 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 per 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. Al ritorno, viene impostato su un valore all'interno di questo buffer.
[out] outBufLen
Al ritorno, imposta il numero di byte continui che potrebbero essere letti dal buffer.
Valori restituiti
WEAVE_NO_ERROR
Riuscita incondizionatamente.