|
Gaudi Framework, version v23r2 |
| Home | Generated: Thu Jun 28 2012 |
Handle to be used in lieu of naked pointers to services. More...
#include <GaudiKernel/ServiceHandle.h>


Public Member Functions | |
| ServiceHandle (const std::string &serviceName, const std::string &theParentName) | |
| Create a handle ('smart pointer') to a service. | |
| StatusCode | retrieve () const |
| Retrieve the Service. | |
Protected Member Functions | |
| StatusCode | retrieve (T *&service) const |
| Release the Service. | |
Private Member Functions | |
| SmartIF< ISvcLocator > & | serviceLocator () const |
| Do the real release of the Service. | |
| SmartIF< IMessageSvc > & | messageSvc () const |
Private Attributes | |
| SmartIF< ISvcLocator > | m_pSvcLocator |
| SmartIF< IMessageSvc > | m_pMessageSvc |
Handle to be used in lieu of naked pointers to services.
This allows better control through the framework of service loading and usage.
Definition at line 30 of file ServiceHandle.h.
| 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:
| 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.
: GaudiHandle<T>(serviceName, "Service", theParentName) {}
| SmartIF<IMessageSvc>& ServiceHandle< T >::messageSvc | ( | ) | const [inline, private] |
Definition at line 84 of file ServiceHandle.h.
{ // not really const, because it may change m_pMessageSvc
if ( !m_pMessageSvc.isValid() ) {
m_pMessageSvc = serviceLocator(); // default message service
if( !m_pMessageSvc.isValid() ) {
throw GaudiException("Service [MessageSvc] not found",
this->parentName(), StatusCode::FAILURE);
}
}
return m_pMessageSvc;
}
| 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 60 of file ServiceHandle.h.
{
const ServiceLocatorHelper helper(*serviceLocator(), GaudiHandleBase::messageName(), this->parentName());
return helper.getService(GaudiHandleBase::typeAndName(), true, T::interfaceID(), (void**)&service);
}
| 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*& )
Reimplemented from GaudiHandle< T >.
Definition at line 48 of file ServiceHandle.h.
{ // not really const, because it updates m_pObject
return GaudiHandle<T>::retrieve();
}
| SmartIF<ISvcLocator>& ServiceHandle< T >::serviceLocator | ( | ) | const [inline, private] |
Do the real release of the Service.
Definition at line 74 of file ServiceHandle.h.
{ // not really const, because it may change m_pSvcLocator
if ( !m_pSvcLocator.isValid() ) {
m_pSvcLocator = Gaudi::svcLocator();
if ( !m_pSvcLocator.isValid() ) {
throw GaudiException("SvcLocator not found", "Core component not found", StatusCode::FAILURE);
}
}
return m_pSvcLocator;
}
SmartIF<IMessageSvc> ServiceHandle< T >::m_pMessageSvc [mutable, private] |
Definition at line 98 of file ServiceHandle.h.
SmartIF<ISvcLocator> ServiceHandle< T >::m_pSvcLocator [mutable, private] |
Definition at line 97 of file ServiceHandle.h.