nl::Weave::TLV::WeaveCircularTLVBuffer

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

WeaveCircularTLVBuffer fournit un stockage circulaire pour nl::Weave::TLV::TLVWriter et nl::Weave::TLVTLVReader.

Résumé

nl::Weave::TLV::TLVWriter peut écrire un nombre illimité d'entrées TLV dans le WeaveCircularTLVBuffer, à condition que chaque entrée TLV s'inscrive entièrement dans l'espace de stockage fourni. nl::Weave::TLV::TLVReader lit au maximum la taille du tampon, mais s'adapte à la forme de retour à la ligne.

Constructeurs et destructeurs

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

Types publics

ProcessEvictedElementFunct)(WeaveCircularTLVBuffer &inBuffer, void *inAppData, TLVReader &inReader) WEAVE_ERROR(*
Fonction appelée pour traiter un élément TLV avant qu'il ne soit évincé de nl::Weave::TLV::WeaveCircularTLVBuffer.

Attributs publics

mAppData
void *
Contexte facultatif fourni par l'utilisateur à utiliser avec le rappel traitant l'élément évincé.
mImplicitProfileId
uint32_t
mProcessEvictedElement
Rappel facultatif fourni par l'utilisateur qui traite l'élément avant de le supprimer du tampon circulaire.

Fonctions publiques

AvailableDataLength(void) const
size_t
DataLength(void) const
size_t
EvictHead(void)
Évincer le plus ancien élément TLV de premier niveau dans le WeaveCircularTLVBuffer.
FinalizeBuffer(TLVWriter & ioWriter, uint8_t *inBufStart, uint32_t inBufLen)
FinalizeBuffer ajuste l'état WeaveCircularTLVBuffer à la fin de la sortie de TLVWriter.
GetNewBuffer(TLVWriter & ioWriter, uint8_t *& outBufStart, uint32_t & outBufLen)
Obtenez de l'espace supplémentaire pour TLVWriter.
GetNextBuffer(TLVReader & ioReader, const uint8_t *& outBufStart, uint32_t & outBufLen)
Obtenez de l'espace supplémentaire pour le 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

Fonctions statiques publiques

FinalizeBufferFunct(TLVWriter & ioWriter, uintptr_t inBufHandle, uint8_t *inBufStart, uint32_t inBufLen)
GetNewBufferFunct(TLVWriter & ioWriter, uintptr_t & inBufHandle, uint8_t *& outBufStart, uint32_t & outBufLen)
Un trampoline permettant d'ajouter de l'espace à TLVWriter
GetNextBufferFunct(TLVReader & ioReader, uintptr_t & inBufHandle, const uint8_t *& outBufStart, uint32_t & outBufLen)

Types publics

ProcessEvictedElementFunct

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

Fonction appelée pour traiter un élément TLV avant qu'il ne soit évincé de nl::Weave::TLV::WeaveCircularTLVBuffer.

Les fonctions de ce type permettent de traiter un élément TLV sur le point d'être évincé du tampon. La fonction reçoit un élément nl::Weave::TLV::TLVReader positionné sur l'élément sur le point d'être supprimé, ainsi qu'un contexte vide * dans lequel l'utilisateur peut avoir fourni un environnement supplémentaire pour le rappel. Si la fonction a traité l'élément avec succès, elle doit renvoyer WEAVE_NO_ERROR. Cela signifie au WeaveCircularTLVBuffer que l'élément peut être évincé en toute sécurité. Toute autre valeur renvoyée est traitée comme une erreur et empêche le WeaveCircularTLVBuffer d'évincer l'élément en question.

Remarque: Ce rappel peut être utilisé pour forcer WeaveCircularTLVBuffer à ne pas évincer l'élément. Cela peut être utile dans un certain nombre de cas, lorsque vous souhaitez disposer d'un tampon circulaire sous-jacent, mais ne pas remplacer les éléments qu'il contient.

Détails
Paramètres
[in] inBuffer
Une référence au tampon à partir duquel l'éviction a lieu
[in] inAppData
Pointeur vers la structure fournie par l'utilisateur contenant du contexte supplémentaire pour ce rappel
[in] inReader
Un TLVReader positionné au niveau de l'élément à évincer.
Valeurs de retour
WEAVE_NO_ERROR
Pour la réussite. L'élément sera évincé.
other
Une erreur s'est produite lors du traitement de l'événement. L'élément reste dans le tampon. La fonction d'écriture qui a déclenché l'éviction de cet élément échouera.

Attributs publics

mAppData

void * mAppData

Contexte facultatif fourni par l'utilisateur à utiliser avec le rappel traitant l'élément évincé.

mImplicitProfileId

uint32_t mImplicitProfileId

mProcessEvictedElement

ProcessEvictedElementFunct mProcessEvictedElement

Rappel facultatif fourni par l'utilisateur qui traite l'élément avant de le supprimer du tampon circulaire.

Consultez la définition du type ProcessEvictedElementFunct pour en savoir plus sur l'implémentation de la fonction mProcessEvictedElement.

Fonctions publiques

AvailableDataLength

size_t AvailableDataLength(
  void
) const 

DataLength

size_t DataLength(
  void
) const 

EvictHead

WEAVE_ERROR EvictHead(
  void
)

Évincer le plus ancien élément TLV de premier niveau dans le WeaveCircularTLVBuffer.

Cette fonction supprime l'élément TLV de niveau supérieur le plus ancien dans le tampon. La fonction appelle le rappel enregistré lors de mProcessEvictedElement pour traiter l'élément avant sa suppression. Si le rappel renvoie autre chose que WEAVE_NO_ERROR, l'élément n'est pas supprimé. De même, si toute autre erreur ne se produit pas d'éléments dans le tampon, etc., le WeaveCircularTLVBuffer sous-jacent reste inchangé.

Détails
Valeurs de retour
WEAVE_NO_ERROR
Pour la réussite.
other
Pour toute autre erreur renvoyée par le rappel ou par TLVReader.

FinalizeBuffer

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

FinalizeBuffer ajuste l'état WeaveCircularTLVBuffer à la fin de la sortie de TLVWriter.

Cette fonction affecte la position de la queue de la file d'attente.

Détails
Paramètres
[in,out] ioWriter
TLVWriter qui appelle cette fonction
[in] inBufStart
Pointeur vers le début des données (du point de vue de TLVWriter)
[in] inBufLen
longueur de données dans la mémoire tampon indiquée par inbufStart
Valeurs de retour
WEAVE_NO_ERROR
sans condition.

GetNewBuffer

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

Obtenez de l'espace supplémentaire pour TLVWriter.

En réalité, la fonction évince un élément du tampon circulaire et ajuste l'en-tête de cette file d'attente de tampon

Détails
Paramètres
[in,out] ioWriter
TLVWriter qui appelle cette fonction
[out] outBufStart
Pointeur vers le nouveau tampon
[out] outBufLen
La longueur disponible pour l'écriture
Valeurs de retour
WEAVE_NO_ERROR
Pour la réussite.
other
Si la fonction n'a pas pu supprimer un élément TLV de premier niveau complet.

GetNextBuffer

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

Obtenez de l'espace supplémentaire pour le TLVReader.

L'espace de stockage fourni par le WeaveCircularTLVBuffer peut être inclus dans le tampon. Cette fonction nous permet de faire correspondre la mise en mémoire tampon du tampon circulaire aux contraintes TLVReader. Le lecteur lira au maximum mQueueSize octets à partir du tampon.

Détails
Paramètres
[in] ioReader
TLVReader qui appelle cette fonction.
[in,out] outBufStart
Référence au tampon de données. En retour, il est défini sur une valeur comprise dans ce tampon.
[out] outBufLen
En retour, défini sur le nombre d'octets continus pouvant être lus à partir du tampon.
Valeurs de retour
WEAVE_NO_ERROR
L'opération réussit systématiquement.

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
)

