|
Gaudi Framework, version v21r4 |
| Home | Generated: 7 Sep 2009 |
#include <MinimalEventLoopMgr.h>


This object handles the minimal requirements needed by the application manager. It also is capable of handling a bunch of algorithms and output streams. However, they list may as well be empty.
Definition at line 26 of file MinimalEventLoopMgr.h.
Public Types | |
| typedef std::list< SmartIF < IAlgorithm > > | ListAlg |
| Creator friend class. | |
| typedef std::list< IAlgorithm * > | ListAlgPtrs |
| typedef std::list< std::string > | ListName |
| typedef std::vector< std::string > | VectorName |
Public Member Functions | |
| MinimalEventLoopMgr (const std::string &nam, ISvcLocator *svcLoc) | |
| Standard Constructor. | |
| virtual | ~MinimalEventLoopMgr () |
| Standard Destructor. | |
| virtual StatusCode | initialize () |
| implementation of IService::initialize | |
| virtual StatusCode | start () |
| implementation of IService::start | |
| virtual StatusCode | stop () |
| implementation of IService::stop | |
| virtual StatusCode | finalize () |
| implementation of IService::finalize | |
| virtual StatusCode | reinitialize () |
| implementation of IService::reinitialize | |
| virtual StatusCode | restart () |
| implementation of IService::restart | |
| virtual StatusCode | nextEvent (int maxevt) |
| implementation of IEventProcessor::nextEvent | |
| virtual StatusCode | executeEvent (void *par) |
| implementation of IEventProcessor::executeEvent(void* par) | |
| virtual StatusCode | executeRun (int maxevt) |
| implementation of IEventProcessor::executeRun( ) | |
| virtual StatusCode | stopRun () |
| implementation of IEventProcessor::stopRun( ) | |
| void | topAlgHandler (Property &p) |
| Top algorithm List handler. | |
| StatusCode | decodeTopAlgs () |
| decodeTopAlgNameList & topAlgNameListHandler | |
| void | outStreamHandler (Property &p) |
| Output stream List handler. | |
| StatusCode | decodeOutStreams () |
| decodeOutStreamNameList & outStreamNameListHandler | |
Protected Types | |
| enum | State { OFFLINE, CONFIGURED, FINALIZED, INITIALIZED } |
Protected Attributes | |
| SmartIF< IAppMgrUI > | m_appMgrUI |
| Reference to the IAppMgrUI interface of the application manager. | |
| SmartIF< IIncidentSvc > | m_incidentSvc |
| Reference to the incident service. | |
| ListAlg | m_topAlgList |
| List of top level algorithms. | |
| ListAlg | m_outStreamList |
| List of output streams. | |
| std::string | m_outStreamType |
| Out Stream type. | |
| StringArrayProperty | m_topAlgNames |
| List of top level algorithms names. | |
| StringArrayProperty | m_outStreamNames |
| List of output stream names. | |
| State | m_state |
| State of the object. | |
| bool | m_scheduledStop |
| Scheduled stop of event processing. | |
| SmartIF< IIncidentListener > | m_abortEventListener |
| Instance of the incident listener waiting for AbortEvent. | |
| bool | m_abortEvent |
| Flag signalling that the event being processedhas to be aborted (skip all following top algs). | |
| std::string | m_abortEventSource |
| Source of the AbortEvent incident. | |
Private Member Functions | |
| MinimalEventLoopMgr (const MinimalEventLoopMgr &) | |
| Fake copy constructor (never implemented). | |
| MinimalEventLoopMgr & | operator= (const MinimalEventLoopMgr &) |
| Fake assignment operator (never implemented). | |
| typedef std::list<SmartIF<IAlgorithm> > MinimalEventLoopMgr::ListAlg |
Definition at line 31 of file MinimalEventLoopMgr.h.
Definition at line 32 of file MinimalEventLoopMgr.h.
Definition at line 33 of file MinimalEventLoopMgr.h.
enum MinimalEventLoopMgr::State [protected] |
Definition at line 37 of file MinimalEventLoopMgr.h.
00037 { OFFLINE, CONFIGURED, FINALIZED, INITIALIZED };
| MinimalEventLoopMgr::MinimalEventLoopMgr | ( | const std::string & | nam, | |
| ISvcLocator * | svcLoc | |||
| ) |
Standard Constructor.
Definition at line 44 of file MinimalEventLoopMgr.cpp.
00045 : base_class(nam, svcLoc), m_appMgrUI(svcLoc) 00046 { 00047 declareProperty("TopAlg", m_topAlgNames ); 00048 declareProperty("OutStream", m_outStreamNames ); 00049 declareProperty("OutStreamType", m_outStreamType = "OutputStream"); 00050 m_topAlgNames.declareUpdateHandler ( &MinimalEventLoopMgr::topAlgHandler, this ); 00051 m_outStreamNames.declareUpdateHandler( &MinimalEventLoopMgr::outStreamHandler, this ); 00052 m_state = OFFLINE; 00053 m_scheduledStop = false; 00054 m_abortEvent = false; 00055 }
| MinimalEventLoopMgr::~MinimalEventLoopMgr | ( | ) | [virtual] |
| MinimalEventLoopMgr::MinimalEventLoopMgr | ( | const MinimalEventLoopMgr & | ) | [private] |
Fake copy constructor (never implemented).
| StatusCode MinimalEventLoopMgr::initialize | ( | ) | [virtual] |
implementation of IService::initialize
Reimplemented from Service.
Reimplemented in EventLoopMgr.
Definition at line 67 of file MinimalEventLoopMgr.cpp.
00067 { 00068 00069 MsgStream log(msgSvc(), name()); 00070 00071 if ( !m_appMgrUI.isValid() ) { 00072 return StatusCode::FAILURE; 00073 } 00074 00075 StatusCode sc = Service::initialize(); 00076 if ( !sc.isSuccess() ) { 00077 log << MSG::ERROR << "Failed to initialize Service Base class." << endmsg; 00078 return StatusCode::FAILURE; 00079 } 00080 00081 SmartIF<IProperty> prpMgr(serviceLocator()); 00082 if ( ! prpMgr.isValid() ) { 00083 log << MSG::ERROR << "Error retrieving AppMgr interface IProperty." << endmsg; 00084 return StatusCode::FAILURE; 00085 } 00086 else { 00087 if ( m_topAlgNames.value().size() == 0 ) { 00088 setProperty(prpMgr->getProperty("TopAlg")).ignore(); 00089 } 00090 if ( m_outStreamNames.value().size() == 0 ) { 00091 setProperty(prpMgr->getProperty("OutStream")).ignore(); 00092 } 00093 } 00094 00095 // Get the references to the services that are needed by the ApplicationMgr itself 00096 m_incidentSvc = serviceLocator()->service("IncidentSvc"); 00097 if( !m_incidentSvc.isValid() ) { 00098 log << MSG::FATAL << "Error retrieving IncidentSvc." << endmsg; 00099 return StatusCode::FAILURE; 00100 } 00101 00102 m_abortEventListener = new AbortEventListener(m_abortEvent,m_abortEventSource); 00103 m_incidentSvc->addListener(m_abortEventListener,IncidentType::AbortEvent); 00104 00105 // The state is changed at this moment to allow decodeXXXX() to do something 00106 m_state = INITIALIZED; 00107 00108 //-------------------------------------------------------------------------------------------- 00109 // Create output streams. Do not initialize them yet. 00110 // The state is updated temporarily in order to enable the handler, which 00111 // is also triggered by a change to the "OutputStream" Property. 00112 //-------------------------------------------------------------------------------------------- 00113 sc = decodeOutStreams(); 00114 if ( !sc.isSuccess() ) { 00115 log << MSG::ERROR << "Failed to initialize Output streams." << endmsg; 00116 m_state = CONFIGURED; 00117 return sc; 00118 } 00119 //-------------------------------------------------------------------------------------------- 00120 // Create all needed Top Algorithms. Do not initialize them yet. 00121 // The state is updated temporarily in order to enable the handler, which 00122 // is also triggered by a change to the "TopAlg" Property. 00123 //-------------------------------------------------------------------------------------------- 00124 sc = decodeTopAlgs(); 00125 if ( !sc.isSuccess() ) { 00126 log << MSG::ERROR << "Failed to initialize Top Algorithms streams." << endmsg; 00127 m_state = CONFIGURED; 00128 return sc; 00129 } 00130 00131 ListAlg::iterator ita; 00132 // Initialize all the new TopAlgs. In fact Algorithms are protected against getting 00133 // initialized twice. 00134 for (ita = m_topAlgList.begin(); ita != m_topAlgList.end(); ita++ ) { 00135 sc = (*ita)->sysInitialize(); 00136 if( !sc.isSuccess() ) { 00137 log << MSG::ERROR << "Unable to initialize Algorithm: " << (*ita)->name() << endmsg; 00138 return sc; 00139 } 00140 } 00141 for (ita = m_outStreamList.begin(); ita != m_outStreamList.end(); ita++ ) { 00142 sc = (*ita)->sysInitialize(); 00143 if( !sc.isSuccess() ) { 00144 log << MSG::ERROR << "Unable to initialize Output Stream: " << (*ita)->name() << endmsg; 00145 return sc; 00146 } 00147 } 00148 00149 return StatusCode::SUCCESS; 00150 }
| StatusCode MinimalEventLoopMgr::start | ( | ) | [virtual] |
implementation of IService::start
Reimplemented from Service.
Definition at line 154 of file MinimalEventLoopMgr.cpp.
00154 { 00155 00156 StatusCode sc = Service::start(); 00157 if ( ! sc.isSuccess() ) return sc; 00158 00159 MsgStream log(msgSvc(), name()); 00160 00161 ListAlg::iterator ita; 00162 // Start all the new TopAlgs. In fact Algorithms are protected against getting 00163 // started twice. 00164 for (ita = m_topAlgList.begin(); ita != m_topAlgList.end(); ita++ ) { 00165 sc = (*ita)->sysStart(); 00166 if( !sc.isSuccess() ) { 00167 log << MSG::ERROR << "Unable to start Algorithm: " << (*ita)->name() << endmsg; 00168 return sc; 00169 } 00170 } 00171 for (ita = m_outStreamList.begin(); ita != m_outStreamList.end(); ita++ ) { 00172 sc = (*ita)->sysStart(); 00173 if( !sc.isSuccess() ) { 00174 log << MSG::ERROR << "Unable to start Output Stream: " << (*ita)->name() << endmsg; 00175 return sc; 00176 } 00177 } 00178 return StatusCode::SUCCESS; 00179 }
| StatusCode MinimalEventLoopMgr::stop | ( | ) | [virtual] |
implementation of IService::stop
Reimplemented from Service.
Reimplemented in EventLoopMgr.
Definition at line 183 of file MinimalEventLoopMgr.cpp.
00183 { 00184 00185 StatusCode sc = StatusCode::SUCCESS; 00186 00187 MsgStream log(msgSvc(), name()); 00188 00189 ListAlg::iterator ita; 00190 // Stop all the TopAlgs. In fact Algorithms are protected against getting 00191 // stopped twice. 00192 for (ita = m_topAlgList.begin(); ita != m_topAlgList.end(); ita++ ) { 00193 sc = (*ita)->sysStop(); 00194 if( !sc.isSuccess() ) { 00195 log << MSG::ERROR << "Unable to stop Algorithm: " << (*ita)->name() << endmsg; 00196 return sc; 00197 } 00198 } 00199 for (ita = m_outStreamList.begin(); ita != m_outStreamList.end(); ita++ ) { 00200 sc = (*ita)->sysStop(); 00201 if( !sc.isSuccess() ) { 00202 log << MSG::ERROR << "Unable to stop Output Stream: " << (*ita)->name() << endmsg; 00203 return sc; 00204 } 00205 } 00206 00207 return Service::stop(); 00208 }
| StatusCode MinimalEventLoopMgr::finalize | ( | void | ) | [virtual] |
implementation of IService::finalize
Reimplemented from Service.
Reimplemented in EventLoopMgr.
Definition at line 266 of file MinimalEventLoopMgr.cpp.
00266 { 00267 MsgStream log( msgSvc(), name() ); 00268 StatusCode sc = StatusCode::SUCCESS; 00269 StatusCode scRet = StatusCode::SUCCESS; 00270 // Call the finalize() method of all top algorithms 00271 ListAlg::iterator ita; 00272 for ( ita = m_topAlgList.begin(); ita != m_topAlgList.end(); ita++ ) { 00273 sc = (*ita)->sysFinalize(); 00274 if( !sc.isSuccess() ) { 00275 scRet = StatusCode::FAILURE; 00276 log << MSG::WARNING << "Finalization of algorithm " << (*ita)->name() << " failed" << endmsg; 00277 } 00278 } 00279 // Call the finalize() method of all Output streams 00280 for ( ita = m_outStreamList.begin(); ita != m_outStreamList.end(); ita++ ) { 00281 sc = (*ita)->sysFinalize(); 00282 if( !sc.isSuccess() ) { 00283 scRet = StatusCode::FAILURE; 00284 log << MSG::WARNING << "Finalization of algorithm " << (*ita)->name() << " failed" << endmsg; 00285 } 00286 } 00287 // release all top algorithms 00288 SmartIF<IAlgManager> algMan(serviceLocator()); 00289 for ( ita = m_topAlgList.begin(); ita != m_topAlgList.end(); ita++ ) { 00290 if (algMan->removeAlgorithm(*ita).isFailure()) { 00291 scRet = StatusCode::FAILURE; 00292 log << MSG::ERROR << "Problems removing Algorithm " << (*ita)->name() 00293 << endmsg; 00294 } 00295 (*ita)->release(); 00296 } 00297 m_topAlgList.clear(); 00298 00299 // release all output streams 00300 for ( ita = m_outStreamList.begin(); ita != m_outStreamList.end(); ita++ ) { 00301 (*ita)->release(); 00302 } 00303 m_outStreamList.clear(); 00304 if ( sc.isSuccess() ) m_state = FINALIZED; 00305 00306 m_incidentSvc->removeListener(m_abortEventListener, IncidentType::AbortEvent); 00307 m_abortEventListener = 0; // release 00308 00309 m_incidentSvc = 0; // release 00310 m_appMgrUI = 0; // release 00311 00312 sc = Service::finalize(); 00313 00314 if (sc.isFailure()) { 00315 scRet = StatusCode::FAILURE; 00316 log << MSG::ERROR << "Problems finalizing Service base class" << endmsg; 00317 } 00318 00319 return scRet; 00320 }
| StatusCode MinimalEventLoopMgr::reinitialize | ( | ) | [virtual] |
implementation of IService::reinitialize
Reimplemented from Service.
Reimplemented in EventLoopMgr.
Definition at line 213 of file MinimalEventLoopMgr.cpp.
00213 { 00214 MsgStream log( msgSvc(), name() ); 00215 StatusCode sc = StatusCode::SUCCESS; 00216 ListAlg::iterator ita; 00217 00218 // Reinitialize all the TopAlgs. 00219 for (ita = m_topAlgList.begin(); ita != m_topAlgList.end(); ita++ ) { 00220 sc = (*ita)->sysReinitialize(); 00221 if( !sc.isSuccess() ) { 00222 log << MSG::ERROR << "Unable to reinitialize Algorithm: " << (*ita)->name() << endmsg; 00223 return sc; 00224 } 00225 } 00226 for (ita = m_outStreamList.begin(); ita != m_outStreamList.end(); ita++ ) { 00227 sc = (*ita)->sysReinitialize(); 00228 if( !sc.isSuccess() ) { 00229 log << MSG::ERROR << "Unable to reinitialize Output Stream: " << (*ita)->name() << endmsg; 00230 return sc; 00231 } 00232 } 00233 00234 return sc; 00235 }
| StatusCode MinimalEventLoopMgr::restart | ( | ) | [virtual] |
implementation of IService::restart
Reimplemented from Service.
Definition at line 239 of file MinimalEventLoopMgr.cpp.
00239 { 00240 MsgStream log( msgSvc(), name() ); 00241 StatusCode sc = StatusCode::SUCCESS; 00242 ListAlg::iterator ita; 00243 00244 // Restart all the TopAlgs. 00245 for (ita = m_topAlgList.begin(); ita != m_topAlgList.end(); ita++ ) { 00246 sc = (*ita)->sysRestart(); 00247 if( !sc.isSuccess() ) { 00248 log << MSG::ERROR << "Unable to restart Algorithm: " << (*ita)->name() << endmsg; 00249 return sc; 00250 } 00251 } 00252 for (ita = m_outStreamList.begin(); ita != m_outStreamList.end(); ita++ ) { 00253 sc = (*ita)->sysRestart(); 00254 if( !sc.isSuccess() ) { 00255 log << MSG::ERROR << "Unable to restart Output Stream: " << (*ita)->name() << endmsg; 00256 return sc; 00257 } 00258 } 00259 00260 return sc; 00261 }
| StatusCode MinimalEventLoopMgr::nextEvent | ( | int | maxevt | ) | [virtual] |
implementation of IEventProcessor::nextEvent
Implements IEventProcessor.
Reimplemented in EventLoopMgr.
Definition at line 325 of file MinimalEventLoopMgr.cpp.
00325 { 00326 MsgStream log(msgSvc(), name()); 00327 log << MSG::ERROR << "This method cannot be called on an object of type " 00328 << System::typeinfoName(typeid(*this)) << endmsg; 00329 return StatusCode::FAILURE; 00330 }
| StatusCode MinimalEventLoopMgr::executeEvent | ( | void * | par | ) | [virtual] |
implementation of IEventProcessor::executeEvent(void* par)
Implements IEventProcessor.
Reimplemented in EventLoopMgr.
Definition at line 376 of file MinimalEventLoopMgr.cpp.
00376 { 00377 bool eventfailed = false; 00378 00379 // Call the resetExecuted() method of ALL "known" algorithms 00380 // (before we were reseting only the topalgs) 00381 SmartIF<IAlgManager> algMan(serviceLocator()); 00382 if ( algMan.isValid() ) { 00383 const ListAlgPtrs& allAlgs = algMan->getAlgorithms() ; 00384 for( ListAlgPtrs::const_iterator ialg = allAlgs.begin() ; allAlgs.end() != ialg ; ++ialg ) { 00385 if ( 0 != *ialg ) (*ialg)->resetExecuted(); 00386 } 00387 } 00388 00389 // Call the execute() method of all top algorithms 00390 for (ListAlg::iterator ita = m_topAlgList.begin(); ita != m_topAlgList.end(); ita++ ) { 00391 StatusCode sc(StatusCode::FAILURE); 00392 try { 00393 if (m_abortEvent){ 00394 MsgStream log ( msgSvc() , name() ); 00395 log << MSG::DEBUG << "AbortEvent incident fired by " 00396 << m_abortEventSource << endmsg; 00397 m_abortEvent = false; 00398 sc.ignore(); 00399 break; 00400 } 00401 sc = (*ita)->sysExecute(); 00402 } catch ( const GaudiException& Exception ) { 00403 MsgStream log ( msgSvc() , "MinimalEventLoopMgr.executeEvent()" ); 00404 log << MSG::FATAL << " Exception with tag=" << Exception.tag() 00405 << " thrown by " << (*ita)->name() << endmsg; 00406 log << MSG::ERROR << Exception << endmsg; 00407 } catch ( const std::exception& Exception ) { 00408 MsgStream log ( msgSvc() , "MinimalEventLoopMgr.executeEvent()" ); 00409 log << MSG::FATAL << " Standard std::exception thrown by " 00410 << (*ita)->name() << endmsg; 00411 log << MSG::ERROR << Exception.what() << endmsg; 00412 } catch(...) { 00413 MsgStream log ( msgSvc() , "MinimalEventLoopMgr.executeEvent()" ); 00414 log << MSG::FATAL << "UNKNOWN Exception thrown by " 00415 << (*ita)->name() << endmsg; 00416 } 00417 00418 if( !sc.isSuccess() ) { 00419 MsgStream log( msgSvc(), name() ); 00420 log << MSG::WARNING << "Execution of algorithm " << (*ita)->name() << " failed" << endmsg; 00421 eventfailed = true; 00422 } 00423 } 00424 00425 // ensure that the abortEvent flag is cleared before the next event 00426 if (m_abortEvent){ 00427 if (outputLevel() <= MSG::DEBUG) { 00428 MsgStream log ( msgSvc() , name() ); 00429 log << MSG::DEBUG << "AbortEvent incident fired by " 00430 << m_abortEventSource << endmsg; 00431 } 00432 m_abortEvent = false; 00433 } 00434 00435 // Call the execute() method of all output streams 00436 for (ListAlg::iterator ito = m_outStreamList.begin(); ito != m_outStreamList.end(); ito++ ) { 00437 (*ito)->resetExecuted(); 00438 StatusCode sc; 00439 sc = (*ito)->sysExecute(); 00440 if( !sc.isSuccess() ) { 00441 MsgStream log( msgSvc(), name() ); 00442 log << MSG::WARNING << "Execution of output stream " << (*ito)->name() << " failed" << endmsg; 00443 eventfailed = true; 00444 } 00445 } 00446 00447 // Check if there was an error processing current event 00448 if( eventfailed ){ 00449 MsgStream log( msgSvc(), name() ); 00450 log << MSG::ERROR << "Error processing event loop." << endmsg; 00451 return StatusCode(StatusCode::FAILURE,true); 00452 } 00453 return StatusCode(StatusCode::SUCCESS,true); 00454 }
| StatusCode MinimalEventLoopMgr::executeRun | ( | int | maxevt | ) | [virtual] |
implementation of IEventProcessor::executeRun( )
Implements IEventProcessor.
Reimplemented in EventLoopMgr.
Definition at line 335 of file MinimalEventLoopMgr.cpp.
00335 { 00336 StatusCode sc; 00337 MsgStream log( msgSvc(), name() ); 00338 ListAlg::iterator ita; 00339 bool eventfailed = false; 00340 00341 // Call the beginRun() method of all top algorithms 00342 for (ita = m_topAlgList.begin(); ita != m_topAlgList.end(); ita++ ) { 00343 sc = (*ita)->sysBeginRun(); 00344 if( !sc.isSuccess() ) { 00345 log << MSG::WARNING << "beginRun() of algorithm " << (*ita)->name() << " failed" << endmsg; 00346 eventfailed = true; 00347 } 00348 } 00349 00350 // Call now the nextEvent(...) 00351 sc = nextEvent(maxevt); 00352 if( !sc.isSuccess() ) { 00353 eventfailed = true; 00354 } 00355 00356 // Call the endRun() method of all top algorithms 00357 for (ita = m_topAlgList.begin(); ita != m_topAlgList.end(); ita++ ) { 00358 sc = (*ita)->sysEndRun(); 00359 if( !sc.isSuccess() ) { 00360 log << MSG::WARNING << "endRun() of algorithm " << (*ita)->name() << " failed" << endmsg; 00361 eventfailed = true; 00362 } 00363 } 00364 00365 if( eventfailed ){ 00366 return StatusCode::FAILURE; 00367 } 00368 else { 00369 return StatusCode::SUCCESS; 00370 } 00371 }
| StatusCode MinimalEventLoopMgr::stopRun | ( | ) | [virtual] |
implementation of IEventProcessor::stopRun( )
Implements IEventProcessor.
Definition at line 458 of file MinimalEventLoopMgr.cpp.
00458 { 00459 m_scheduledStop = true; 00460 return StatusCode::SUCCESS; 00461 }
| void MinimalEventLoopMgr::topAlgHandler | ( | Property & | p | ) |
Top algorithm List handler.
Definition at line 466 of file MinimalEventLoopMgr.cpp.
00466 { 00467 if ( !(decodeTopAlgs( )).isSuccess() ) { 00468 throw GaudiException("Failed to initialize Top Algorithms streams.", 00469 "MinimalEventLoopMgr::topAlgHandler", 00470 StatusCode::FAILURE); 00471 } 00472 }
| StatusCode MinimalEventLoopMgr::decodeTopAlgs | ( | ) |
decodeTopAlgNameList & topAlgNameListHandler
Definition at line 477 of file MinimalEventLoopMgr.cpp.
00477 { 00478 StatusCode sc = StatusCode::SUCCESS; 00479 if ( CONFIGURED == m_state || INITIALIZED == m_state ) { 00480 SmartIF<IAlgManager> algMan(serviceLocator()); 00481 MsgStream log(msgSvc(), name()); 00482 if ( algMan.isValid()) { 00483 // Reset the existing Top Algorithm List 00484 m_topAlgList.clear( ); 00485 const std::vector<std::string>& algNames = m_topAlgNames.value( ); 00486 for (VectorName::const_iterator it = algNames.begin(); it != algNames.end(); it++) { 00487 Gaudi::Utils::TypeNameString item(*it); 00488 // Got the type and name. Now creating the algorithm, avoiding duplicate creation. 00489 std::string item_name = item.name() + getGaudiThreadIDfromName(name()); 00490 const bool CREATE = false; 00491 SmartIF<IAlgorithm> alg = algMan->algorithm(item_name, CREATE); 00492 if (alg.isValid()) { 00493 log << MSG::DEBUG << "Top Algorithm " << item_name << " already exists" << endmsg; 00494 } 00495 else { 00496 log << MSG::DEBUG << "Creating Top Algorithm " << item.type() << " with name " << item_name << endmsg; 00497 IAlgorithm *ialg = 0; 00498 StatusCode sc = algMan->createAlgorithm(item.type(), item_name, ialg); 00499 if( !sc.isSuccess() ) { 00500 log << MSG::ERROR << "Unable to create Top Algorithm " << item.type() << " with name " << item_name << endmsg; 00501 return sc; 00502 } 00503 alg = ialg; // manage reference counting 00504 } 00505 m_topAlgList.push_back(alg); 00506 } 00507 return sc; 00508 } 00509 sc = StatusCode::FAILURE; 00510 } 00511 return sc; 00512 }
| void MinimalEventLoopMgr::outStreamHandler | ( | Property & | p | ) |
Output stream List handler.
Definition at line 517 of file MinimalEventLoopMgr.cpp.
00517 { 00518 if ( !(decodeOutStreams( )).isSuccess() ) { 00519 throw GaudiException("Failed to initialize output streams.", 00520 "MinimalEventLoopMgr::outStreamHandler", 00521 StatusCode::FAILURE); 00522 } 00523 }
| StatusCode MinimalEventLoopMgr::decodeOutStreams | ( | ) |
decodeOutStreamNameList & outStreamNameListHandler
Definition at line 528 of file MinimalEventLoopMgr.cpp.
00528 { 00529 StatusCode sc = StatusCode::SUCCESS; 00530 if ( CONFIGURED == m_state || INITIALIZED == m_state ) { 00531 MsgStream log(msgSvc(), name()); 00532 SmartIF<IAlgManager> algMan(serviceLocator()); 00533 if ( algMan.isValid() ) { 00534 // Reset the existing Top Algorithm List 00535 m_outStreamList.clear(); 00536 const std::vector<std::string>& algNames = m_outStreamNames.value( ); 00537 for (VectorName::const_iterator it = algNames.begin(); it != algNames.end(); it++) { 00538 Gaudi::Utils::TypeNameString item(*it, m_outStreamType); 00539 log << MSG::DEBUG << "Creating " << m_outStreamType << (*it) << endmsg; 00540 const bool CREATE = false; 00541 SmartIF<IAlgorithm> os = algMan->algorithm( item, CREATE ); 00542 if (os.isValid()) { 00543 log << MSG::DEBUG << "Output Stream " << item.name() << " already exists" << endmsg; 00544 } 00545 else { 00546 log << MSG::DEBUG << "Creating Output Stream " << (*it) << endmsg; 00547 IAlgorithm* ios = 0; 00548 StatusCode sc = algMan->createAlgorithm( item.type(), item.name(), ios ); 00549 if( !sc.isSuccess() ) { 00550 log << MSG::ERROR << "Unable to create Output Stream " << (*it) << endmsg; 00551 return sc; 00552 } 00553 os = ios; // manage reference counting 00554 } 00555 m_outStreamList.push_back( os ); 00556 } 00557 return sc; 00558 } 00559 sc = StatusCode::FAILURE; 00560 } 00561 return sc; 00562 }
| MinimalEventLoopMgr& MinimalEventLoopMgr::operator= | ( | const MinimalEventLoopMgr & | ) | [private] |
Fake assignment operator (never implemented).
SmartIF<IAppMgrUI> MinimalEventLoopMgr::m_appMgrUI [protected] |
Reference to the IAppMgrUI interface of the application manager.
Definition at line 39 of file MinimalEventLoopMgr.h.
SmartIF<IIncidentSvc> MinimalEventLoopMgr::m_incidentSvc [protected] |
ListAlg MinimalEventLoopMgr::m_topAlgList [protected] |
ListAlg MinimalEventLoopMgr::m_outStreamList [protected] |
std::string MinimalEventLoopMgr::m_outStreamType [protected] |
State MinimalEventLoopMgr::m_state [protected] |
State of the object.
Reimplemented from Service.
Definition at line 53 of file MinimalEventLoopMgr.h.
bool MinimalEventLoopMgr::m_scheduledStop [protected] |
Instance of the incident listener waiting for AbortEvent.
Definition at line 57 of file MinimalEventLoopMgr.h.
bool MinimalEventLoopMgr::m_abortEvent [protected] |
Flag signalling that the event being processedhas to be aborted (skip all following top algs).
Definition at line 60 of file MinimalEventLoopMgr.h.
std::string MinimalEventLoopMgr::m_abortEventSource [protected] |