00001 #ifndef FWCore_MessageLogger_MessageLoggerQ_h
00002 #define FWCore_MessageLogger_MessageLoggerQ_h
00003
00004 #include "FWCore/Utilities/interface/SingleConsumerQ.h"
00005
00006 #include <map>
00007
00008 namespace edm
00009 {
00010
00011
00012 class ErrorObj;
00013 class ParameterSet;
00014 class ELdestination;
00015 namespace service {
00016 class NamedDestination;
00017 }
00018
00019
00020 class MessageLoggerQ
00021 {
00022 public:
00023
00024 enum OpCode
00025 { END_THREAD
00026 , LOG_A_MESSAGE
00027 , CONFIGURE
00028 , EXTERN_DEST
00029 , SUMMARIZE
00030 , JOBREPORT
00031 , JOBMODE
00032 , SHUT_UP
00033 , FLUSH_LOG_Q
00034 , GROUP_STATS
00035 , FJR_SUMMARY
00036 };
00037
00038
00039 static MessageLoggerQ * instance();
00040
00041
00042 static void MLqEND();
00043 static void MLqLOG( ErrorObj * p );
00044 static void MLqCFG( ParameterSet * p );
00045 static void MLqEXT( service::NamedDestination* p );
00046 static void MLqSUM();
00047 static void MLqJOB( std::string * j );
00048 static void MLqMOD( std::string * jm );
00049 static void MLqSHT();
00050 static void MLqFLS();
00051 static void MLqGRP(std::string * cat_p);
00052 static void MLqJRS(std::map<std::string, double> * sum_p);
00053
00054
00055 static void consume( OpCode & opcode, void * & operand );
00056
00057 private:
00058
00059 MessageLoggerQ();
00060 ~MessageLoggerQ();
00061
00062
00063 MessageLoggerQ( MessageLoggerQ const & );
00064 void operator = ( MessageLoggerQ const & );
00065
00066
00067 static const int buf_depth = 500;
00068 static const int buf_size = sizeof(OpCode)
00069 + sizeof(void *);
00070
00071
00072 static SingleConsumerQ buf;
00073
00074 };
00075
00076
00077 }
00078
00079
00080 #endif // FWCore_MessageLogger_MessageLoggerQ_h