nl:: Weave:: TLV:: WeaveCircularTLVBuffer
#include <src/lib/core/WeaveCircularTLVBuffer.h>
WeaveCircularTLVBuffer zapewnia pamięć masową dla znaczników nl::Weave::TLV::TLVWriter i nl::Weave::TLVTLVReader.
Podsumowanie
nl::Weave::TLV::TLVWriter może zapisać nieograniczoną liczbę wpisów TLV w obiekcie WeaveCircularTLVBuffer, o ile każdy wpis TLV mieści się w całości w udostępnionym miejscu na dane. Tag nl::Weave::TLV::TLVReader odczytuje rozmiar maksymalnie bufora, ale mieści się w obrębie bufora.
Konstruktorzy i niszczyciele |
|
---|---|
WeaveCircularTLVBuffer(uint8_t *inBuffer, size_t inBufferLength)
|
|
WeaveCircularTLVBuffer(uint8_t *inBuffer, size_t inBufferLength, uint8_t *inHead)
|
Typy publiczne |
|
---|---|
ProcessEvictedElementFunct)(WeaveCircularTLVBuffer &inBuffer, void *inAppData, TLVReader &inReader)
|
WEAVE_ERROR(* Funkcja, która jest wywoływana do przetworzenia elementu TLV przed jego usunięciem z elementu nl::Weave::TLV::WeaveCircularTLVBuffer. |
Atrybuty publiczne |
|
---|---|
mAppData
|
void *
Opcjonalny kontekst dostarczony przez użytkownika do użycia z wywołaniem zwrotnym przetwarzającym wykluczony element.
|
mImplicitProfileId
|
uint32_t
|
mProcessEvictedElement
|
Opcjonalne, dostarczone przez użytkownika wywołanie zwrotne, które przetwarza element przed usunięciem go z okrągłego bufora.
|
Funkcje publiczne |
|
---|---|
AvailableDataLength(void) const
|
size_t
|
DataLength(void) const
|
size_t
|
EvictHead(void)
|
Usuwa najstarszy element TLV najwyższego poziomu w elemencie WeaveCircularTLVBuffer.
|
FinalizeBuffer(TLVWriter & ioWriter, uint8_t *inBufStart, uint32_t inBufLen)
|
FinalizeBuffer dostosuje stan
WeaveCircularTLVBuffer po zakończeniu przetwarzania danych wyjściowych z TLVWriter. |
GetNewBuffer(TLVWriter & ioWriter, uint8_t *& outBufStart, uint32_t & outBufLen)
|
Zyskaj dodatkowe miejsce na kod TLVWriter.
|
GetNextBuffer(TLVReader & ioReader, const uint8_t *& outBufStart, uint32_t & outBufLen)
|
Zyskaj dodatkowe miejsce na kod 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
|
Publiczne funkcje statyczne |
|
---|---|
FinalizeBufferFunct(TLVWriter & ioWriter, uintptr_t inBufHandle, uint8_t *inBufStart, uint32_t inBufLen)
|
trampolina do zadania WeaveCircularTLVBuffer::FinalizeBuffer.
|
GetNewBufferFunct(TLVWriter & ioWriter, uintptr_t & inBufHandle, uint8_t *& outBufStart, uint32_t & outBufLen)
|
Trampolina, która pobierze więcej miejsca dla TLVWriter.
|
GetNextBufferFunct(TLVReader & ioReader, uintptr_t & inBufHandle, const uint8_t *& outBufStart, uint32_t & outBufLen)
|
trampolina do zadania WeaveCircularTLVBuffer::GetNextBuffer.
|
Typy publiczne
ProcessEvictedElementFunct
WEAVE_ERROR(* ProcessEvictedElementFunct)(WeaveCircularTLVBuffer &inBuffer, void *inAppData, TLVReader &inReader)
Funkcja, która jest wywoływana do przetworzenia elementu TLV przed jego usunięciem z elementu nl::Weave::TLV::WeaveCircularTLVBuffer.
Funkcje tego typu służą do przetwarzania elementu TLV, który zostanie usunięty z bufora. Funkcja otrzyma element nl::Weave::TLV::TLVReader znajdujący się w elemencie, który ma zostać usunięty, a także kontekst pusty *, w którym użytkownik mógł udostępnić dodatkowe środowisko na potrzeby wywołania zwrotnego. Jeśli funkcja przetworzyła element, musi zwrócić wartość WEAVE_NO_ERROR. Oznacza to dla WeaveCircularTLVBuffer, że element można bezpiecznie usunąć. Każda inna zwracana wartość jest traktowana jako błąd i zapobiegnie usunięciu danego elementu przez funkcję WeaveCircularTLVBuffer.
Uwaga: tego wywołania zwrotnego można użyć, aby wymusić usunięcie elementu WeaveCircularTLVBuffer. Może się to okazać przydatne w wielu okolicznościach, gdy chcesz mieć bazowy bufor kołowy, ale nie zastępować żadnych znajdujących się w nim elementów.
Szczegóły | |||||||
---|---|---|---|---|---|---|---|
Parametry |
|
||||||
Zwracane wartości |
|
Atrybuty publiczne
mAppData
void * mAppData
Opcjonalny kontekst dostarczony przez użytkownika do użycia z wywołaniem zwrotnym przetwarzającym wykluczony element.
mImplicitProfileId
uint32_t mImplicitProfileId
mProcessEvictedElement
ProcessEvictedElementFunct mProcessEvictedElement
Opcjonalne, dostarczone przez użytkownika wywołanie zwrotne, które przetwarza element przed usunięciem go z okrągłego bufora.
Dodatkowe informacje na temat wdrażania funkcji mProcessEvictedElement znajdziesz w definicji typu ProcessEvictedElementFunct.
Funkcje publiczne
AvailableDataLength
size_t AvailableDataLength( void ) const
DataLength
size_t DataLength( void ) const
EvictHead
WEAVE_ERROR EvictHead( void )
Usuwa najstarszy element TLV najwyższego poziomu w elemencie WeaveCircularTLVBuffer.
Ta funkcja usuwa z bufora najstarszy element TLV najwyższego poziomu. Wywoła ona wywołanie zwrotne zarejestrowane w procesie mProcessEvictedElement, aby przetworzyć element przed jego usunięciem. Jeśli wywołanie zwrotne zwróci wartość inną niż WEAVE_NO_ERROR, element nie zostanie usunięty. I podobnie, jeśli nie wystąpi żaden inny błąd w buforze itp. bazowy element WeaveCircularTLVBuffer nie ulegnie zmianie.
Szczegóły | |||||
---|---|---|---|---|---|
Zwracane wartości |
|
FinalizeBuffer
WEAVE_ERROR FinalizeBuffer( TLVWriter & ioWriter, uint8_t *inBufStart, uint32_t inBufLen )
FinalizeBuffer dostosuje stan WeaveCircularTLVBuffer
po zakończeniu przetwarzania danych wyjściowych z TLVWriter.
Ta funkcja wpływa na pozycję ogona kolejki.
Szczegóły | |||||||
---|---|---|---|---|---|---|---|
Parametry |
|
||||||
Zwracane wartości |
|
GetNewBuffer
WEAVE_ERROR GetNewBuffer( TLVWriter & ioWriter, uint8_t *& outBufStart, uint32_t & outBufLen )
Zyskaj dodatkowe miejsce na kod TLVWriter.
W rzeczywistości funkcja usuwa element z bufora cyklicznego i dostosowuje nagłówek tej kolejki bufora.
Szczegóły | |||||||
---|---|---|---|---|---|---|---|
Parametry |
|
||||||
Zwracane wartości |
|
GetNextBuffer
WEAVE_ERROR GetNextBuffer( TLVReader & ioReader, const uint8_t *& outBufStart, uint32_t & outBufLen )
Zyskaj dodatkowe miejsce na kod TLVReader.
Pamięć zapewniana przez WeaveCircularTLVBuffer może być wypełniona buforem. Ta funkcja pozwala dopasować buforowanie bufora do ograniczeń TLVReader. Czytnik odczyta maksymalnie mQueueSize
bajtów z bufora.
Szczegóły | |||||||
---|---|---|---|---|---|---|---|
Parametry |
|
||||||
Zwracane wartości |
|
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 )
Szczegóły | |||||
---|---|---|---|---|---|
Parametry |
|
WeaveCircularTLVBuffer
WeaveCircularTLVBuffer( uint8_t *inBuffer, size_t inBufferLength, uint8_t *inHead )
Szczegóły | |||||||
---|---|---|---|---|---|---|---|
Parametry |
|
Publiczne funkcje statyczne
FinalizeBufferFunct
WEAVE_ERROR FinalizeBufferFunct( TLVWriter & ioWriter, uintptr_t inBufHandle, uint8_t *inBufStart, uint32_t inBufLen )
trampolina do zadania WeaveCircularTLVBuffer::FinalizeBuffer.
Szczegóły | |||||||||
---|---|---|---|---|---|---|---|---|---|
Parametry |
|
||||||||
Zwracane wartości |
|
GetNewBufferFunct
WEAVE_ERROR GetNewBufferFunct( TLVWriter & ioWriter, uintptr_t & inBufHandle, uint8_t *& outBufStart, uint32_t & outBufLen )
Trampolina, która pobierze więcej miejsca dla TLVWriter.
Szczegóły | |||||||||
---|---|---|---|---|---|---|---|---|---|
Parametry |
|
||||||||
Zwracane wartości |
|
GetNextBufferFunct
WEAVE_ERROR GetNextBufferFunct( TLVReader & ioReader, uintptr_t & inBufHandle, const uint8_t *& outBufStart, uint32_t & outBufLen )
trampolina do zadania WeaveCircularTLVBuffer::GetNextBuffer.
Szczegóły | |||||||||
---|---|---|---|---|---|---|---|---|---|
Parametry |
|
||||||||
Zwracane wartości |
|