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 WeaveCircularTLVBuffer tant que chaque entrée TLV individuelle s'inscrit entièrement dans l'espace de stockage fourni. La commande nl::Weave::TLV::TLVReader ne peut pas lire plus de la taille du tampon, mais elle peut contenir un retour à la ligne.

Constructeurs et destructeurs

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

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 le traitement de l'élément évincé.
mImplicitProfileId
uint32_t
mProcessEvictedElement
Rappel facultatif fourni par l'utilisateur qui traite l'élément avant de l'expulser du tampon circulaire.

Fonctions publiques

AvailableDataLength(void) const
size_t
DataLength(void) const
size_t
EvictHead(void)
Évince le plus ancien élément TLV de premier niveau dans WeaveCircularTLVBuffer.
FinalizeBuffer(TLVWriter & ioWriter, uint8_t *inBufStart, uint32_t inBufLen)
FinalizeBuffer ajuste l'état de 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 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 de libérer de l'espace pour 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 recevra un nl::Weave::TLV::TLVReader placé sur l'élément sur le point d'être supprimé, ainsi qu'un contexte void * où l'utilisateur peut avoir fourni un environnement supplémentaire pour le rappel. Si la fonction a traité correctement l'élément, elle doit renvoyer WEAVE_NO_ERROR. cela signifie dans 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 WeaveCircularTLVBuffer d'expulser l'élément en question.

Remarque: Ce rappel peut être utilisé pour forcer WeaveCircularTLVBuffer à ne pas expulser l'élément. Cela peut être utile dans un certain nombre de cas, lorsqu'un tampon circulaire sous-jacent doit être créé sans pour autant remplacer des é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 lecteur TLVReader positionné au niveau de l'élément à évincer.
Valeurs renvoyées
WEAVE_NO_ERROR
En cas de 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 la mémoire 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 le traitement de l'élément évincé.

mImplicitProfileId

uint32_t mImplicitProfileId

mProcessEvictedElement

ProcessEvictedElementFunct mProcessEvictedElement

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

Consultez la définition de type ProcessEvictedElementFunct pour obtenir plus d'informations 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
)

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

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

Détails
Valeurs renvoyées
WEAVE_NO_ERROR
En cas de 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 de WeaveCircularTLVBuffer à la fin de la sortie de TLVWriter.

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

Détails
Paramètres
[in,out] ioWriter
TLVWriter appelant cette fonction
[in] inBufStart
Pointeur vers le début des données (du point de vue TLVWriter)
[in] inBufLen
longueur des données du tampon pointées par inbufStart
Valeurs renvoyées
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 la tête de cette file d'attente de tampon

Détails
Paramètres
[in,out] ioWriter
TLVWriter appelant cette fonction
[out] outBufStart
Pointeur vers le nouveau tampon
[out] outBufLen
La durée disponible pour l'écriture
Valeurs renvoyées
WEAVE_NO_ERROR
En cas de réussite.
other
Si la fonction n'a pas pu éliminer 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 TLVReader.

Le stockage fourni par WeaveCircularTLVBuffer peut être encapsulé dans la mémoire tampon. Cette fonction nous permet de faire correspondre la mise en mémoire tampon du tampon circulaire aux contraintes TLVReader. Le lecteur lit au maximum mQueueSize octets du tampon.

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

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.

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

WeaveCircularTLVBuffer

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

WeaveCircularTLVBuffer.

Détails
Paramètres
[in] inBuffer
Un pointeur vers le magasin de sauvegarde pour la file d'attente
[in] inBufferLength
Longueur, en octets, du magasin de sauvegarde
[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 entre inBuffer et &(inBuffer[inBufferLength]).

Fonctions statiques publiques

FinalizeBufferFunct

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

Un trampoline vers WeaveCircularTLVBuffer::FinalizeBuffer.

Détails
Paramètres
[in,out] ioWriter
TLVWriter appelant 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 TLVWriter)
[in] inBufLen
longueur des données du tampon pointées par inbufStart
Valeurs renvoyées
WEAVE_NO_ERROR
Sans condition.

GetNewBufferFunct

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

Un trampoline permettant de libérer de l'espace pour TLVWriter.

Détails
Paramètres
[in,out] ioWriter
TLVWriter appelant cette fonction
[in,out] inBufHandle
Un handle vers l'objet CircularTLVWriter
[out] outBufStart
Pointeur vers le nouveau tampon
[out] outBufLen
La durée disponible pour l'écriture
Valeurs renvoyées
WEAVE_NO_ERROR
En cas de réussite.
other
Si la fonction n'a pas pu éliminer 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 vers WeaveCircularTLVBuffer::GetNextBuffer

Détails
Paramètres
[in,out] ioReader
TLVReader qui appelle cette fonction
[in,out] inBufHandle
Un handle vers l'objet CircularTLVWriter
[in,out] outBufStart
Référence au tampon de données. Au retour, il est défini sur une valeur comprise dans ce tampon.
[out] outBufLen
Lors du retour, définissez le nombre d'octets continus pouvant être lus à partir du tampon.
Valeurs renvoyées
WEAVE_NO_ERROR
Elle réussit sans condition.