Auditor.h
Go to the documentation of this file.00001
00002 #ifndef GAUDIKERNEL_AUDITOR_H
00003 #define GAUDIKERNEL_AUDITOR_H
00004
00005
00006 #include "GaudiKernel/IProperty.h"
00007 #include "GaudiKernel/IAuditor.h"
00008 #include "GaudiKernel/IService.h"
00009 #include "GaudiKernel/ISvcLocator.h"
00010 #include "GaudiKernel/PropertyMgr.h"
00011 #include <string>
00012 #include <vector>
00013
00014
00015 class IService;
00016 class IMessageSvc;
00017 class Property;
00018 class Algorithm;
00019
00034 class GAUDI_API Auditor : public implements2<IAuditor, IProperty> {
00035 public:
00036
00040 Auditor( const std::string& name, ISvcLocator *svcloc );
00042 virtual ~Auditor();
00043
00047 StatusCode sysInitialize();
00051 StatusCode sysFinalize();
00052
00054
00055 virtual void before(StandardEventType, INamedInterface*);
00056 virtual void before(StandardEventType, const std::string&);
00057
00058 virtual void before(CustomEventTypeRef, INamedInterface*);
00059 virtual void before(CustomEventTypeRef, const std::string&);
00060
00061 virtual void after(StandardEventType, INamedInterface*, const StatusCode&);
00062 virtual void after(StandardEventType, const std::string&, const StatusCode&);
00063
00064 virtual void after(CustomEventTypeRef, INamedInterface*, const StatusCode&);
00065 virtual void after(CustomEventTypeRef, const std::string&, const StatusCode&);
00066
00067
00068
00069 virtual void beforeInitialize(INamedInterface* ) ;
00070 virtual void afterInitialize(INamedInterface* ) ;
00071
00072 virtual void beforeReinitialize(INamedInterface* ) ;
00073 virtual void afterReinitialize(INamedInterface* ) ;
00074
00075 virtual void beforeExecute(INamedInterface* );
00076 virtual void afterExecute(INamedInterface*, const StatusCode& );
00077
00078 virtual void beforeFinalize(INamedInterface* ) ;
00079 virtual void afterFinalize(INamedInterface* ) ;
00080
00081 virtual void beforeBeginRun(INamedInterface* );
00082 virtual void afterBeginRun(INamedInterface* );
00083
00084 virtual void beforeEndRun(INamedInterface* );
00085 virtual void afterEndRun(INamedInterface* );
00086
00087 virtual StatusCode initialize();
00088 virtual StatusCode finalize();
00089
00090 virtual const std::string& name() const ;
00091
00092 virtual bool isEnabled() const ;
00093
00097 SmartIF<IMessageSvc>& msgSvc() const;
00098
00100 int outputLevel() const { return m_outputLevel; }
00101
00103 void setOutputLevel( int level );
00104
00109 SmartIF<ISvcLocator>& serviceLocator() const;
00110
00113 template <class T>
00114 StatusCode service( const std::string& name, T*& svc, bool createIf = false ) const {
00115 SmartIF<T> ptr(serviceLocator()->service(name, createIf));
00116 if (ptr.isValid()) {
00117 svc = ptr.get();
00118 svc->addRef();
00119 return StatusCode::SUCCESS;
00120 }
00121
00122 svc = 0;
00123 return StatusCode::FAILURE;
00124 }
00125
00127 virtual StatusCode setProperty(const Property& p);
00128
00130 virtual StatusCode setProperty( const std::string& s );
00131
00133 virtual StatusCode setProperty( const std::string& n, const std::string& v);
00134
00136 virtual StatusCode getProperty(Property* p) const;
00137
00139 virtual const Property& getProperty( const std::string& name) const;
00140
00142 virtual StatusCode getProperty( const std::string& n, std::string& v ) const;
00143
00145 const std::vector<Property*>& getProperties( ) const;
00146
00147
00188 template <class TYPE>
00189 StatusCode setProperty
00190 ( const std::string& name ,
00191 const TYPE& value )
00192 { return Gaudi::Utils::setProperty ( m_PropertyMgr , name , value ) ; }
00193
00199 StatusCode setProperties();
00200
00201
00229 template <class T>
00230 Property* declareProperty( const std::string& name, T& property,
00231 const std::string& doc = "none") const {
00232 return m_PropertyMgr->declareProperty(name, property, doc);
00233 }
00234
00235 private:
00236
00237 std::string m_name;
00238
00239 mutable SmartIF<IMessageSvc> m_MS;
00240 mutable SmartIF<ISvcLocator> m_pSvcLocator;
00241 PropertyMgr* m_PropertyMgr;
00242 int m_outputLevel;
00243 bool m_isEnabled;
00244 bool m_isInitialized;
00245 bool m_isFinalized;
00246
00247
00248 Auditor(const Auditor& a);
00249
00250
00251 Auditor& operator=(const Auditor& rhs);
00252 };
00253
00254 #endif //GAUDIKERNEL_AUDITOR_H
00255