Back to home page

sPhenix code displayed by LXR

 
 

    


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     //       else
0048     //  {
0049     //    cout << "Not sending " << (iter->second).first
0050     //         << ", 2nd: " << (iter->second).second
0051     //         << ", %: " << (iter->second).first%(iter->second).second << endl;
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 }