00001 #ifndef MESSAGEFACILITY_EXTENSIONS_QT_MF_MSG_H
00002 #define MESSAGEFACILITY_EXTENSIONS_QT_MF_MSG_H
00003
00004
00005
00006
00007 #include <QtCore/QString>
00008 #include <QtGui/QColor>
00009
00010 #include <string>
00011 #include <vector>
00012 #include <list>
00013 #include <map>
00014
00015 #include "messagefacility/Utilities/ELseverityLevel.h"
00016 #include <sys/time.h>
00017
00018 namespace mf
00019 {
00020 class ErrorObj;
00021 }
00022
00026 enum sev_code_t
00027 {
00028 SDEBUG,
00029 SINFO,
00030 SWARNING,
00031 SERROR
00032 };
00033
00037 class qt_mf_msg
00038 {
00039 public:
00048 qt_mf_msg(std::string hostname, std::string category, std::string application, pid_t pid, timeval time);
00049
00051 qt_mf_msg() {}
00053 qt_mf_msg(const qt_mf_msg&) = default;
00054
00055
00061 QString const& text(bool mode) const { return mode ? shortText_ : text_; }
00066 QColor const& color() const { return color_; }
00071 sev_code_t sev() const { return sev_; }
00076 QString const& host() const { return host_; }
00081 QString const& cat() const { return cat_; }
00086 QString const& app() const { return app_; }
00091 timeval time() const { return time_; }
00096 size_t seq() const { return seq_; }
00097
00102 void setSeverity(mf::ELseverityLevel sev);
00107 void setSeverityLevel(sev_code_t sev) { sev_ = sev; }
00114 void setMessage(std::string prefix, int iteration, std::string msg);
00119 void setHostAddr(std::string hostaddr) { hostaddr_ = QString(hostaddr.c_str()).toHtmlEscaped(); }
00124 void setFileName(std::string file) { file_ = QString(file.c_str()).toHtmlEscaped(); }
00129 void setLineNumber(std::string line) { line_ = QString(line.c_str()).toHtmlEscaped(); }
00134 void setModule(std::string module) { module_ = QString(module.c_str()).toHtmlEscaped(); }
00139 void setEventID(std::string eventID) { eventID_ = QString(eventID.c_str()).toHtmlEscaped(); }
00140
00144 void updateText();
00145 private:
00146
00147 QString text_;
00148 QString shortText_;
00149 QColor color_;
00150 sev_code_t sev_;
00151 QString host_;
00152 QString cat_;
00153 QString app_;
00154 timeval time_;
00155 size_t seq_;
00156 static size_t sequence;
00157
00158 QString msg_;
00159 QString application_;
00160 QString pid_;
00161 QString hostaddr_;
00162 QString file_;
00163 QString line_;
00164 QString module_;
00165 QString eventID_;
00166 QString sourceType_;
00167 int sourceSequence_;
00168 };
00169
00173 typedef std::list<qt_mf_msg> msgs_t;
00174
00178 class msg_iter_t
00179 {
00180 public:
00181
00186 msg_iter_t(msgs_t::iterator it)
00187 {
00188 iter_ = it;
00189 seq_ = it->seq();
00190 }
00191
00197 bool operator==(msg_iter_t const& other) const
00198 {
00199 return seq_ == other.seq_;
00200 }
00201
00207 bool operator<(msg_iter_t const& other) const
00208 {
00209 return seq_ < other.seq_;
00210 }
00211
00216 msgs_t::iterator get() const { return iter_; };
00217
00218
00219 private:
00220
00221 msgs_t::iterator iter_;
00222 size_t seq_;
00223 };
00224
00228 typedef std::list<msg_iter_t> msg_iters_t;
00232 typedef std::map<QString, msg_iters_t> msg_iters_map_t;
00233
00234 #endif