Go to the documentation of this file.00001 #include "FWCore/MessageLogger/interface/MessageSender.h"
00002 #include "FWCore/MessageLogger/interface/MessageLoggerQ.h"
00003 #include "FWCore/MessageLogger/interface/MessageDrop.h"
00004
00005 #define TRACE_DROP
00006 #ifdef TRACE_DROP
00007 #include <iostream>
00008 #endif
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 using namespace edm;
00021
00022 bool MessageSender::errorSummaryIsBeingKept = false;
00023 bool MessageSender::freshError = false;
00024 std::map<ErrorSummaryMapKey, unsigned int> MessageSender::errorSummaryMap;
00025
00026 MessageSender::MessageSender( ELseverityLevel const & sev,
00027 ELstring const & id,
00028 bool verbatim )
00029 : errorobj_p( new ErrorObj(sev,id,verbatim) )
00030 {
00031
00032 }
00033
00034 MessageSender::MessageSender( ELseverityLevel const & sev,
00035 ELstring const & id )
00036 : errorobj_p( new ErrorObj(sev,id,false) )
00037 {
00038
00039 }
00040
00041
00042
00043
00044
00045 MessageSender::~MessageSender()
00046 {
00047 try
00048 {
00049
00050
00051
00052
00053
00054
00055
00056 MessageDrop * drop = MessageDrop::instance();
00057 if (drop) {
00058 errorobj_p->setModule(drop->moduleContext());
00059 errorobj_p->setContext(drop->runEvent);
00060 }
00061 #ifdef TRACE_DROP
00062 if (!drop) std::cerr << "MessageSender::~MessageSender() - Null drop pointer \n";
00063 #endif
00064
00065 if ( errorSummaryIsBeingKept &&
00066 errorobj_p->xid().severity >= ELwarning )
00067 {
00068 ELextendedID const & xid = errorobj_p->xid();
00069 ErrorSummaryMapKey key (xid.id, xid.module, xid.severity);
00070 ErrorSummaryMapIterator i = errorSummaryMap.find(key);
00071 if (i != errorSummaryMap.end()) {
00072 ++(i->second);
00073 } else {
00074 errorSummaryMap[key] = 1;
00075 }
00076 freshError = true;
00077 }
00078
00079 MessageLoggerQ::MLqLOG(errorobj_p);
00080 }
00081 catch ( ... )
00082 {
00083
00084
00085
00086
00087
00088
00089 }
00090 }