Mit Sammlungen den Überblick behalten Sie können Inhalte basierend auf Ihren Einstellungen speichern und kategorisieren.

nl::Weave::TLV::WeaveCircularTLVBuffer

#include <src/lib/core/WeaveCircularTLVBuffer.h>

WeaveCircularTLVBuffer bietet kreisförmigen Speicher für nl::Weave::TLV::TLVWriter und nl::Weave::TLVTLVReader.

Zusammenfassung

nl::Weave::TLV::TLVWriter kann beliebig viele TLV-Einträge in WeaveCircularTLVBuffer schreiben, solange jeder einzelne TLV-Eintrag vollständig in den bereitgestellten Speicher passt. Mit nl::Weave::TLV::TLVReader wird nur die Größe des Zwischenspeichers gelesen, aber der Wrapping im Zwischenspeicher berücksichtigt.

Konstruktoren und Zerstörer

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

Öffentliche Typen

ProcessEvictedElementFunct)(WeaveCircularTLVBuffer &inBuffer, void *inAppData, TLVReader &inReader) WEAVE_ERROR(*
Eine Funktion, die aufgerufen wird, um ein TLV-Element zu verarbeiten, bevor es aus nl::Weave::TLV::WeaveCircularTLVBuffer entfernt wird

Öffentliche Attribute

mAppData
void *
Ein optionaler, vom Nutzer bereitgestellter Kontext, der mit dem Callback verwendet wird, das entfernte Element verarbeitet.
mImplicitProfileId
uint32_t
mProcessEvictedElement
Ein optionaler, vom Nutzer bereitgestellter Callback, der das Element verarbeitet, bevor es aus dem kreisförmigen Zwischenspeicher entfernt wird.

Öffentliche Funktionen

AvailableDataLength(void) const
size_t
DataLength(void) const
size_t
EvictHead(void)
Bereinigt das älteste Element TLV auf oberster Ebene in WeaveCircularTLVBuffer.
FinalizeBuffer(TLVWriter & ioWriter, uint8_t *inBufStart, uint32_t inBufLen)
FinalizeBuffer passt den Status WeaveCircularTLVBuffer bei Abschluss der Ausgabe von TLVWriter an.
GetNewBuffer(TLVWriter & ioWriter, uint8_t *& outBufStart, uint32_t & outBufLen)
Holen Sie sich zusätzlichen Speicherplatz für den TLVWriter.
GetNextBuffer(TLVReader & ioReader, const uint8_t *& outBufStart, uint32_t & outBufLen)
Holen Sie sich zusätzlichen Speicherplatz für den 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

Öffentliche statische Funktionen

FinalizeBufferFunct(TLVWriter & ioWriter, uintptr_t inBufHandle, uint8_t *inBufStart, uint32_t inBufLen)
GetNewBufferFunct(TLVWriter & ioWriter, uintptr_t & inBufHandle, uint8_t *& outBufStart, uint32_t & outBufLen)
Ein Trampolin, um mehr Platz für den TLVWriter zu erhalten.
GetNextBufferFunct(TLVReader & ioReader, uintptr_t & inBufHandle, const uint8_t *& outBufStart, uint32_t & outBufLen)

Öffentliche Typen

ProcessEvictedElementFunct

WEAVE_ERROR(* ProcessEvictedElementFunct)(WeaveCircularTLVBuffer &inBuffer, void *inAppData, TLVReader &inReader)

Eine Funktion, die aufgerufen wird, um ein TLV-Element zu verarbeiten, bevor es aus nl::Weave::TLV::WeaveCircularTLVBuffer entfernt wird

Mit Funktionen dieses Typs wird ein TLV-Element verarbeitet, das gleich aus dem Zwischenspeicher entfernt wird. Die Funktion erhält ein nl::Weave::TLV::TLVReader-Element, das auf dem zu löschenden Element positioniert ist, sowie einen void-*Kontext, in dem der Nutzer möglicherweise eine zusätzliche Umgebung für den Callback bereitgestellt hat. Wenn die Funktion das Element erfolgreich verarbeitet hat, muss sie WEAVE_NO_ERROR zurückgeben. Dies bedeutet, dass für das Element WeaveCircularTLVBuffer das Element sicher entfernt werden kann. Jeder andere Rückgabewert wird als Fehler behandelt und verhindert, dass das betreffende Element durch den WeaveCircularTLVBuffer entfernt wird.

Hinweis: Dieser Callback kann verwendet werden, um zu erzwingen, dass WeaveCircularTLVBuffer das Element nicht entfernt. Dies kann in einer Vielzahl von Situationen nützlich sein, in denen ein zugrunde liegender kreisförmiger Zwischenspeicher erforderlich ist, ohne dass darin Elemente überschrieben werden.

Details
Parameter
[in] inBuffer
Ein Verweis auf den Zwischenspeicher, aus dem die Bereinigung entfernt wird
[in] inAppData
Ein Hinweis auf die vom Nutzer bereitgestellte Struktur mit zusätzlichem Kontext für diesen Callback
[in] inReader
Ein TLVReader, der auf das zu entfernende Element gesetzt ist.
Rückgabewerte
WEAVE_NO_ERROR
Bei Erfolg. Das Element wird entfernt.
other
Bei der Verarbeitung der Veranstaltung ist ein Fehler aufgetreten. Das Element bleibt im Zwischenspeicher. Die Schreibfunktion, die die Elementbereinigung ausgelöst hat, schlägt fehl.

Öffentliche Attribute

App-Daten

void * mAppData

Ein optionaler, vom Nutzer bereitgestellter Kontext, der mit dem Callback verwendet wird, das entfernte Element verarbeitet.

ImpliziteProfil-ID

uint32_t mImplicitProfileId

mProcessEvictedElement

ProcessEvictedElementFunct mProcessEvictedElement

Ein optionaler, vom Nutzer bereitgestellter Callback, der das Element verarbeitet, bevor es aus dem kreisförmigen Zwischenspeicher entfernt wird.

Weitere Informationen zum Implementieren der Funktion mProcessEvictedElement finden Sie in der Definition des Typs ProcessEvictedElementFunct.

Öffentliche Funktionen

VerfügbareDatenlänge

size_t AvailableDataLength(
  void
) const 

Datenlänge

size_t DataLength(
  void
) const 

Kopf entfernen

WEAVE_ERROR EvictHead(
  void
)

Bereinigt das älteste Element TLV auf oberster Ebene in WeaveCircularTLVBuffer.

Diese Funktion entfernt das älteste Top-Level-TLV-Element im Zwischenspeicher. Die Funktion ruft den unter mProcessEvictedElement registrierten Callback auf, um das Element vor dem Entfernen zu verarbeiten. Wenn der Callback alles zurückgibt, außer WEAVE_NO_ERROR, wird das Element nicht entfernt. Wenn ein anderer Fehler auftritt, bleiben die im Puffer enthaltenen Elemente WeaveCircularTLVBuffer unverändert.

Details
Rückgabewerte
WEAVE_NO_ERROR
Bei Erfolg.
other
Bei jedem anderen Fehler, der vom Callback oder vom TLVReader zurückgegeben wird.

FinalizeBuffer

WEAVE_ERROR FinalizeBuffer(
  TLVWriter & ioWriter,
  uint8_t *inBufStart,
  uint32_t inBufLen
)

FinalizeBuffer passt den Status WeaveCircularTLVBuffer bei Abschluss der Ausgabe von TLVWriter an.

Diese Funktion wirkt sich auf die Position des Warteschlangenendes aus.

Details
Parameter
[in,out] ioWriter
TLVWriter ruft diese Funktion auf
[in] inBufStart
Zeiger auf den Anfang der Daten (aus TLVWriter Perspektive)
[in] inBufLen
Länge der Daten im Zwischenspeicher, auf die inbufStart verweist
Rückgabewerte
WEAVE_NO_ERROR
Ohne Bedingungen.

GetNewBuffer

WEAVE_ERROR GetNewBuffer(
  TLVWriter & ioWriter,
  uint8_t *& outBufStart,
  uint32_t & outBufLen
)

Holen Sie sich zusätzlichen Speicherplatz für den TLVWriter.

Tatsächlich entfernt die Funktion ein Element aus dem kreisförmigen Zwischenspeicher und passt den Kopf dieser Zwischenspeicherwarteschlange an.

Details
Parameter
[in,out] ioWriter
TLVWriter ruft diese Funktion auf
[out] outBufStart
Mauszeiger auf den neuen Zwischenspeicher
[out] outBufLen
Die verfügbare Textlänge
Rückgabewerte
WEAVE_NO_ERROR
Bei Erfolg.
other
Wenn die Funktion ein vollständiges TLV-Element der obersten Ebene nicht aufheben konnte.

Nächster Zwischenspeicher

WEAVE_ERROR GetNextBuffer(
  TLVReader & ioReader,
  const uint8_t *& outBufStart,
  uint32_t & outBufLen
)

Holen Sie sich zusätzlichen Speicherplatz für den TLVReader.

Der von WeaveCircularTLVBuffer bereitgestellte Speicher kann innerhalb des Zwischenspeichers umschlossen werden. Diese Funktion gibt uns die Möglichkeit, die Zwischenspeicherung des zirkulären Zwischenspeichers den TLVReader-Einschränkungen zuzuordnen. Der Leser liest höchstens mQueueSize Byte aus dem Zwischenspeicher.

Details
Parameter
[in] ioReader
TLVReader ruft diese Funktion auf.
[in,out] outBufStart
Der Verweis auf den Datenzwischenspeicher. Bei der Rückgabe wird sie auf einen Wert in diesem Zwischenspeicher gesetzt.
[out] outBufLen
Legen Sie bei der Rückgabe den Wert auf die Anzahl der kontinuierlichen Byte fest, die aus dem Zwischenspeicher gelesen werden konnten.
Rückgabewerte
WEAVE_NO_ERROR
Erfolgt ohne Einschränkungen.

GetQueue

uint8_t * GetQueue(
  void
) const 

GetQueueSize

size_t GetQueueSize(
  void
) const 

Warteschlangenkopf

uint8_t * QueueHead(
  void
) const 

Wiedergabeliste

uint8_t * QueueTail(
  void
) const 

SetQueueHead

void SetQueueHead(
  uint8_t *aQueueHead
)

Länge der Wiedergabeliste

void SetQueueLength(
  size_t aQueueLength
)

WeaveCircularTLVBuffer

 WeaveCircularTLVBuffer(
  uint8_t *inBuffer,
  size_t inBufferLength
)

WeaveCircularTLVBuffer verwenden.

Details
Parameter
[in] inBuffer
Ein Verweis auf den unterstützenden Speicher für die Warteschlange
[in] inBufferLength
Länge des unterstützenden Speichers in Byte

WeaveCircularTLVBuffer

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

WeaveCircularTLVBuffer verwenden.

Details
Parameter
[in] inBuffer
Ein Verweis auf den unterstützenden Speicher für die Warteschlange
[in] inBufferLength
Länge des unterstützenden Speichers in Byte
[in] inHead
Anfangspunkt für den Kopf. Der Zeiger inHead muss sich im unterstützenden Speicher für den kreisförmigen Zwischenspeicher befinden, also innerhalb von inBuffer und &(inBuffer[inBufferLength])

Öffentliche statische Funktionen

FinalizeBufferFunct

WEAVE_ERROR FinalizeBufferFunct(
  TLVWriter & ioWriter,
  uintptr_t inBufHandle,
  uint8_t *inBufStart,
  uint32_t inBufLen
)

Ein Trampolin zu WeaveCircularTLVBuffer::FinalizeBuffer

Details
Parameter
[in,out] ioWriter
TLVWriter ruft diese Funktion auf
[in,out] inBufHandle
Ein Handle für das CircularTLVWriter-Objekt
[in] inBufStart
Zeiger auf den Anfang der Daten (aus TLVWriter Perspektive)
[in] inBufLen
Länge der Daten im Zwischenspeicher, auf die inbufStart verweist
Rückgabewerte
WEAVE_NO_ERROR
Ohne Bedingungen.

GetNewBufferFunct

WEAVE_ERROR GetNewBufferFunct(
  TLVWriter & ioWriter,
  uintptr_t & inBufHandle,
  uint8_t *& outBufStart,
  uint32_t & outBufLen
)

Ein Trampolin, um mehr Platz für den TLVWriter zu erhalten.

Details
Parameter
[in,out] ioWriter
TLVWriter ruft diese Funktion auf
[in,out] inBufHandle
Ein Handle für das CircularTLVWriter-Objekt
[out] outBufStart
Mauszeiger auf den neuen Zwischenspeicher
[out] outBufLen
Die verfügbare Textlänge
Rückgabewerte
WEAVE_NO_ERROR
Bei Erfolg.
other
Wenn die Funktion ein vollständiges TLV-Element der obersten Ebene nicht aufheben konnte.

GetNextBufferFunct

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

Ein Trampolin zu WeaveCircularTLVBuffer::GetNextBuffer.

Details
Parameter
[in,out] ioReader
TLVReader ruft diese Funktion auf
[in,out] inBufHandle
Ein Handle für das CircularTLVWriter-Objekt
[in,out] outBufStart
Der Verweis auf den Datenzwischenspeicher. Bei der Rückgabe wird sie auf einen Wert in diesem Zwischenspeicher gesetzt.
[out] outBufLen
Legen Sie bei der Rückgabe den Wert auf die Anzahl der kontinuierlichen Byte fest, die aus dem Zwischenspeicher gelesen werden konnten.
Rückgabewerte
WEAVE_NO_ERROR
Erfolgt ohne Einschränkungen.