| The Gaudi Framework v32r1 (f65d50dc)

Public Member Functions | List of all members
Gaudi::BootSvcLocator Class Reference

A dual-stage boostrap mechanism is used to ensure an orderly startup of the ApplicationMgr. More...

Inheritance diagram for Gaudi::BootSvcLocator:
[legend]
Collaboration diagram for Gaudi::BootSvcLocator:
[legend]

## Public Member Functions
StatusCode | getService (const Gaudi::Utils::TypeNameString &typeName, const InterfaceID &iid, IInterface *&pinterface) override
StatusCode | getService (const Gaudi::Utils::TypeNameString &typeName, IService *&svc, const bool createIf=true) override
const std::list< IService * > & | getServices () const override
bool | existsService (const std::string &name) const override
SmartIF< IService > & | service (const Gaudi::Utils::TypeNameString &typeName, const bool createIf=true) override
| Returns a smart pointer to a service. More...
Public Member Functions inherited from implements< ISvcLocator >
void * | i_cast (const InterfaceID &tid) const override
| Implementation of IInterface::i_cast. More...
StatusCode | queryInterface (const InterfaceID &ti, void **pp) override
| Implementation of IInterface::queryInterface. More...
std::vector< std::string > | getInterfaceNames () const override
| Implementation of IInterface::getInterfaceNames. More...
| implements ()=default
| Default constructor. More...
| implements (const implements &)
| Copy constructor (zero the reference count) More...
implements & | operator= (const implements &)
| Assignment operator (do not touch the reference count). More...
unsigned long | addRef () override
| Reference Interface instance. More...
unsigned long | release () override
| Release Interface instance. More...
unsigned long | refCount () const override
| Current reference count. More...

## Additional Inherited Members
Public Types inherited from implements< ISvcLocator >
using | base_class = implements< Interfaces... >
| Typedef to this class. More...
using | extend_interfaces_base = extend_interfaces< Interfaces... >
| Typedef to the base of this class. More...
using | iids = typename extend_interfaces_base::ext_iids
Public Types inherited from extend_interfaces< Interfaces... >
using | ext_iids = typename Gaudi::interface_list_cat< typename Interfaces::ext_iids... >::type
| take union of the ext_iids of all Interfaces... More...
Protected Attributes inherited from implements< ISvcLocator >
std::atomic_ulong | m_refCount
| Reference counter. More...

## Detailed Description

A dual-stage boostrap mechanism is used to ensure an orderly startup of the ApplicationMgr.

If this function is called before the singleton ApplicationMgr instance exists, a BootstrapAppMgr singleton instance is created. This responds to any subsequent requests for services by returning StatusCode::FAILURE, unless the ApplicationMgr singleton instance has been created in the interim. In this case, the BootstrapAppMgr forwards the request to the ApplicationMgr instance. The motivation for this is to handle static object instances where the constructor attempts to locate services and would otherwise instantiate the ApplicationMgr instance in an unorderly manner. This logic requires that the ApplicationMgr instance is created explicitly.

Definition at line 39 of file Bootstrap.cpp.

## Member Function Documentation

## ◆ existsService()

bool Gaudi::BootSvcLocator::existsService | ( | const std::string & | name | ) | const
| override

Definition at line 214 of file Bootstrap.cpp.

214 {
215 return s_appmgrInstance && s_svclocInstance->existsService( name );
216 }
gaudiComponentHelp.name
name
Definition: gaudiComponentHelp.py:41
ISvcLocator::existsService
virtual bool existsService(const std::string &name) const =0
Check the existence of a service given a service name.

## ◆ getService() [1/2]

StatusCode Gaudi::BootSvcLocator::getService | ( | const Gaudi::Utils::TypeNameString & | typeName,
|  | const InterfaceID & | iid,
|  | IInterface *& | pinterface
| ) |  |
| override

Definition at line 189 of file Bootstrap.cpp.

190 {
191 StatusCode sc = StatusCode::FAILURE;
192 if ( s_appmgrInstance ) {
193 sc = s_svclocInstance->getService( typeName, iid, pinterface );
194 } else {
195 pinterface = s_bootInterface.get();
196 }
197 return sc;
198 }
SmartIF::get
TYPE * get() const
Get interface pointer.
Definition: SmartIF.h:76
StatusCode
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:50
ISvcLocator::getService
virtual StatusCode getService(const Gaudi::Utils::TypeNameString &typeName, IService *&svc, const bool createIf=true)
Get a reference to the service given a service name.
Definition: ISvcLocator.h:35
StatusCode::FAILURE
constexpr static const auto FAILURE
Definition: StatusCode.h:86
GaudiDict::typeName
std::string typeName(const std::type_info &typ)
Definition: Dictionary.cpp:21

## ◆ getService() [2/2]

StatusCode Gaudi::BootSvcLocator::getService | ( | const Gaudi::Utils::TypeNameString & | typeName,
|  | IService *& | svc,
|  | const bool | createIf = `true`
| ) |  |
| override

Definition at line 199 of file Bootstrap.cpp.

200 {
201 StatusCode sc = StatusCode::FAILURE;
202 if ( s_appmgrInstance ) {
203 sc = s_svclocInstance->getService( typeName, svc, createIf );
204 } else {
205 svc = s_bootService.get();
206 }
207 return sc;
208 }
SmartIF::get
TYPE * get() const
Get interface pointer.
Definition: SmartIF.h:76
StatusCode
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:50
ISvcLocator::getService
virtual StatusCode getService(const Gaudi::Utils::TypeNameString &typeName, IService *&svc, const bool createIf=true)
Get a reference to the service given a service name.
Definition: ISvcLocator.h:35
StatusCode::FAILURE
constexpr static const auto FAILURE
Definition: StatusCode.h:86
GaudiDict::typeName
std::string typeName(const std::type_info &typ)
Definition: Dictionary.cpp:21

## ◆ getServices()

const std::list< IService * > & Gaudi::BootSvcLocator::getServices | ( |  | ) | const
| override

Definition at line 211 of file Bootstrap.cpp.

211 {
212 return s_appmgrInstance ? s_svclocInstance->getServices() : s_bootServices;
213 }
ISvcLocator::getServices
virtual const std::list< IService * > & getServices() const =0
Get a reference to a service and create it if it does not exists.

## ◆ service()

SmartIF< IService > & Gaudi::BootSvcLocator::service | ( | const Gaudi::Utils::TypeNameString & | typeName,
|  | const bool | createIf = `true`
| ) |  |
| override

Returns a smart pointer to a service.

Definition at line 218 of file Bootstrap.cpp.

218 {
219 return s_appmgrInstance ? s_svclocInstance->service( typeName, createIf ) : s_bootService;
220 }
ISvcLocator::service
StatusCode service(const Gaudi::Utils::TypeNameString &name, T *&svc, bool createIf=true)
Templated method to access a service by name.
Definition: ISvcLocator.h:76
GaudiDict::typeName
std::string typeName(const std::type_info &typ)
Definition: Dictionary.cpp:21

The documentation for this class was generated from the following file:

- GaudiKernel/src/Lib/Bootstrap.cpp