00001 // $Header: /local/reps/Gaudi/GaudiKernel/GaudiKernel/IService.h,v 1.8 2008/06/02 14:20:38 marcocle Exp $ 00002 #ifndef GAUDIKERNEL_ISERVICE_H 00003 #define GAUDIKERNEL_ISERVICE_H 00004 00005 // Include files 00006 #include "GaudiKernel/INamedInterface.h" 00007 #include "GaudiKernel/StateMachine.h" 00008 #include <string> 00009 00010 // Declaration of the interface ID. 00011 static const InterfaceID IID_IService(2, 2, 1); 00012 00019 class ISvcManager; 00020 class ServiceManager; 00021 00022 class IService : virtual public INamedInterface { 00023 friend class ServiceManager; 00024 public: 00026 static const InterfaceID& interfaceID() { return IID_IService; } 00027 00029 virtual const InterfaceID& type() const = 0; 00031 virtual StatusCode sysInitialize() = 0; 00033 virtual StatusCode sysStart() = 0; 00035 virtual StatusCode sysStop() = 0; 00037 virtual StatusCode sysFinalize() = 0; 00039 virtual StatusCode sysReinitialize() = 0; 00041 virtual StatusCode sysRestart() = 0; 00042 00043 // --- Methods from IStateful --- 00046 virtual StatusCode configure() = 0; 00047 00050 virtual StatusCode initialize() = 0; 00051 00054 virtual StatusCode start() = 0; 00055 00058 virtual StatusCode stop() = 0; 00059 00062 virtual StatusCode finalize() = 0; 00063 00066 virtual StatusCode terminate() = 0; 00067 00068 00071 virtual StatusCode reinitialize() = 0; 00072 00075 virtual StatusCode restart() = 0; 00076 00079 virtual Gaudi::StateMachine::State FSMState() const = 0; 00080 00084 virtual Gaudi::StateMachine::State targetFSMState() const = 0; 00085 00086 protected: 00087 virtual void setServiceManager(ISvcManager*) = 0; 00088 }; 00089 00090 #endif // GAUDIKERNEL_ISERVICE_H