Symulacja NAT na przedmiot Symulacje Komputerowe
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

93 lines
2.7 KiB

/**
* @file Log.h
*
* Created on: 16.01.2017
* @author Piotr Dergun
*/
#ifndef LOG_H_
#define LOG_H_
#include "common.h"
enum LOG_COLOR {
BLACK,
RED,
GREEN,
YELLOW,
BLUE,
MAGENTA,
CYAN,
WHITE
};
class Log
{
/** nr linii na którym ma byc domyślnie zapisany komunikat */
int lineNumber;
/** kolor tekstu */
LOG_COLOR color;
/** znaki specjalne pomiędzy nazwą zdarzenia, a komunikatem; zwykle tabulatory */
string delimiter;
/** wskaźnik na element z nazwą - hostname etc. */
string *objectName;
/** systemowy mutex blokujący pisanie przez inne wątki */
pthread_mutex_t *writeMutex;
/** domyślny czas delay'a */
int delayVal;
/** numer linii, od której będą zaczynać się wieloliniowe komunikaty (do samego dołu) */
int firstLine;
/** aktualny numer linii komunikatu wielolinijkowego */
int currentLine;
public:
Log();
/**
* wypisuje na ekran komunikat obiektu
* @param msg treść komunikatu
* @param force wymuszenie wyświetlenia jeżeli delay obiektu=0
* @param customLine określony nr linii, na którym ma być wyświetlony komunikat zamiast domyślnej linii
*/
void print(string msg, bool force=false, int customLine = -1);
/**
* wypisuje na ekran komunikat wielolinijkowy (linia po linii, aż do końca ekranu -2 linie)
* @param msg treść komunikatu
* @param force wymuszenie wyświetlania jeżeli delay obiektu=0
*/
void printLine(string msg, bool force=false);
/**
* tworzy efektowny progressbar wraz z wartością procentową na końcu linii
* @param lineNumber numer linii na którym ma być wyświetlony progress bar
* @param offset przesunięcie progressbaru w stosunku do nazwy
* @param msg nazwa progressbara
* @param percent procent określonego parametru, liczba wymierna z zakresu [0,1]
*/
void printProgressBar(int lineNumber, int offset, string msg, float percent);
/**
* zwraca mutex (Singleton) do blokowania pisania po konsoli
*/
static pthread_mutex_t * getMutex();
/**
* opóźnia wykonanie się poleceń o czas z delayVal lub customowy
* czas pomiędzy 0-9 uruchamia systemowe sleep()
* natomiast powyżej 9 funkcję usleep
* @param optional opcjonalny czas (1-9 sekundy, >=10 mikrosekundy)
*/
void delay(int optional=-1);
/* mutuatory */
LOG_COLOR getColor() const;
void setColor(LOG_COLOR color);
const string& getDelimiter() const;
void setDelimiter(const string& delimiter);
int getLineNumber() const;
void setLineNumber(int lineNumber);
void setLogParams(int lineNumber, LOG_COLOR color, string delimiter);
int getDelay() const;
void setDelay(int delay);
string* getObjectName() const;
void setObjectName(string* objectName);
int getFirstLine() const;
void setFirstLine(int firstLine);
};
#endif /* LOG_H_ */