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

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
[in] inBuffer
Odniesienie do bufora, z którego ma miejsce trwałe usunięcie
[in] inAppData
Wskaźnik do struktury przekazanej przez użytkownika, zawierającej dodatkowy kontekst dla tego wywołania zwrotnego
[in] inReader
Parametr TLVReader znajduje się w elemencie, który ma zostać wykluczony.
Zwracane wartości
WEAVE_NO_ERROR
Na sukces. Element zostanie trwale usunięty.
other
Podczas przetwarzania zdarzenia wystąpił błąd. Element pozostaje w buforze. Funkcja zapisu, która spowodowała usunięcie tego elementu, nie powiedzie się.

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
WEAVE_NO_ERROR
Na sukces.
other
W przypadku innych błędów zwróconych przez wywołanie zwrotne lub przez narzędzie TLVReader.

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
[in,out] ioWriter
TLVWriter wywołuje tę funkcję
[in] inBufStart
wskaźnik na początku danych (z perspektywy TLVWriter)
[in] inBufLen
długość danych w buforze wskazywana przez wartość inbufStart
Zwracane wartości
WEAVE_NO_ERROR
Bezwarunkowo.

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
[in,out] ioWriter
TLVWriter wywołuje tę funkcję
[out] outBufStart
Wskaźnik nowego bufora
[out] outBufLen
Dostępna długość tekstu
Zwracane wartości
WEAVE_NO_ERROR
Na sukces.
other
Jeśli funkcji nie udało się pominąć pełnego elementu TLV najwyższego poziomu.

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
[in] ioReader
Funkcja TLVReader wywołująca tę funkcję.
[in,out] outBufStart
Odwołanie do bufora danych. Zwrócona wartość jest ustawiona na wartość w tym buforze.
[out] outBufLen
Po zwróceniu ustaw liczbę ciągłych bajtów, które mogą zostać odczytane z bufora.
Zwracane wartości
WEAVE_NO_ERROR
Sukces bezwarunkowo.

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
)

WeaveCircularTLVBuffer.

Szczegóły
Parametry
[in] inBuffer
Wskaźnik do magazynu kopii zapasowych kolejki
[in] inBufferLength
Długość magazynu kopii zapasowej (w bajtach).

WeaveCircularTLVBuffer

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

WeaveCircularTLVBuffer.

Szczegóły
Parametry
[in] inBuffer
Wskaźnik do magazynu kopii zapasowych kolejki
[in] inBufferLength
Długość magazynu kopii zapasowej (w bajtach).
[in] inHead
Punkt początkowy głowy. Wskaźnik inHead musi znajdować się w magazynie kopii zapasowej dla okrągłego bufora, tj. w obrębie inBuffer i &(inBuffer[inBufferLength])

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
[in,out] ioWriter
TLVWriter wywołuje tę funkcję
[in,out] inBufHandle
Uchwyt obiektu CircularTLVWriter
[in] inBufStart
wskaźnik na początku danych (z perspektywy TLVWriter)
[in] inBufLen
długość danych w buforze wskazywana przez wartość inbufStart
Zwracane wartości
WEAVE_NO_ERROR
Bezwarunkowo.

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
[in,out] ioWriter
TLVWriter wywołuje tę funkcję
[in,out] inBufHandle
Uchwyt obiektu CircularTLVWriter
[out] outBufStart
Wskaźnik nowego bufora
[out] outBufLen
Dostępna długość tekstu
Zwracane wartości
WEAVE_NO_ERROR
Na sukces.
other
Jeśli funkcji nie udało się pominąć pełnego elementu TLV najwyższego poziomu.

GetNextBufferFunct

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

trampolina do zadania WeaveCircularTLVBuffer::GetNextBuffer.

Szczegóły
Parametry
[in,out] ioReader
TLVReader wywołujące tę funkcję
[in,out] inBufHandle
Uchwyt obiektu CircularTLVWriter
[in,out] outBufStart
Odwołanie do bufora danych. Zwrócona wartość jest ustawiona na wartość w tym buforze.
[out] outBufLen
Po zwróceniu ustaw liczbę ciągłych bajtów, które mogą zostać odczytane z bufora.
Zwracane wartości
WEAVE_NO_ERROR
Sukces bezwarunkowo.