logger
 All Classes Functions
Public Member Functions | Protected Member Functions | List of all members
Accumulator Class Reference

#include <Accumulator.h>

Inheritance diagram for Accumulator:
RollingFileAccumulator StaticFileAccumulator StreamAccumulator

Public Member Functions

bool addMessage (std::string message)
virtual void close ()=0
 Accumulator (int capacity)
virtual ~Accumulator ()

Protected Member Functions

virtual std::ostream & getStream ()=0
void stop ()

Detailed Description

Collecte les messages de logs de plusieurs threads et les écrit dans un flux de sortie.

Chaque thread peut ajouter des messages à logger avec addMessage. Un unique thread indépendant encapsulé dans la classe écrit les messages sur un flux de sortie. Une telle architecture permet aux thread apellant de ne pas être bloqués par des latences dues aux I/O. Les accumulateurs seront eux même encapsulés dans des Loggers, plusieurs loggers peuvent utiliser un même accumulateur.

Constructor & Destructor Documentation

Accumulator::Accumulator ( int  capacity)

Constructeur permettant de définir la capacité du buffer de messages.

Accumulator::~Accumulator ( )
virtual

Destructeur virtual car nous avons un classe abstraite

Member Function Documentation

bool Accumulator::addMessage ( std::string  message)

Ajoute un message dans la file d'attente des messages à écrire sur le flux de sortie. Cette fonction peut bloquer lorsque le buffer est plein. Dans ce cas le thread apellant attend que le thread encapsulé libère de la place dans le buffer. L'ordre d'enregistrement des messages concurents dépend de la politique de gestion des mutex (ça doit être du FIFO).

Parameters
messageLe message à écrire, ne pas oublier de rajouter des retours à la ligne si l'on veut écrire des lignes

Ajoute un message dans la file d'attente des messages à écrire sur le flux de sortie. Cette fonction peut bloquer lorsque le buffer est plein. Dans ce cas le thread apellant attend que le thread encapsulé libère de la place dans le buffer. L'ordre d'enregistrement des messages concurents dépend de la politique de gestion des mutex (ça doit être du FIFO).

Parameters
messageLe message à écrire, ne pas oublier de rajouter des retours à la ligne si l'on veut écrire des lignes
Returns
true si le message a bien été pris en compte false sinon.
virtual void Accumulator::close ( )
pure virtual

ferme les descripteur de fichier utilisé

Implemented in StaticFileAccumulator, RollingFileAccumulator, and StreamAccumulator.

virtual std::ostream& Accumulator::getStream ( )
protectedpure virtual

Renvoie le flux de sortie pour écrire des lignes de log. Cette fonction sera apellée par le thread encapsulé et implémenté par différentes classe filles

Implemented in StaticFileAccumulator, RollingFileAccumulator, and StreamAccumulator.

void Accumulator::stop ( )
protected

Rentre dans l'état "en cours de destruction" et attend que le thread encapsulé s'arrête proprement. Cette fonction doit être apellée par le destructeur de la classe fille. Question : pourquoi ne pas le faire dans le destructeur de Accumulator ? Réponse : parceque lorsqu'on rentre dans le destructeur de Accumulator, la classe fille a déjà été détruite et l'on a plus accès à la fonction virtuelle getStream() pour écrire les messages en cours avant destruction.

Rentre dans l'état en cours de destruction et attend que le thread encapsulé s'arrêter proprement. Cette fonction doit être apellée par le destructeur de la classe fille. Question : pourquoi ne pas le faire dans le destructeur de Accumulator ? Réponse : parceque lorsqu'on rentre dans le destructeur de Accumulator, la classe fille a déjà été détruite et l'on a plus accès à la fonction virtuelle getStream() écrire les messages en cours avant destruction.


The documentation for this class was generated from the following files: