1 #ifndef GAUDIKERNEL_SERVICE_H
2 #define GAUDIKERNEL_SERVICE_H
6 #include "GaudiKernel/IService.h"
7 #include "GaudiKernel/ISvcLocator.h"
8 #include "GaudiKernel/ServiceLocatorHelper.h"
9 #include "GaudiKernel/IProperty.h"
10 #include "GaudiKernel/IStateful.h"
11 #include "GaudiKernel/PropertyMgr.h"
12 #include "GaudiKernel/Property.h"
13 #include "GaudiKernel/IAuditorSvc.h"
14 #include "GaudiKernel/CommonMessaging.h"
15 #include "GaudiKernel/SmartIF.h"
16 #include <Gaudi/PluginService.h>
43 const std::string&
name()
const override;
77 const std::vector<Property*>& getProperties( )
const override;
120 template <
class TYPE>
122 (
const std::string&
name ,
139 StatusCode service(
const std::string& name,
const T*& psvc,
bool createIf =
true )
const {
146 const_cast<T*
>(psvc)->addRef();
155 StatusCode service(
const std::string& name, T*& psvc,
bool createIf =
true )
const {
156 auto ptr = service<T>(
name,createIf);
157 psvc = ( ptr ? ptr.get() : nullptr );
165 template <
typename IFace = IService>
168 service<IFace>(
name, !createIf,
177 return service(svcType +
"/" + svcName, psvc);
210 (
const std::string& name ,
212 const std::string& doc =
"none" )
const
214 return m_propertyMgr -> declareProperty ( name , property , doc ) ;
226 (
const std::string& name ,
228 const std::string& rname =
"" )
const
230 return m_propertyMgr -> declareRemoteProperty ( name , rsvc , rname ) ;
249 int outputLevel()
const {
return m_outputLevel.
value(); }
265 bool m_auditorInitialize;
268 bool m_auditorFinalize;
269 bool m_auditorReinitialize;
270 bool m_auditorRestart;
273 void initOutputLevel(
Property& prop);
276 #ifndef GAUDI_NEW_PLUGIN_SERVICE
281 template <
typename S,
typename... Args>
282 static typename S::ReturnType
create(Args&&...
args) {
283 return new T(std::forward<Args>(
args)...);
289 #define DECLARE_SERVICE_FACTORY(x) \
290 DECLARE_FACTORY_WITH_CREATOR(x, SvcFactory< x >, Service::Factory)
291 #define DECLARE_NAMED_SERVICE_FACTORY(x, n) \
292 DECLARE_FACTORY_WITH_CREATOR_AND_ID(x, SvcFactory< x >, #n, Service::Factory)
293 #define DECLARE_NAMESPACE_SERVICE_FACTORY(n, x) \
294 DECLARE_SERVICE_FACTORY(n::x)
299 #define DECLARE_SERVICE_FACTORY(x) DECLARE_COMPONENT(x)
300 #define DECLARE_NAMED_SERVICE_FACTORY(x, n) DECLARE_COMPONENT_WITH_ID(x, #n)
301 #define DECLARE_NAMESPACE_SERVICE_FACTORY(n, x) DECLARE_COMPONENT(n::x)
305 #endif // GAUDIKERNEL_SERVICE_H
The ServiceManager class is in charge of the creation of concrete instances of Services.
StatusCode setProperty(IProperty *component, const std::string &name, const TYPE &value, const std::string &doc)
simple function to set the property of the given object from the value
an helper to share the implementation of service() among the various kernel base classes ...
The ISvcLocator is the interface implemented by the Service Factory in the Application Manager to loc...
StatusCode finalize() override
Finalize (from INITIALIZED to CONFIGURED).
The ISvcManager is the interface implemented by the Service Factory in the Application Manager to sup...
GAUDI_API bool hasProperty(const IProperty *p, const std::string &name)
simple function which check the existence of the property with the given name.
static S::ReturnType create(Args &&...args)
StatusCode restart() override
Initialization (from RUNNING to RUNNING, via INITIALIZED).
State
Allowed states for classes implementing the state machine (ApplicationMgr, Algorithm, Service, AlgTool).
const char *PyHelper() getProperty(IInterface *p, char *name)
SmartIF< ISvcLocator > & serviceLocator() const
Function needed by CommonMessaging.
TYPE * get() const
Get interface pointer.
StatusCode stop() override
Stop (from RUNNING to INITIALIZED).
General service interface definition.
This class is used for returning status codes from appropriate routines.
The IMessage is the interface implemented by the message service.
bool PyHelper() setProperty(IInterface *p, char *name, char *value)
const TYPE & value() const
explicit conversion
Property base class allowing Property* collections to be "homogeneous".
Class wrapping the signature for a factory with any number of arguments.
StatusCode reinitialize() override
Initialization (from INITIALIZED or RUNNING to INITIALIZED, via CONFIGURED).
SmartIF< IService > service(const std::string &name, const bool quiet=false, const bool createIf=true) const
SmartIF< IService > & service(const Gaudi::Utils::TypeNameString &typeName, const bool createIf=true) override
Returns a smart pointer to a service.
The IProperty is the basic interface for all components which have properties that can be set or get...
Base class for all services.