Constructeur WeaveCircularTLVBuffer.

Détails
Paramètres
[in] inBuffer
Un pointeur vers le magasin de sauvegarde de la file d'attente
[in] inBufferLength
Longueur, en octets, du magasin de support

WeaveCircularTLVBuffer

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

Constructeur WeaveCircularTLVBuffer.

Détails
Paramètres
[in] inBuffer
Un pointeur vers le magasin de sauvegarde de la file d'attente
[in] inBufferLength
Longueur, en octets, du magasin de support
[in] inHead
Point initial de la tête. Le pointeur inHead doit se trouver dans le magasin de sauvegarde du tampon circulaire, c'est-à-dire dans inBuffer et &(inBuffer[inBufferLength]).

Fonctions statiques publiques

FinalizeBufferFunct

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

Un trampoline pour WeaveCircularTLVBuffer::FinalizeBuffer.

Détails
Paramètres
[in,out] ioWriter
TLVWriter qui appelle cette fonction
[in,out] inBufHandle
Un handle vers l'objet CircularTLVWriter
[in] inBufStart
Pointeur vers le début des données (du point de vue de TLVWriter)
[in] inBufLen
longueur de données dans la mémoire tampon indiquée par inbufStart
Valeurs de retour
WEAVE_NO_ERROR
sans condition.

GetNewBufferFunct

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

Un trampoline permettant d'ajouter de l'espace à TLVWriter

Détails
Paramètres
[in,out] ioWriter
TLVWriter qui appelle cette fonction
[in,out] inBufHandle
Un handle vers l'objet CircularTLVWriter
[out] outBufStart
Pointeur vers le nouveau tampon
[out] outBufLen
La longueur disponible pour l'écriture
Valeurs de retour
WEAVE_NO_ERROR
Pour la réussite.
other
Si la fonction n'a pas pu supprimer un élément TLV de premier niveau complet.

GetNextBufferFunct

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

Un trampoline pour WeaveCircularTLVBuffer::GetNextBuffer.

Détails
Paramètres
[in,out] ioReader
TLVReader appelant cette fonction
[in,out] inBufHandle
Un handle vers l'objet CircularTLVWriter
[in,out] outBufStart
Référence au tampon de données. En retour, il est défini sur une valeur comprise dans ce tampon.
[out] outBufLen
En retour, défini sur le nombre d'octets continus pouvant être lus à partir du tampon.
Valeurs de retour
WEAVE_NO_ERROR
L'opération réussit systématiquement.