| The Gaudi Framework v27r1

- Main Page
- Related Pages
- Modules
- Namespaces
- Classes
- Files

- Class List
- Class Index
- Class Hierarchy
- Class Members

Public Member Functions | Protected Member Functions | Private Member Functions | Private Attributes | List of all members
ServiceHandle< T > Class Template Reference

Handle to be used in lieu of naked pointers to services. More...

`#include <GaudiKernel/ServiceHandle.h>`

Inheritance diagram for ServiceHandle< T >:
[legend]
Collaboration diagram for ServiceHandle< T >:
[legend]

## Public Member Functions
| ServiceHandle (const std::string &serviceName, const std::string &theParentName)
| Create a handle ('smart pointer') to a service. More...
StatusCode | initialize (const std::string &serviceName, const std::string &theParentName)
StatusCode | retrieve () const
| Retrieve the Service. More...
Public Member Functions inherited from GaudiHandle< T >
| GaudiHandle (const GaudiHandle &other)
| Copy constructor needed for correct ref-counting. More...
GaudiHandle & | operator= (const GaudiHandle &other)
| Assignment operator for correct ref-counting. More...
| ~GaudiHandle ()
StatusCode | retrieve () const
| Retrieve the component. More...
StatusCode | release () const
| Release the component. More...
bool | isValid () const
| Check if the handle is valid (try to retrive the object is not done yet). More...
| operator bool () const
| For testing if handle has component. More...
T * | get () const
| Return the wrapped pointer, not calling retrieve() if null. More...
bool | isSet () const
| True if the wrapped pointer is not null. More...
T & | operator* ()
T * | operator-> ()
T & | operator* () const
T * | operator-> () const
std::string | getDefaultType ()
| Helper function to get default type string from the class type. More...
std::string | getDefaultName ()
Public Member Functions inherited from GaudiHandleBase
std::string | typeAndName () const
| The full type and name: "type/name". More...
std::string | type () const
| The concrete component class name: the part before the '/'. More...
std::string | name () const
| The instance name: the part after the '/'. More...
bool | empty () const
| Check if the handle has been set to empty string (i.e. More...
void | setTypeAndName (std::string myTypeAndName)
| The component "type/name" string. More...
void | setName (const std::string &myName)
| Set the instance name (part after the '/') without changing the class type. More...
std::string | pythonPropertyClassName () const
| Name of the componentType with "Handle" appended. More...
std::string | messageName () const
| name used for printing messages More...
virtual std::string | pythonRepr () const
| Python representation of handle, i.e. More...
Public Member Functions inherited from GaudiHandleInfo
virtual | ~GaudiHandleInfo ()=default
| virtual destructor so that derived class destructor is called. More...
const std::string & | componentType () const
const std::string & | propertyName () const
| name as used in declareProperty(name,gaudiHandle) More...
void | setPropertyName (std::string propName)
| set name as used in declareProperty(name,gaudiHandle). More...
const std::string & | parentName () const
| The name of the parent. More...

## Protected Member Functions
StatusCode | retrieve (T *&service) const
| Release the Service. More...
Protected Member Functions inherited from GaudiHandle< T >
| GaudiHandle (std::string myTypeAndName, std::string myComponentType, std::string myParentName)
virtual StatusCode | release (T *comp) const
| Release the component. More...
Protected Member Functions inherited from GaudiHandleBase
| GaudiHandleBase (std::string myTypeAndName, std::string myComponentType, std::string myParentName)
| Create a handle ('smart pointer') to a gaudi component. More...
Protected Member Functions inherited from GaudiHandleInfo
| GaudiHandleInfo (std::string myComponentType, std::string myParentName)
| Some basic information and helper functions shared between various handles/arrays. More...
void | setComponentType (const std::string &componentType)
| The component type. More...
void | setParentName (const std::string &parent)
| The name of the parent. More...

## Private Member Functions
SmartIF< ISvcLocator > & | serviceLocator () const
| Do the real release of the Service. More...
SmartIF< IMessageSvc > & | messageSvc () const

## Private Attributes
SmartIF< ISvcLocator > | m_pSvcLocator
SmartIF< IMessageSvc > | m_pMessageSvc

## Detailed Description

### template<class T>
class ServiceHandle< T >

Handle to be used in lieu of naked pointers to services.

This allows better control through the framework of service loading and usage.

Author
  Marti.nosp@m.n.Wo.nosp@m.udstr.nosp@m.a@ce.nosp@m.rn.ch

Definition at line 23 of file PropertyMgr.h.

## Constructor & Destructor Documentation

template<class T>

ServiceHandle< T >::ServiceHandle | ( | const std::string & | serviceName,
|  | const std::string & | theParentName
| ) |  |
| inline

Create a handle ('smart pointer') to a service.

The arguments are passed on to ServiceSvc, and have the same meaning:

Parameters

  serviceName | name of the service
  parentName | name of the parent Algorithm, AlgTool or Service. It is used for log printout at retrieve(), and for retrieving a thread-dependent service (if applicable)

Definition at line 42 of file ServiceHandle.h.

43 : GaudiHandle<T>(serviceName, "Service", theParentName)
44 {}
GaudiHandle
Handle to be used in lieu of naked pointers to gaudis.
Definition: GaudiHandle.h:171

## Member Function Documentation

template<class T>

StatusCode ServiceHandle< T >::initialize | ( | const std::string & | serviceName,
|  | const std::string & | theParentName
| ) |  |
| inline

Definition at line 46 of file ServiceHandle.h.

46 {
47
48 GaudiHandleBase::setTypeAndName(serviceName);
49 GaudiHandleBase::setParentName(theParentName);
50
51 return StatusCode::SUCCESS;
52 }
GaudiHandleBase::setTypeAndName
void setTypeAndName(std::string myTypeAndName)
The component "type/name" string.
Definition: GaudiHandle.cpp:9
GaudiHandleInfo::setParentName
void setParentName(const std::string &parent)
The name of the parent.
Definition: GaudiHandle.h:72
StatusCode::SUCCESS
Definition: StatusCode.h:30
template<class T>

SmartIF<IMessageSvc>& ServiceHandle< T >::messageSvc | ( |  | ) | const
| inline private

Definition at line 92 of file ServiceHandle.h.

92 { // not really const, because it may change m_pMessageSvc
93 if ( !m_pMessageSvc ) {
94 m_pMessageSvc = serviceLocator(); // default message service
95 if( !m_pMessageSvc ) {
96 throw GaudiException("Service [MessageSvc] not found",
97 this->parentName(), StatusCode::FAILURE);
98 }
99 }
100 return m_pMessageSvc;
101 }
GaudiException
Define general base for Gaudi exception.
Definition: GaudiException.h:23
ServiceHandle::m_pMessageSvc
SmartIF< IMessageSvc > m_pMessageSvc
Definition: ServiceHandle.h:106
GaudiHandleInfo::parentName
const std::string & parentName() const
The name of the parent.
Definition: GaudiHandle.h:49
ServiceHandle::serviceLocator
SmartIF< ISvcLocator > & serviceLocator() const
Do the real release of the Service.
Definition: ServiceHandle.h:82
StatusCode::FAILURE
Definition: StatusCode.h:29
template<class T>

StatusCode ServiceHandle< T >::retrieve | ( |  | ) | const
| inline

Retrieve the Service.

Release existing Service if needed. Function must be repeated here to avoid hiding the function retrieve( T*& )

Definition at line 56 of file ServiceHandle.h.

56 { // not really const, because it updates m_pObject
57 return GaudiHandle<T>::retrieve();
58 }
GaudiHandle::retrieve
StatusCode retrieve() const
Retrieve the component.
Definition: GaudiHandle.h:205
template<class T>

StatusCode ServiceHandle< T >::retrieve | ( | T *& | service | ) | const
| inline protected virtual

Release the Service.

Function must be repeated here to avoid hiding the function release( T*& ) Do the real retrieval of the Service.

Implements GaudiHandle< T >.

Definition at line 68 of file ServiceHandle.h.

68 {
69 const ServiceLocatorHelper helper(*serviceLocator(), GaudiHandleBase::messageName(), this->parentName());
70 return helper.getService(GaudiHandleBase::typeAndName(), true, T::interfaceID(), (void**)&service);
71 }
ServiceLocatorHelper
an helper to share the implementation of service() among the various kernel base classes ...
Definition: ServiceLocatorHelper.h:17
GaudiHandleBase::messageName
std::string messageName() const
name used for printing messages
Definition: GaudiHandle.cpp:48
GaudiHandleInfo::parentName
const std::string & parentName() const
The name of the parent.
Definition: GaudiHandle.h:49
ServiceHandle::serviceLocator
SmartIF< ISvcLocator > & serviceLocator() const
Do the real release of the Service.
Definition: ServiceHandle.h:82
GaudiHandleBase::typeAndName
std::string typeAndName() const
The full type and name: "type/name".
Definition: GaudiHandle.h:120
template<class T>

SmartIF<ISvcLocator>& ServiceHandle< T >::serviceLocator | ( |  | ) | const
| inline private

Do the real release of the Service.

Definition at line 82 of file ServiceHandle.h.

82 { // not really const, because it may change m_pSvcLocator
83 if ( !m_pSvcLocator ) {
84 m_pSvcLocator = Gaudi::svcLocator();
85 if ( !m_pSvcLocator ) {
86 throw GaudiException("SvcLocator not found", "Core component not found", StatusCode::FAILURE);
87 }
88 }
89 return m_pSvcLocator;
90 }
ServiceHandle::m_pSvcLocator
SmartIF< ISvcLocator > m_pSvcLocator
Definition: ServiceHandle.h:105
GaudiException
Define general base for Gaudi exception.
Definition: GaudiException.h:23
Gaudi::svcLocator
GAUDI_API ISvcLocator * svcLocator()
StatusCode::FAILURE
Definition: StatusCode.h:29

## Member Data Documentation

template<class T>

SmartIF<IMessageSvc> ServiceHandle< T >::m_pMessageSvc
| mutable private

Definition at line 106 of file ServiceHandle.h.

template<class T>

SmartIF<ISvcLocator> ServiceHandle< T >::m_pSvcLocator
| mutable private

Definition at line 105 of file ServiceHandle.h.

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

- GaudiKernel/GaudiKernel/PropertyMgr.h
- GaudiKernel/GaudiKernel/ServiceHandle.h