00001
00002 #ifndef GAUDI_MESSAGESVC_H
00003 #define GAUDI_MESSAGESVC_H
00004
00005
00006 #include <string>
00007 #include <map>
00008
00009 #include "GaudiKernel/StatusCode.h"
00010 #include "GaudiKernel/Service.h"
00011 #include "GaudiKernel/IMessageSvc.h"
00012 #include "GaudiKernel/Message.h"
00013
00014
00015 class ISvcLocator;
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 class MessageSvc : virtual public Service,
00026 virtual public IMessageSvc {
00027 public:
00028 typedef std::pair< std::string, std::ostream* > NamedStream;
00029 typedef std::multimap< int, NamedStream > StreamMap;
00030 typedef std::multimap< StatusCode, Message > MessageMap;
00031 typedef std::map< std::string, int > ThresholdMap;
00032
00033
00034 MessageSvc( const std::string& name, ISvcLocator* svcloc );
00035
00036 virtual ~MessageSvc() {}
00037
00038
00039 virtual StatusCode initialize();
00040
00041 virtual StatusCode finalize();
00042
00043
00044 virtual void reportMessage( const Message& message );
00045
00046
00047 virtual void reportMessage( const StatusCode& code, const std::string& source = "");
00048
00049
00050 virtual void reportMessage( const char* source, int type, const char* message);
00051
00052
00053 virtual void reportMessage( const std::string& source, int type, const std::string& message);
00054
00055
00056 virtual void insertMessage( const StatusCode& code, const Message& message );
00057
00058
00059 virtual void eraseMessage();
00060
00061
00062 virtual void eraseMessage( const StatusCode& code ) ;
00063
00064
00065 virtual void eraseMessage( const StatusCode& code, const Message& message );
00066
00067
00068 virtual void insertStream( int message_type, const std::string& name, std::ostream* stream );
00069
00070
00071 virtual void eraseStream();
00072
00073
00074 virtual void eraseStream( int message_type );
00075
00076
00077 virtual void eraseStream( int message_type, std::ostream* stream );
00078
00079
00080 virtual void eraseStream( std::ostream* stream );
00081
00082
00083 virtual std::ostream* defaultStream() const {
00084 return m_defaultStream;
00085 }
00086
00087
00088 virtual void setDefaultStream( std::ostream* stream ) {
00089 m_defaultStream = stream;
00090 }
00091
00092
00093 virtual int outputLevel() const;
00094
00095
00096 virtual int outputLevel(const std::string& source) const;
00097
00098
00099 virtual void setOutputLevel(int new_level);
00100
00101
00102 virtual void setOutputLevel(const std::string& source, int new_level);
00103
00104
00105 virtual StatusCode queryInterface(const IID& riid, void** ppvUnknown);
00106
00107 private:
00108 std::ostream* m_defaultStream;
00109 Message m_defaultMessage;
00110 StreamMap m_streamMap;
00111 MessageMap m_messageMap;
00112 ThresholdMap m_thresholdMap;
00113
00114 std::string m_defaultFormat;
00115 };
00116
00117 #endif