File indexing completed on 2025-08-03 08:20:56
0001 #include "MessageSystem.h"
0002
0003 #include "OnlMonBase.h" // for OnlMonBase
0004 #include "OnlMonServer.h"
0005
0006 #include <Event/msg_control.h>
0007 #include <Event/msg_profile.h> // for MSG_SEV_DEFAULT, MSG_SEV_INFORMATIONAL
0008
0009 #include <iostream> // for endl, ostream, basic_ostream, cout, std
0010
0011 MessageSystem::MessageSystem(const std::string &name)
0012 : OnlMonBase(name)
0013 {
0014 Message = new msg_control(MSG_TYPE_MONITORING, MSG_SOURCE_DEFAULT, MSG_SEV_DEFAULT, name.c_str());
0015 return;
0016 }
0017
0018 MessageSystem::~MessageSystem()
0019 {
0020 delete Message;
0021 msgcounter.clear();
0022 return;
0023 }
0024
0025 int MessageSystem::send_message(const int msgsource, const int severity, const std::string &err_message, const int msgtype)
0026 {
0027 Message->set_source(msgsource);
0028 Message->set_severity(severity);
0029 std::map<int, std::pair<int, int> >::iterator iter;
0030 tryagain:
0031 iter = msgcounter.find(msgtype);
0032 if (iter == msgcounter.end())
0033 {
0034 std::pair<int, int> newpair(-10, 2);
0035 msgcounter[msgtype] = newpair;
0036 goto tryagain;
0037 }
0038 (iter->second).first++;
0039 if ((iter->second).first > 0)
0040 {
0041 if ((iter->second).first == (iter->second).second)
0042 {
0043 std::cout << *Message << err_message << std::endl;
0044 (iter->second).first = 0;
0045 (iter->second).second *= 2;
0046 }
0047
0048
0049
0050
0051
0052
0053 }
0054 else
0055 {
0056 std::cout << *Message << err_message << std::endl;
0057 }
0058 if (severity > MSG_SEV_INFORMATIONAL)
0059 {
0060 OnlMonServer *se = OnlMonServer::instance();
0061 se->WriteLogFile(ThisName, err_message);
0062 }
0063 return 0;
0064 }
0065
0066 int MessageSystem::Reset()
0067 {
0068 msgcounter.clear();
0069 return 0;
0070 }