/install/xbt/linux/misc/alerts.h

http://torrentpier2.googlecode.com/ · C Header · 75 lines · 65 code · 10 blank · 0 comment · 1 complexity · 73c0ccf6ad7b1624e5b780a4341b3295 MD5 · raw file

  1. #pragma once
  2. #include <ctime>
  3. #include <list>
  4. #include "stream_writer.h"
  5. class Calert
  6. {
  7. public:
  8. enum t_level
  9. {
  10. emerg,
  11. alert,
  12. crit,
  13. error,
  14. warn,
  15. notice,
  16. info,
  17. debug,
  18. };
  19. time_t time() const
  20. {
  21. return m_time;
  22. }
  23. t_level level() const
  24. {
  25. return m_level;
  26. }
  27. const std::string& message() const
  28. {
  29. return m_message;
  30. }
  31. void message(const std::string& v)
  32. {
  33. m_message = v;
  34. }
  35. Calert(t_level level, const std::string& message)
  36. {
  37. m_time = ::time(NULL);
  38. m_level = level;
  39. m_message = message;
  40. }
  41. Calert(t_level level, const std::string& source, const std::string& message)
  42. {
  43. m_time = ::time(NULL);
  44. m_level = level;
  45. m_message = message;
  46. m_source = source;
  47. }
  48. int pre_dump() const;
  49. void dump(Cstream_writer&) const;
  50. private:
  51. time_t m_time;
  52. t_level m_level;
  53. std::string m_message;
  54. std::string m_source;
  55. };
  56. class Calerts: public std::list<Calert>
  57. {
  58. public:
  59. void push_back(const value_type& v)
  60. {
  61. std::list<value_type>::push_back(v);
  62. while (size() > 250)
  63. erase(begin());
  64. }
  65. };