nl::Weave::TLV::WeaveCircularTLVBuffer

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

WeaveCircularTLVBuffer zapewnia okrągłą pamięć masową dla nl::Weave::TLV::TLVWriter i nl::Weave::TLVTLVReader.

Podsumowanie

nl::Weave::TLV::TLVWriter może zapisać nieograniczoną liczbę wpisów TLV w WeaveCircularTLVBuffer, o ile każdy pojedynczy wpis TLV mieści się w całości w udostępnionej pamięci. Instrukcja nl::Weave::TLV::TLVReader odczytuje maksymalny rozmiar bufora, ale umieszcza go w buforze.

Konstruktory i niszczyciele

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

Typy publiczne

ProcessEvictedElementFunct)(WeaveCircularTLVBuffer &inBuffer, void *inAppData, TLVReader &inReader) WEAVE_ERROR(*
Funkcja, która jest wywoływana do przetwarzania elementu TLV przed usunięciem go z elementu nl::Weave::TLV::WeaveCircularTLVBuffer.

Atrybuty publiczne

mAppData
void *
Opcjonalny, dostarczony przez użytkownika kontekst, który ma być używany z wywołaniem zwrotnym podczas przetwarzania wykluczonego elementu.
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 WeaveCircularTLVBuffer.
FinalizeBuffer(TLVWriter & ioWriter, uint8_t *inBufStart, uint32_t inBufLen)
FinalizeBuffer dostosowuje stan WeaveCircularTLVBuffer po zakończeniu przetwarzania danych wyjściowych z TLVWriter.
GetNewBuffer(TLVWriter & ioWriter, uint8_t *& outBufStart, uint32_t & outBufLen)
Zyskaj dodatkowe miejsce na TLVWriter.
GetNextBuffer(TLVReader & ioReader, const uint8_t *& outBufStart, uint32_t & outBufLen)
Zyskaj dodatkowe miejsce na 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 zapewniająca dodatkowe miejsce na 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 przetwarzania elementu TLV przed usunięciem go z elementu nl::Weave::TLV::WeaveCircularTLVBuffer.

Funkcje tego typu służą do przetwarzania elementu TLV, który ma zostać usunięty z bufora. Do funkcji zostanie nadany element nl::Weave::TLV::TLVReader umieszczony na elemencie, który ma zostać usunięty, oraz pusty kontekst * w miejscu, w którym użytkownik mógł podać dodatkowe środowisko dla wywołania zwrotnego. Jeśli funkcja przetworzyła element, musi zwrócić WEAVE_NO_ERROR ; wskazuje ona WeaveCircularTLVBuffer, że element można bezpiecznie usunąć. Każda inna zwracana wartość jest traktowana jako błąd i nie zapobiega usunięciu danego elementu przez WeaveCircularTLVBuffer.

Uwaga: to wywołanie zwrotne można użyć, aby wymusić usunięcie elementu przez WeaveCircularTLVBuffer. Może się to przydać w wielu sytuacjach, gdy chcesz utworzyć bazowy bufor kołowy, ale bez zastępowania żadnych zawartych w nim elementów.

Szczegóły
Parametry
[in] inBuffer
Odwołanie do bufora, z którego odbywa się usunięcie.
[in] inAppData
Wskaźnik do struktury przekazanej przez użytkownika zawierającej dodatkowy kontekst tego wywołania zwrotnego
[in] inReader
TLVReader umieszczony na elemencie, który ma zostać wykluczony.
Zwracane wartości
WEAVE_NO_ERROR
Powodzenie. Element zostanie usunięty.
other
Podczas przetwarzania zdarzenia wystąpił błąd. Element pozostaje w buforze. Funkcja zapisu, która wywołała usunięcie tego elementu, zakończy się niepowodzeniem.

Atrybuty publiczne

mAppData

void * mAppData

Opcjonalny, dostarczony przez użytkownika kontekst, który ma być używany z wywołaniem zwrotnym podczas przetwarzania wykluczonego elementu.

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 o implementowaniu 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 WeaveCircularTLVBuffer.

Ta funkcja usuwa w buforze najstarszy element TLV najwyższego poziomu. Ta funkcja wywołuje wywołanie zwrotne zarejestrowane w mProcessEvictedElement, by przetworzyć element przed usunięciem. Jeśli wywołanie zwrotne zwróci wartość inną niż WEAVE_NO_ERROR, element nie zostanie usunięty. Podobnie, jeśli jakikolwiek inny błąd nie wystąpi w buforze lub bazowy element WeaveCircularTLVBuffer pozostanie niezmieniony.

Szczegóły
Zwracane wartości
WEAVE_NO_ERROR
Powodzenie.
other
W przypadku jakiegokolwiek innego błędu zwróconego przez wywołanie zwrotne lub przez moduł TLVReader.

FinalizeBuffer

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

FinalizeBuffer dostosowuje 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
Wywoływanie tej funkcji przez TLVWriter
[in] inBufStart
wskaźnik do początku danych (z perspektywy TLVWriter)
[in] inBufLen
długość danych w buforze wskazanym przez inbufStart
Zwracane wartości
WEAVE_NO_ERROR
Bezwarunkowo.

GetNewBuffer

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

Zyskaj dodatkowe miejsce na TLVWriter.

W rzeczywistości funkcja usuwa element z okrągłego bufora i dostosowuje początek kolejki.

Szczegóły
Parametry
[in,out] ioWriter
Wywoływanie tej funkcji przez TLVWriter
[out] outBufStart
wskaźnik do nowego bufora.
[out] outBufLen
Dostępna długość pisania
Zwracane wartości
WEAVE_NO_ERROR
Powodzenie.
other
Funkcja nie mogła wyodrębnić pełnego elementu TLV najwyższego poziomu.

GetNextBuffer

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

Zyskaj dodatkowe miejsce na TLVReader.

Pamięć udostępniana przez funkcję WeaveCircularTLVBuffer może być zawinięta w buforze. Ta funkcja pozwala dopasować buforowanie kołowe do ograniczeń TLVReader. Czytnik odczyta z bufora maksymalnie mQueueSize bajty.

Szczegóły
Parametry
[in] ioReader
TLVReader wywołuje tę funkcję.
[in,out] outBufStart
Odwołanie do bufora danych. Zwrot jest ustawiany na wartość w tym buforze.
[out] outBufLen
Po powrocie ustaw liczbę ciągłych bajtów, które można odczytać z bufora.
Zwracane wartości
WEAVE_NO_ERROR
Odnosi się 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
)

