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

7 years ago
7 years ago
  1. /**
  2. * @file Log.h
  3. *
  4. * Created on: 16.01.2017
  5. * @author Piotr Dergun
  6. */
  7. #ifndef LOG_H_
  8. #define LOG_H_
  9. #include "common.h"
  10. enum LOG_COLOR {
  11. BLACK,
  12. RED,
  13. GREEN,
  14. YELLOW,
  15. BLUE,
  16. MAGENTA,
  17. CYAN,
  18. WHITE
  19. };
  20. class Log
  21. {
  22. /** nr linii na którym ma byc domyślnie zapisany komunikat */
  23. int lineNumber;
  24. /** kolor tekstu */
  25. LOG_COLOR color;
  26. /** znaki specjalne pomiędzy nazwą zdarzenia, a komunikatem; zwykle tabulatory */
  27. string delimiter;
  28. /** wskaźnik na element z nazwą - hostname etc. */
  29. string *objectName;
  30. /** systemowy mutex blokujący pisanie przez inne wątki */
  31. pthread_mutex_t *writeMutex;
  32. /** domyślny czas delay'a */
  33. int delayVal;
  34. /** numer linii, od której będą zaczynać się wieloliniowe komunikaty (do samego dołu) */
  35. int firstLine;
  36. /** aktualny numer linii komunikatu wielolinijkowego */
  37. int currentLine;
  38. public:
  39. Log();
  40. /**
  41. * wypisuje na ekran komunikat obiektu
  42. * @param msg treść komunikatu
  43. * @param force wymuszenie wyświetlenia jeżeli delay obiektu=0
  44. * @param customLine określony nr linii, na którym ma być wyświetlony komunikat zamiast domyślnej linii
  45. */
  46. void print(string msg, bool force=false, int customLine = -1);
  47. /**
  48. * wypisuje na ekran komunikat wielolinijkowy (linia po linii, do końca ekranu -2 linie)
  49. * @param msg treść komunikatu
  50. * @param force wymuszenie wyświetlania jeżeli delay obiektu=0
  51. */
  52. void printLine(string msg, bool force=false);
  53. /**
  54. * tworzy efektowny progressbar wraz z wartością procentową na końcu linii
  55. * @param lineNumber numer linii na którym ma być wyświetlony progress bar
  56. * @param offset przesunięcie progressbaru w stosunku do nazwy
  57. * @param msg nazwa progressbara
  58. * @param percent procent określonego parametru, liczba wymierna z zakresu [0,1]
  59. */
  60. void printProgressBar(int lineNumber, int offset, string msg, float percent);
  61. /**
  62. * zwraca mutex (Singleton) do blokowania pisania po konsoli
  63. */
  64. static pthread_mutex_t * getMutex();
  65. /**
  66. * opóźnia wykonanie się poleceń o czas z delayVal lub customowy
  67. * czas pomiędzy 0-9 uruchamia systemowe sleep()
  68. * natomiast powyżej 9 funkcję usleep
  69. * @param optional opcjonalny czas (1-9 sekundy, >=10 mikrosekundy)
  70. */
  71. void delay(int optional=-1);
  72. /* mutuatory */
  73. LOG_COLOR getColor() const;
  74. void setColor(LOG_COLOR color);
  75. const string& getDelimiter() const;
  76. void setDelimiter(const string& delimiter);
  77. int getLineNumber() const;
  78. void setLineNumber(int lineNumber);
  79. void setLogParams(int lineNumber, LOG_COLOR color, string delimiter);
  80. int getDelay() const;
  81. void setDelay(int delay);
  82. string* getObjectName() const;
  83. void setObjectName(string* objectName);
  84. int getFirstLine() const;
  85. void setFirstLine(int firstLine);
  86. };
  87. #endif /* LOG_H_ */