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 eine unbegrenzte Anzahl von TLV-Einträgen in den WeaveCircularTLVBuffer schreiben, solange jeder einzelne TLV-Eintrag vollständig in den verfügbaren Speicher passt. nl::Weave::TLV::TLVReader liest höchstens die Größe des Zwischenspeichers, berücksichtigt aber den Wraparound innerhalb des Zwischenspeichers.
Konstruktoren und Zerstörer |
|
---|---|
WeaveCircularTLVBuffer(uint8_t *inBuffer, size_t inBufferLength)
Konstruktor WeaveCircularTLVBuffer verwendet werden.
|
|
WeaveCircularTLVBuffer(uint8_t *inBuffer, size_t inBufferLength, uint8_t *inHead)
Konstruktor WeaveCircularTLVBuffer verwendet werden.
|
Ö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 der Callback-Verarbeitung des entfernten Elements verwendet wird.
|
mImplicitProfileId
|
uint32_t
|
mProcessEvictedElement
|
Ein optionaler, vom Nutzer bereitgestellter Callback, der das Element verarbeitet, bevor es aus dem runden Zwischenspeicher entfernt wird.
|
Öffentliche Funktionen |
|
---|---|
AvailableDataLength(void) const
|
size_t
|
DataLength(void) const
|
size_t
|
EvictHead(void)
|
Entfernt das älteste TLV-Element der obersten Ebene in WeaveCircularTLVBuffer.
|
FinalizeBuffer(TLVWriter & ioWriter, uint8_t *inBufStart, uint32_t inBufLen)
|
FinalizeBuffer passt den
WeaveCircularTLVBuffer -Status nach 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)
|
Ein Trampolin zu WeaveCircularTLVBuffer::FinalizeBuffer
|
GetNewBufferFunct(TLVWriter & ioWriter, uintptr_t & inBufHandle, uint8_t *& outBufStart, uint32_t & outBufLen)
|
Ein Trampolin, um mehr Platz für den TLVWriter zu schaffen
|
GetNextBufferFunct(TLVReader & ioReader, uintptr_t & inBufHandle, const uint8_t *& outBufStart, uint32_t & outBufLen)
|
Ein Trampolin zu WeaveCircularTLVBuffer::GetNextBuffer
|
Ö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.
Funktionen dieses Typs werden verwendet, um ein TLV-Element zu verarbeiten, das aus dem Zwischenspeicher entfernt werden soll. Die Funktion erhält einen nl::Weave::TLV::TLVReader-Wert auf dem Element, das gelöscht werden soll, sowie einen void *-Kontext, in dem der Nutzer möglicherweise eine zusätzliche Umgebung für den Callback bereitgestellt hat. Wenn das Element erfolgreich verarbeitet wurde, muss WEAVE_NO_ERROR zurückgegeben werden. Das bedeutet für den WeaveCircularTLVBuffer, dass das Element sicher entfernt werden kann. Jeder andere Rückgabewert wird als Fehler behandelt und verhindert, dass WeaveCircularTLVBuffer das betreffende Element entfernt.
Hinweis: Mit diesem Callback kann WeaveCircularTLVBuffer gezwungen werden, das Element nicht zu entfernen. Dies kann in einer Reihe von Situationen nützlich sein, wenn ein zugrunde liegender kreisförmiger Puffer vorhanden sein soll, aber keine darin enthaltenen Elemente überschrieben werden sollen.
Details | |||||||
---|---|---|---|---|---|---|---|
Parameter |
|
||||||
Rückgabewerte |
|
Öffentliche Attribute
mAppData
void * mAppData
Ein optionaler, vom Nutzer bereitgestellter Kontext, der mit der Callback-Verarbeitung des entfernten Elements verwendet wird.
mImplicitProfileId
uint32_t mImplicitProfileId
mProcessEvictedElement
ProcessEvictedElementFunct mProcessEvictedElement
Ein optionaler, vom Nutzer bereitgestellter Callback, der das Element verarbeitet, bevor es aus dem runden Zwischenspeicher entfernt wird.
Weitere Informationen zur Implementierung der Funktion mProcessEconcedElement finden Sie in der Typdefinition ProcessEgainedElementFunct.
Öffentliche Funktionen
AvailableDataLength
size_t AvailableDataLength( void ) const
DataLength
size_t DataLength( void ) const
EvictHead
WEAVE_ERROR EvictHead( void )
Entfernt das älteste TLV-Element der obersten Ebene in WeaveCircularTLVBuffer.
Diese Funktion entfernt das älteste TLV-Element der obersten Ebene im Zwischenspeicher. Die Funktion ruft den Callback auf, der unter mProcessEvictedElement registriert ist, um das Element vor dem Entfernen zu verarbeiten. Wenn der Callback etwas anderes als WEAVE_NO_ERROR zurückgibt, wird das Element nicht entfernt. Falls ein anderer Fehler auftritt, bleiben keine Elemente im Zwischenspeicher usw. der zugrunde liegende WeaveCircularTLVBuffer unverändert.
Details | |||||
---|---|---|---|---|---|
Rückgabewerte |
|
FinalizeBuffer
WEAVE_ERROR FinalizeBuffer( TLVWriter & ioWriter, uint8_t *inBufStart, uint32_t inBufLen )
FinalizeBuffer passt den WeaveCircularTLVBuffer
-Status nach Abschluss der Ausgabe von TLVWriter an.
Diese Funktion wirkt sich auf die Position des Warteschlangenendes aus.
Details | |||||||
---|---|---|---|---|---|---|---|
Parameter |
|
||||||
Rückgabewerte |
|
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 runden Zwischenspeicher und passt den Head dieser Zwischenspeicherwarteschlange an
Details | |||||||
---|---|---|---|---|---|---|---|
Parameter |
|
||||||
Rückgabewerte |
|
GetNextBuffer
WEAVE_ERROR GetNextBuffer( TLVReader & ioReader, const uint8_t *& outBufStart, uint32_t & outBufLen )
Holen Sie sich zusätzlichen Speicherplatz für den TLVReader.
Der durch WeaveCircularTLVBuffer bereitgestellte Speicher kann innerhalb des Zwischenspeichers umlaufen. Diese Funktion bietet die Möglichkeit, die Zwischenspeicherung des kreisförmigen Zwischenspeichers an die TLVReader-Einschränkungen abzugleichen. Der Reader liest höchstens mQueueSize
Byte aus dem Zwischenspeicher.
Details | |||||||
---|---|---|---|---|---|---|---|
Parameter |
|
||||||
Rückgabewerte |
|
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 )
Konstruktor WeaveCircularTLVBuffer verwendet werden.
Details | |||||
---|---|---|---|---|---|
Parameter |
|
WeaveCircularTLVBuffer
WeaveCircularTLVBuffer( uint8_t *inBuffer, size_t inBufferLength, uint8_t *inHead )
Konstruktor WeaveCircularTLVBuffer verwendet werden.
Details | |||||||
---|---|---|---|---|---|---|---|
Parameter |
|
Ö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 |
|
||||||||
Rückgabewerte |
|
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 schaffen
Details | |||||||||
---|---|---|---|---|---|---|---|---|---|
Parameter |
|
||||||||
Rückgabewerte |
|
GetNextBufferFunct
WEAVE_ERROR GetNextBufferFunct( TLVReader & ioReader, uintptr_t & inBufHandle, const uint8_t *& outBufStart, uint32_t & outBufLen )
Ein Trampolin zu WeaveCircularTLVBuffer::GetNextBuffer
Details | |||||||||
---|---|---|---|---|---|---|---|---|---|
Parameter |
|
||||||||
Rückgabewerte |
|