![]() |
|
|
Generated: 24 Nov 2008 |
#include <AlgContextSvc.h>


Definition at line 41 of file AlgContextSvc.h.
Public Member Functions | |
| virtual StatusCode | setCurrentAlg (IAlgorithm *a) |
| set the currently executing algorithm ("push_back") | |
| virtual StatusCode | unSetCurrentAlg (IAlgorithm *a) |
| remove the algorithm ("pop_back") | |
| virtual IAlgorithm * | currentAlg () const |
| accessor to current algorithm: | |
| virtual const IAlgContextSvc::Algorithms & | algorithms () const |
| get the stack of executed algorithms | |
| virtual StatusCode | queryInterface (const InterfaceID &riid, void **ppvi) |
| Gaudi_cast,. | |
| virtual void | handle (const Incident &) |
| handle incident | |
| virtual StatusCode | initialize () |
| standard initialization of the service | |
| virtual StatusCode | finalize () |
| standard finalization of the service | |
| AlgContextSvc (const std::string &name, ISvcLocator *svc) | |
| Standard Constructor. | |
| virtual | ~AlgContextSvc () |
| Standard Destructor. | |
Private Member Functions | |
| AlgContextSvc () | |
| no default constructor | |
| AlgContextSvc (const AlgContextSvc &) | |
| no copy constructor | |
| AlgContextSvc & | operator= (const AlgContextSvc &) |
| no assignement | |
Private Attributes | |
| IAlgContextSvc::Algorithms | m_algorithms |
| the stack of currect algorithms | |
| IIncidentSvc * | m_inc |
| pointer to Incident Service | |
| bool | m_check |
Friends | |
| class | SvcFactory< AlgContextSvc > |
| friend factory for instantiations | |
| AlgContextSvc::AlgContextSvc | ( | const std::string & | name, | |
| ISvcLocator * | svc | |||
| ) |
Standard Constructor.
Instantiation of a static factory class used by clients to create instances of this service.
Definition at line 44 of file AlgContextSvc.cpp.
00046 : Service ( name , svc ) 00047 , m_algorithms ( 0 ) 00048 , m_inc ( 0 ) 00049 , m_check ( true ) 00050 { 00051 declareProperty ( "Check" , m_check , "Flag to perform more checks" ); 00052 }
| AlgContextSvc::~AlgContextSvc | ( | ) | [virtual] |
| AlgContextSvc::AlgContextSvc | ( | ) | [private] |
no default constructor
| AlgContextSvc::AlgContextSvc | ( | const AlgContextSvc & | ) | [private] |
no copy constructor
| StatusCode AlgContextSvc::setCurrentAlg | ( | IAlgorithm * | a | ) | [virtual] |
set the currently executing algorithm ("push_back")
Implements IAlgContextSvc.
Definition at line 142 of file AlgContextSvc.cpp.
00143 { 00144 if ( 0 == a ) 00145 { 00146 MsgStream log ( msgSvc() , name() ) ; 00147 log << MSG::WARNING << "IAlgorithm* points to NULL" << endreq ; 00148 // 00149 return StatusCode::RECOVERABLE ; // RETURN 00150 } 00151 m_algorithms.push_back ( a ) ; 00152 // 00153 return StatusCode::SUCCESS ; // RETURN 00154 }
| StatusCode AlgContextSvc::unSetCurrentAlg | ( | IAlgorithm * | a | ) | [virtual] |
remove the algorithm ("pop_back")
Implements IAlgContextSvc.
Definition at line 158 of file AlgContextSvc.cpp.
00159 { 00160 if ( 0 == a ) 00161 { 00162 MsgStream log ( msgSvc() , name() ) ; 00163 log << MSG::WARNING << "IAlgorithm* points to NULL" << endreq ; 00164 // 00165 return StatusCode::RECOVERABLE ; // RETURN 00166 } 00167 if ( m_algorithms.empty() || m_algorithms.back() != a ) 00168 { 00169 MsgStream log ( msgSvc() , name() ) ; 00170 log << MSG::ERROR << "Algorithm stack is invalid" << endreq ; 00171 // 00172 return StatusCode::FAILURE ; 00173 } 00174 // 00175 m_algorithms.pop_back() ; // POP_BACK 00176 // 00177 return StatusCode::SUCCESS ; 00178 }
| IAlgorithm * AlgContextSvc::currentAlg | ( | ) | const [virtual] |
accessor to current algorithm:
Implements IAlgContextSvc.
Definition at line 182 of file AlgContextSvc.cpp.
00183 { return m_algorithms.empty() ? 0 : m_algorithms.back() ; }
| virtual const IAlgContextSvc::Algorithms& AlgContextSvc::algorithms | ( | ) | const [inline, virtual] |
get the stack of executed algorithms
Implements IAlgContextSvc.
Definition at line 57 of file AlgContextSvc.h.
00058 { return m_algorithms ; }
| StatusCode AlgContextSvc::queryInterface | ( | const InterfaceID & | riid, | |
| void ** | ppvi | |||
| ) | [virtual] |
Gaudi_cast,.
< increment the reference count!
Reimplemented from Service.
Definition at line 61 of file AlgContextSvc.cpp.
00063 { 00064 if ( 0 == ppvi ) { return StatusCode::FAILURE ; } // RETURN 00065 else if ( IAlgContextSvc ::interfaceID() == riid ) 00066 { *ppvi = static_cast<IAlgContextSvc*> ( this ) ; } 00067 else if ( IIncidentListener ::interfaceID() == riid ) 00068 { *ppvi = static_cast<IIncidentListener*> ( this ) ; } 00069 else { return Service::queryInterface ( riid , ppvi ) ; } // RETURN 00070 // increment the reference count! 00071 addRef(); 00072 return StatusCode::SUCCESS ; 00073 }
| void AlgContextSvc::handle | ( | const Incident & | ) | [virtual] |
handle incident
Implements IIncidentListener.
Definition at line 187 of file AlgContextSvc.cpp.
00188 { 00189 if ( !m_algorithms.empty() ) 00190 { 00191 MsgStream log ( msgSvc() , name() ) ; 00192 log << MSG::ERROR 00193 << "Non-empty stack of algorihtms #" 00194 << m_algorithms.size() << endreq ; 00195 } 00196 }
| StatusCode AlgContextSvc::initialize | ( | ) | [virtual] |
standard initialization of the service
Reimplemented from Service.
Definition at line 77 of file AlgContextSvc.cpp.
00078 { 00079 // intialize the base class 00080 StatusCode sc = Service::initialize () ; 00081 if ( sc.isFailure () ) { return sc ; } 00082 // Incindent Service 00083 if ( 0 != m_inc ) 00084 { 00085 m_inc -> removeListener ( this ) ; 00086 m_inc -> release() ; 00087 m_inc = 0 ; 00088 } 00089 // perform more checks? 00090 if ( m_check ) 00091 { 00092 sc = Service::service ( "IncidentSvc" , m_inc , true ) ; 00093 if ( sc.isFailure() ) 00094 { 00095 MsgStream log ( msgSvc() , name() ) ; 00096 log << MSG::ERROR << "Could not locate 'IncidentSvc'" << sc << endreq ; 00097 return sc ; // RETURN 00098 } 00099 if ( 0 == m_inc ) 00100 { 00101 MsgStream log ( msgSvc() , name() ) ; 00102 log << MSG::ERROR << "Invalid pointer to IIncindentSvc" << endreq ; 00103 return StatusCode::FAILURE ; // RETURN 00104 } 00105 m_inc -> addListener ( this , IncidentType::BeginEvent ) ; 00106 m_inc -> addListener ( this , IncidentType::EndEvent ) ; 00107 } 00108 if ( !m_algorithms.empty() ) 00109 { 00110 MsgStream log ( msgSvc() , name() ) ; 00111 log << MSG::WARNING 00112 << "Non-empty stack of algorihtms #" 00113 << m_algorithms.size() << endreq ; 00114 } 00115 return StatusCode::SUCCESS ; 00116 }
| StatusCode AlgContextSvc::finalize | ( | void | ) | [virtual] |
standard finalization of the service
Reimplemented from Service.
Definition at line 120 of file AlgContextSvc.cpp.
00121 { 00122 if ( !m_algorithms.empty() ) 00123 { 00124 MsgStream log ( msgSvc() , name() ) ; 00125 log << MSG::WARNING 00126 << "Non-empty stack of algorihtms #" 00127 << m_algorithms.size() << endreq ; 00128 } 00129 // Incindent Service 00130 if ( 0 != m_inc ) 00131 { 00132 m_inc -> removeListener ( this ) ; 00133 m_inc -> release() ; 00134 m_inc = 0 ; 00135 } 00136 // finalize the base class 00137 return Service::finalize () ; 00138 }
| AlgContextSvc& AlgContextSvc::operator= | ( | const AlgContextSvc & | ) | [private] |
no assignement
friend class SvcFactory< AlgContextSvc > [friend] |
IIncidentSvc* AlgContextSvc::m_inc [private] |
bool AlgContextSvc::m_check [private] |
Definition at line 92 of file AlgContextSvc.h.