Konstruktora WeaveCircularTLVBuffer.

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

WeaveCircularTLVBuffer

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

Konstruktora WeaveCircularTLVBuffer.

Szczegóły
Parametry
[in] inBuffer
Wskaźnik do magazynu zapasowego kolejki
[in] inBufferLength
Długość magazynu kopii zapasowych (w bajtach)
[in] inHead
Początkowy punkt dla głowy. Wskaźnik inHead musi znajdować się w magazynie zapasowym bufora kołowego, 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
)

Zmieniono wartość WeaveCircularTLVBuffer::FinalizeBuffer.

Szczegóły
Parametry
[in,out] ioWriter
Wywoływanie tej funkcji przez TLVWriter
[in,out] inBufHandle
Uchwyt obiektu CircularTLVWriter
[in] inBufStart
wskaźnik do początku danych (z perspektywy TLVWriter)
[in] inBufLen
długość danych w buforze wskazanym przez inbufStart
Zwracane wartości
WEAVE_NO_ERROR
Bezwarunkowo.

GetNewBufferFunct

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

Trampolina zapewniająca dodatkowe miejsce na TLVWriter.

Szczegóły
Parametry
[in,out] ioWriter
Wywoływanie tej funkcji przez TLVWriter
[in,out] inBufHandle
Uchwyt obiektu CircularTLVWriter
[out] outBufStart
wskaźnik do nowego bufora.
[out] outBufLen
Dostępna długość pisania
Zwracane wartości
WEAVE_NO_ERROR
Powodzenie.
other
Funkcja nie mogła wyodrębnić pełnego elementu TLV najwyższego poziomu.

GetNextBufferFunct

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

Aktywacja polecenia WeaveCircularTLVBuffer::GetNextBuffer.

Szczegóły
Parametry
[in,out] ioReader
Wywoływanie tej funkcji przez TLVReader
[in,out] inBufHandle
Uchwyt obiektu CircularTLVWriter
[in,out] outBufStart
Odwołanie do bufora danych. Zwrot jest ustawiany na wartość w tym buforze.
[out] outBufLen
Po powrocie ustaw liczbę ciągłych bajtów, które można odczytać z bufora.
Zwracane wartości
WEAVE_NO_ERROR
Odnosi się bezwarunkowo.