| # Gaudi Framework, version v20r3
Generated: 24 Nov 2008

# Auditor.h

Go to the documentation of this file.

    00001 // $Header: /local/reps/Gaudi/GaudiKernel/GaudiKernel/Auditor.h,v 1.17 2008/10/27 19:22:20 marcocle Exp $
    00002 #ifndef GAUDIKERNEL_AUDITOR_H
    00003 #define GAUDIKERNEL_AUDITOR_H
    00004
    00005 // Include files
    00006 #include "GaudiKernel/IProperty.h"
    00007 #include "GaudiKernel/IAuditor.h"
    00008 #include "GaudiKernel/IService.h"
    00009 #include "GaudiKernel/ISvcLocator.h"  /*used by service(..)*/
    00010 #include "GaudiKernel/PropertyMgr.h"
    00011 #include <string>
    00012 #include <vector>
    00013
    00014 // Forward declarations
    00015 class IService;
    00016 class IMessageSvc;
    00017 class Property;
    00018 class Algorithm;
    00019
    00034 class Auditor : virtual public IAuditor,
    00035                 virtual public IProperty {
    00036 public:
    00037
    00041   Auditor( const std::string& name, ISvcLocator *svcloc );
    00043   virtual ~Auditor();
    00044
    00048   StatusCode sysInitialize();
    00052   StatusCode sysFinalize();
    00053
    00055
    00056   virtual void before(StandardEventType, INamedInterface*);
    00057   virtual void before(StandardEventType, const std::string&);
    00058
    00059   virtual void before(CustomEventTypeRef, INamedInterface*);
    00060   virtual void before(CustomEventTypeRef, const std::string&);
    00061
    00062   virtual void after(StandardEventType, INamedInterface*, const StatusCode&);
    00063   virtual void after(StandardEventType, const std::string&, const StatusCode&);
    00064
    00065   virtual void after(CustomEventTypeRef, INamedInterface*, const StatusCode&);
    00066   virtual void after(CustomEventTypeRef, const std::string&, const StatusCode&);
    00067
    00068   // Obsolete methods
    00069
    00070   virtual void beforeInitialize(INamedInterface* ) ;
    00071   virtual void afterInitialize(INamedInterface* ) ;
    00072
    00073   virtual void beforeReinitialize(INamedInterface* ) ;
    00074   virtual void afterReinitialize(INamedInterface* ) ;
    00075
    00076   virtual void beforeExecute(INamedInterface* );
    00077   virtual void afterExecute(INamedInterface*, const StatusCode& );
    00078
    00079   virtual void beforeFinalize(INamedInterface* ) ;
    00080   virtual void afterFinalize(INamedInterface* ) ;
    00081
    00082   virtual void beforeBeginRun(INamedInterface* );
    00083   virtual void afterBeginRun(INamedInterface* );
    00084
    00085   virtual void beforeEndRun(INamedInterface* );
    00086   virtual void afterEndRun(INamedInterface* );
    00087
    00088   virtual StatusCode initialize();
    00089   virtual StatusCode finalize();
    00090
    00091   virtual const std::string&  name() const ;
    00092
    00093   virtual bool isEnabled() const ;
    00094
    00098   IMessageSvc*  msgSvc() const;
    00099
    00101   int outputLevel() const { return m_outputLevel; }
    00102
    00104   void setOutputLevel( int level );
    00105
    00110   ISvcLocator* serviceLocator() const;
    00111
    00114   template <class T>
    00115   StatusCode service( const std::string& name, T*& svc, bool createIf = false ) const {
    00116     IService* theSvc;
    00117     StatusCode sc = serviceLocator()->getService( name, theSvc, createIf );
    00118     if ( sc.isSuccess() ) {
    00119       return theSvc->queryInterface(T::interfaceID(), (void**)&svc);
    00120     }
    00121     svc = 0;
    00122     return sc;
    00123   }
    00124
    00126   virtual StatusCode setProperty(const Property& p);
    00127
    00129   virtual StatusCode setProperty( const std::string& s );
    00130
    00132   virtual StatusCode setProperty( const std::string& n, const std::string& v);
    00133
    00135   virtual StatusCode getProperty(Property* p) const;
    00136
    00138   virtual const Property& getProperty( const std::string& name) const;
    00139
    00141   virtual StatusCode getProperty( const std::string& n, std::string& v ) const;
    00142
    00144   const std::vector<Property*>& getProperties( ) const;
    00145
    00146
    00187   template <class TYPE>
    00188   StatusCode setProperty
    00189   ( const std::string& name  ,
    00190     const TYPE&        value )
    00191   { return Gaudi::Utils::setProperty ( m_PropertyMgr , name , value ) ; }
    00192
    00198   StatusCode setProperties();
    00199
    00200   // ==========================================================================
    00228   template <class T>
    00229   Property* declareProperty( const std::string& name, T& property,
    00230                              const std::string& doc = "none") const {
    00231         return m_PropertyMgr->declareProperty(name, property, doc);
    00232   }
    00233
    00235   unsigned long addRef();
    00236   unsigned long release();
    00237   StatusCode queryInterface(const InterfaceID& riid, void**);
    00238
    00239  private:
    00240
    00241   long m_refCount;
    00242   std::string m_name;
    00243
    00244   IMessageSvc* m_MS;
    00245   ISvcLocator* m_pSvcLocator;
    00246   PropertyMgr* m_PropertyMgr;
    00247   int          m_outputLevel;
    00248   bool         m_isEnabled;
    00249   bool         m_isInitialized;
    00250   bool         m_isFinalized;
    00251
    00252   // Private Copy constructor: NO COPY ALLOWED
    00253   Auditor(const Auditor& a);
    00254
    00255   // Private asignment operator: NO ASSIGNMENT ALLOWED
    00256   Auditor& operator=(const Auditor& rhs);
    00257 };
    00258
    00259 #endif //GAUDIKERNEL_AUDITOR_H
    00260