The Gaudi Framework  master (37c0b60a)
ApplicationMgr Class Reference

#include </builds/gaudi/Gaudi/GaudiCoreSvc/src/ApplicationMgr/ApplicationMgr.h>

Inheritance diagram for ApplicationMgr:
Collaboration diagram for ApplicationMgr:

Public Member Functions

 ApplicationMgr (IInterface *=nullptr)
 
StatusCode queryInterface (const InterfaceID &iid, void **pinterface) override
 
StatusCode run () override
 
StatusCode configure () override
 
StatusCode terminate () override
 
StatusCode initialize () override
 
StatusCode start () override
 
StatusCode stop () override
 
StatusCode finalize () override
 
StatusCode nextEvent (int maxevt) override
 
const std::stringname () const override
 
EventContext createEventContext () override
 implementation of IEventProcessor::createEventContext() More...
 
StatusCode executeEvent (EventContext &&ctx) override
 implementation of IEventProcessor::executeEvent(void*) More...
 
StatusCode executeRun (int evtmax) override
 implementation of IEventProcessor::executeRun(int) More...
 
StatusCode stopRun () override
 implementation of IEventProcessor::stopRun() More...
 
Gaudi::StateMachine::State FSMState () const override
 
Gaudi::StateMachine::State targetFSMState () const override
 
StatusCode reinitialize () override
 
StatusCode restart () override
 
StatusCode sysInitialize () override
 
StatusCode sysStart () override
 
StatusCode sysStop () override
 
StatusCode sysFinalize () override
 
StatusCode sysReinitialize () override
 
StatusCode sysRestart () override
 
void push (EventContext &&ctx) override
 
bool empty () const override
 
std::optional< Gaudi::Interfaces::IQueueingEventProcessor::ResultTypepop () override
 
- Public Member Functions inherited from PropertyHolder< CommonMessaging< implements< IAppMgrUI, Gaudi::Interfaces::IQueueingEventProcessor, IService, IStateful, INamedInterface, IProperty > > >
 PropertyHolder ()=default
 
Gaudi::Details::PropertyBasedeclareProperty (Gaudi::Details::PropertyBase &prop)
 Declare a property. More...
 
Gaudi::Details::PropertyBasedeclareProperty (const std::string &name, TYPE &value, const std::string &doc="none")
 Helper to wrap a regular data member and use it as a regular property. More...
 
Gaudi::Details::PropertyBasedeclareProperty (const std::string &name, Gaudi::Property< TYPE, VERIFIER, HANDLERS > &prop, const std::string &doc="none")
 Declare a PropertyBase instance setting name and documentation. More...
 
Gaudi::Details::PropertyBasedeclareRemoteProperty (const std::string &name, IProperty *rsvc, const std::string &rname="")
 Declare a remote property. More...
 
StatusCode setProperty (const std::string &name, const Gaudi::Details::PropertyBase &p) override
 set the property from another property with a different name More...
 
StatusCode setProperty (const std::string &s) override
 set the property from the formatted string More...
 
StatusCode setProperty (const Gaudi::Details::PropertyBase &p)
 Set the property from a property. More...
 
virtual StatusCode setProperty (const std::string &name, const Gaudi::Details::PropertyBase &p)=0
 Set the property from a property with a different name. More...
 
virtual StatusCode setProperty (const std::string &s)=0
 Set the property by string. More...
 
StatusCode setProperty (const std::string &name, const char *v)
 Special case for string literals. More...
 
StatusCode setProperty (const std::string &name, const std::string &v)
 Special case for std::string. More...
 
StatusCode setProperty (const std::string &name, const TYPE &value)
 set the property form the value More...
 
StatusCode setPropertyRepr (const std::string &n, const std::string &r) override
 set the property from name and value string representation More...
 
StatusCode getProperty (Gaudi::Details::PropertyBase *p) const override
 get the property More...
 
const Gaudi::Details::PropertyBasegetProperty (std::string_view name) const override
 get the property by name More...
 
StatusCode getProperty (std::string_view n, std::string &v) const override
 convert the property to the string More...
 
const std::vector< Gaudi::Details::PropertyBase * > & getProperties () const override
 get all properties More...
 
bool hasProperty (std::string_view name) const override
 Return true if we have a property with the given name. More...
 
Gaudi::Details::PropertyBaseproperty (std::string_view name) const
 \fixme property and bindPropertiesTo should be protected More...
 
void bindPropertiesTo (Gaudi::Interfaces::IOptionsSvc &optsSvc)
 
 PropertyHolder (const PropertyHolder &)=delete
 
PropertyHolderoperator= (const PropertyHolder &)=delete
 
- Public Member Functions inherited from CommonMessaging< implements< IAppMgrUI, Gaudi::Interfaces::IQueueingEventProcessor, IService, IStateful, INamedInterface, IProperty > >
MSG::Level msgLevel () const
 get the cached level (originally extracted from the embedded MsgStream) More...
 
bool msgLevel (MSG::Level lvl) const
 get the output level from the embedded MsgStream More...
 

Gaudi::Details::PropertyBase handlers

typedef std::map< unsigned long, SmartIF< IComponentManager > > ManagersMap
 Typedef for the map of component managers, the key is the "id" field of the basic InterfaceID of the managed components. More...
 
ManagersMap m_managers
 Map of known component managers. More...
 
Gaudi::Property< std::vector< std::string > > m_declaredManagers
 Property to declare the list of known managers. More...
 
SmartIF< ISvcManagerm_svcManager
 Cached pointer to the manager of services. More...
 
SmartIF< IAlgManagerm_algManager
 Cached pointer to the manager of algorithms. More...
 
SmartIF< ISvcLocatorm_svcLocator
 Reference to its own service locator (must be instantiated prior to any service!) More...
 
SmartIF< DLLClassManagerm_classManager
 Reference to the class manager. More...
 
Gaudi::Property< int > m_SIGo
 
Gaudi::Property< int > m_SIExit
 
Gaudi::Property< std::vector< std::string > > m_topAlgNameList
 
Gaudi::Property< std::vector< std::string > > m_outStreamNameList
 
Gaudi::Property< std::stringm_messageSvcType
 
Gaudi::Property< std::stringm_jobOptionsSvcType
 
std::string m_name = "ApplicationMgr"
 Name. More...
 
Gaudi::StateMachine::State m_state = Gaudi::StateMachine::OFFLINE
 Internal State. More...
 
Gaudi::StateMachine::State m_targetState = Gaudi::StateMachine::OFFLINE
 Internal State. More...
 
Gaudi::Property< std::vector< std::string > > m_svcMapping { this, "SvcMapping", {}, "Default mapping of services" }
 
Gaudi::Property< std::vector< std::string > > m_svcOptMapping
 
SmartIF< IMessageSvcm_messageSvc
 Reference to the message service. More...
 
SmartIF< IRunablem_runable
 Reference to the runable object. More...
 
SmartIF< IEventProcessorm_processingMgr
 Reference to processing manager object. More...
 
SmartIF< IQueueingEventProcessor > m_queueingProcessor
 Reference to a queueing processing manager object. More...
 
Gaudi::Monitoring::Hub m_monitoringHub
 
Gaudi::Property< int > m_evtMax { this, "EvtMax", -1, "Number of events to be processed (-1 means all events)" }
 
Gaudi::Property< std::vector< std::string > > m_extSvcNameList
 
Gaudi::Property< bool > m_extSvcCreates
 
Gaudi::Property< std::vector< std::string > > m_dllNameList { this, "Dlls", {}, "List of DDL's names" }
 
Gaudi::Property< std::stringm_jobOptionsType { this, "JobOptionsType", "FILE", "Source type (e.g. dbase, file...)" }
 
Gaudi::Property< std::stringm_jobOptionsPath { this, "JobOptionsPath", {}, "The \"file\" to look for properties" }
 
Gaudi::Property< std::stringm_jobOptionsPreAction
 
Gaudi::Property< std::stringm_jobOptionsPostAction
 
Gaudi::Property< std::stringm_runableType { this, "Runable", "AppMgrRunable", "Runable type", "Service:IRunable" }
 
Gaudi::Property< std::stringm_eventLoopMgr
 
Gaudi::Property< std::stringm_evtsel { this, "EvtSel", {}, "Event selection" }
 
Gaudi::Property< std::stringm_histPersName { this, "HistogramPersistency", "NONE", "Name of the Hist Pers Svc" }
 
Gaudi::Property< int > m_outputLevel { this, "OutputLevel", MSG::INFO, "Message output level" }
 
Gaudi::Property< std::stringm_appName { this, "AppName", "ApplicationMgr", "The name of the application" }
 
Gaudi::Property< std::stringm_appVersion { this, "AppVersion", {}, "The version of the application" }
 
Gaudi::Property< bool > m_actHistory { this, "ActivateHistory", false, "Activate HistorySvc" }
 
Gaudi::Property< int > m_pluginDebugLevel
 
Gaudi::Property< std::vector< std::string > > m_createSvcNameList
 
Gaudi::Property< bool > m_auditTools { this, "AuditTools", false }
 Defaults for auditors. More...
 
Gaudi::Property< bool > m_auditSvcs { this, "AuditServices", false }
 
Gaudi::Property< bool > m_auditAlgs { this, "AuditAlgorithms", false }
 
Gaudi::Property< std::map< std::string, std::string > > m_environment
 
Gaudi::Property< bool > m_loopCheck
 
Gaudi::Property< bool > m_stopOnSignal
 Property to enable/disable the "stop on signal" service. More...
 
Gaudi::Property< bool > m_propertiesPrint
 
Gaudi::Property< int > m_returnCode
 Property to record the error conditions occurring during the running. More...
 
Gaudi::Property< bool > m_printAlgsSequence
 
Gaudi::Property< bool > m_useMessageSvcForROOTMessages
 
bool m_useHiveAlgorithmManager
 
std::vector< std::stringm_okDlls
 names of successfully loaded dlls More...
 
void evtLoopPropertyHandler (Gaudi::Details::PropertyBase &theProp)
 
StatusCode decodeExtSvcNameList ()
 
StatusCode decodeCreateSvcNameList ()
 
void createSvcNameListHandler (Gaudi::Details::PropertyBase &)
 
void extSvcNameListHandler (Gaudi::Details::PropertyBase &theProp)
 
StatusCode decodeDllNameList ()
 
void dllNameListHandler (Gaudi::Details::PropertyBase &theProp)
 
void pluginDebugPropertyHandler (Gaudi::Details::PropertyBase &theProp)
 
template<class I >
SmartIF< IComponentManager > & getManager ()
 
SmartIF< ISvcManager > & svcManager ()
 
SmartIF< IAlgManager > & algManager ()
 
SmartIF< ISvcLocator > & serviceLocator () const override
 Needed to locate the message service. More...
 
void outputLevelUpdate () override
 Function to call to update the outputLevel of the components (after a change in MessageSvc). More...
 
Gaudi::Monitoring::HubmonitoringHub () override
 
void printAlgsSequences ()
 Print the sequence of algorithms that have been loaded. More...
 
void setServiceManager (ISvcManager *) override
 
StatusCode i_startup ()
 Internal startup routine. More...
 
StatusCode GoToState (Gaudi::StateMachine::State state, bool ignoreFailures=false)
 Reach a state from current state (whichever it is) going through the correct transitions. More...
 
template<typename SELF , typename PIMPL , typename METHOD , typename... ARGS>
static auto i_delegateToEvtProc (SELF *self, PIMPL &member, std::string_view method_name, METHOD &&method, ARGS &&... args)
 Helper to delegate calls to event processor implementation. More...
 

Additional Inherited Members

- Public Types inherited from PropertyHolder< CommonMessaging< implements< IAppMgrUI, Gaudi::Interfaces::IQueueingEventProcessor, IService, IStateful, INamedInterface, IProperty > > >
using PropertyHolderImpl = PropertyHolder< CommonMessaging< implements< IAppMgrUI, Gaudi::Interfaces::IQueueingEventProcessor, IService, IStateful, INamedInterface, IProperty > > >
 Typedef used to refer to this class from derived classes, as in. More...
 
- Public Types inherited from CommonMessaging< implements< IAppMgrUI, Gaudi::Interfaces::IQueueingEventProcessor, IService, IStateful, INamedInterface, IProperty > >
using base_class = CommonMessaging
 
- Protected Member Functions inherited from CommonMessaging< implements< IAppMgrUI, Gaudi::Interfaces::IQueueingEventProcessor, IService, IStateful, INamedInterface, IProperty > >
MSG::Level setUpMessaging () const
 Set up local caches. More...
 
MSG::Level resetMessaging ()
 Reinitialize internal states. More...
 
void updateMsgStreamOutputLevel (int level)
 Update the output level of the cached MsgStream. More...
 

Detailed Description

The Application Manager class. The main purpose of the Application Manager is to steer any data processing application. This includes all data processing applications for LHCb data in all stages: simulation, reconstruction, analysis, high level triggers, etc. Specific implementations of the ApplicationMgr will be developed to cope with the different environments (on-line, off-line, interactive, batch, etc.).

Author
Pere Mato

Definition at line 55 of file ApplicationMgr.h.

Member Typedef Documentation

◆ ManagersMap

typedef std::map<unsigned long, SmartIF<IComponentManager> > ApplicationMgr::ManagersMap
protected

Typedef for the map of component managers, the key is the "id" field of the basic InterfaceID of the managed components.

Definition at line 174 of file ApplicationMgr.h.

Constructor & Destructor Documentation

◆ ApplicationMgr()

ApplicationMgr::ApplicationMgr ( IInterface = nullptr)

Definition at line 87 of file ApplicationMgr.cpp.

87  {
88  // IInterface initialization
89  addRef(); // Initial count set to 1
90 
91  // Instantiate component managers
92  m_managers[IService::interfaceID().id()] = new ServiceManager( this );
93 
95 
96  // Instantiate internal services
97  // SvcLocator/Factory HAS to be already instantiated
98  m_classManager = new DLLClassManager( this );
99 
100  AlgorithmManager* algMgr = new AlgorithmManager( this );
101  m_managers[IAlgorithm::interfaceID().id()] = algMgr;
102  // m_managers[IAlgorithm::interfaceID().id()] = new HiveAlgorithmManager(this);
103 
104  // This property is not hosted in the ApplicationMgr instance
105  declareProperty( "AlgTypeAliases", algMgr->typeAliases(),
106  "Aliases of algorithm types, to replace an algorithm type for every instance" );
107 
108  // ServiceMgr Initialization loop checking
109  svcManager()->setLoopCheckEnabled( m_loopCheck );
110 
111  m_svcMapping = { "EvtDataSvc/EventDataSvc",
112  "DetDataSvc/DetectorDataSvc",
113  "HistogramSvc/HistogramDataSvc",
114  "HbookCnv::PersSvc/HbookHistSvc",
115  "RootHistCnv::PersSvc/RootHistSvc",
116  "EvtPersistencySvc/EventPersistencySvc",
117  "DetPersistencySvc/DetectorPersistencySvc",
118  "HistogramPersistencySvc/HistogramPersistencySvc" };
119 }

Member Function Documentation

◆ algManager()

SmartIF<IAlgManager>& ApplicationMgr::algManager ( )
inline

Definition at line 142 of file ApplicationMgr.h.

142  {
143  // Cache the casted pointer to IAlgManager
144  if ( !m_algManager ) { m_algManager = getManager<IAlgorithm>(); }
145  return m_algManager;
146  }

◆ configure()

StatusCode ApplicationMgr::configure ( )
override

Definition at line 271 of file ApplicationMgr.cpp.

271  {
272 
273  // Check if the state is compatible with the transition
274  MsgStream tlog( m_messageSvc, name() );
276  tlog << MSG::INFO << "Already Configured" << endmsg;
277  return StatusCode::SUCCESS;
278  }
280  tlog << MSG::FATAL << "configure: Invalid state \"" << m_state << "\"" << endmsg;
281  return StatusCode::FAILURE;
282  }
284 
285  // Reset application return code.
287 
288  StatusCode sc;
289  sc = i_startup();
290  if ( !sc.isSuccess() ) { return sc; }
291 
292  {
294  // Get my own options using the Job options service
295  if ( log.level() <= MSG::DEBUG ) log << MSG::DEBUG << "Getting my own properties" << endmsg;
296  bindPropertiesTo( serviceLocator()->getOptsSvc() );
297  }
298 
299  // Make sure that the OutputLevel is in sync
300  if ( m_outputLevel != MSG::NIL && m_messageSvc ) m_messageSvc->setOutputLevel( name(), m_outputLevel );
302 
303  // Check current outputLevel to eventually inform the MessageSvc
304  if ( m_outputLevel != MSG::NIL && !m_appName.empty() ) {
305  // Print a welcome message
307  << "=================================================================="
308  << "==================================================================" << std::endl
309  << " "
310  << " Welcome to " << m_appName.value();
311 
312  if ( !m_appVersion.empty() ) {
313  log << MSG::ALWAYS << " version " << m_appVersion.value();
314  } else {
315  log << MSG::ALWAYS << " (GaudiCoreSvc "
316  << "v" << GAUDI_MAJOR_VERSION << "r" << GAUDI_MINOR_VERSION
317 #if GAUDI_PATCH_VERSION
318  << "p" << GAUDI_PATCH_VERSION
319 #endif
320  << ")";
321  }
322 
323  // Add the host name and current time to the message
325  << " "
326  << " running on " << System::hostName() << " on " << Gaudi::Time::current().format( true ) << std::endl
327  << "=================================================================="
328  << "==================================================================" << endmsg;
329  }
330 
331  // print all own properties if the options "PropertiesPrint" is set to true
332  if ( m_propertiesPrint ) {
333  const auto& properties = getProperties();
334  log << MSG::ALWAYS << "List of ALL properties of " << System::typeinfoName( typeid( *this ) ) << "/" << this->name()
335  << " #properties = " << properties.size() << endmsg;
336  for ( const auto& property : properties ) { log << "Property ['Name': Value] = " << *property << endmsg; }
337  }
338 
339  // set the requested environment variables
340  for ( auto& var : m_environment ) {
341  const std::string& name = var.first;
342  const std::string& value = var.second;
344  const MSG::Level lvl = ( !old.empty() && ( old != "UNKNOWN" ) ) ? MSG::WARNING : MSG::DEBUG;
345  if ( m_outputLevel <= lvl ) log << lvl << "Setting " << name << " = " << value << endmsg;
346  System::setEnv( name, value );
347  }
348 
349  // Declare Service Types
350  for ( auto& j : m_svcMapping ) {
352  if ( svcManager()->declareSvcType( itm.name(), itm.type() ).isFailure() ) {
353  log << MSG::ERROR << "configure: declaring svc type:'" << j << "' failed." << endmsg;
354  return StatusCode::FAILURE;
355  } else {
356  ON_VERBOSE
357  log << MSG::VERBOSE << "declared service " << j << endmsg;
358  }
359  }
360  for ( auto& j : m_svcOptMapping ) {
362  if ( svcManager()->declareSvcType( itm.name(), itm.type() ).isFailure() ) {
363  log << MSG::ERROR << "declaring svc type:'" << j << "' failed." << endmsg;
364  return StatusCode::FAILURE;
365  }
366  }
367 
368  //--------------------------------------------------------------------------
369  // Declare other Services and Algorithms by loading DLL's
370  sc = decodeDllNameList();
371  if ( sc.isFailure() ) {
372  log << MSG::ERROR << "Failure loading declared DLL's" << endmsg;
373  return sc;
374  }
375 
376  //--------------------------------------------------------------------------
377  // Deal with the services explicitly declared by the user.
378  sc = decodeExtSvcNameList();
379  if ( sc.isFailure() ) {
380  log << MSG::ERROR << "Failure during external service association" << endmsg;
381  return sc;
382  }
383 
385  if ( sc.isFailure() ) {
386  log << MSG::ERROR << "Failure during external service creation" << endmsg;
387  return sc;
388  }
389 
390  //--------------------------------------------------------------------------
391  // Retrieve intrinsic services. If needed configure them.
392  //--------------------------------------------------------------------------
393  const Gaudi::Utils::TypeNameString evtloop_item( m_eventLoopMgr );
394  sc = svcManager()->addService( evtloop_item, ServiceManager::DEFAULT_SVC_PRIORITY * 10 );
395  if ( !sc.isSuccess() ) {
396  log << MSG::FATAL << "Error adding :" << m_eventLoopMgr << endmsg;
397  return sc;
398  } else {
399  ON_VERBOSE
400  log << MSG::VERBOSE << "added service " << evtloop_item << endmsg;
401  }
402 
403  m_runable = m_svcLocator->service( m_runableType );
404  if ( !m_runable ) {
405  log << MSG::FATAL << "Error retrieving Runable: " << m_runableType.value() << "\n Check option ApplicationMgr."
406  << m_runableType.name() << endmsg;
407  return sc;
408  }
409  m_processingMgr = m_svcLocator->service( evtloop_item );
410  if ( !m_processingMgr ) {
411  log << MSG::FATAL << "Error retrieving Processing manager: " << m_eventLoopMgr.value()
412  << "\n Check option ApplicationMgr." << m_eventLoopMgr.name() << "\n No events will be processed." << endmsg;
413  return sc;
414  }
415  // The IEventProcessor might also be an IQueueingEventProcessor
417 
418  // Establish Update Handlers for ExtSvc and DLLs Properties
422 
423  if ( m_actHistory ) {
424  // Create HistorySvc with a priority to ensure it's initialized last, finalized first
425  sc = svcManager()->addService( "HistorySvc", std::numeric_limits<int>::max() );
426  if ( sc.isFailure() ) {
427  log << MSG::FATAL << "Error adding HistorySvc" << endmsg;
428  return StatusCode::FAILURE;
429  }
430  }
431 
432  log << MSG::INFO << "Application Manager Configured successfully" << endmsg;
434  return StatusCode::SUCCESS;
435 }

◆ createEventContext()

EventContext ApplicationMgr::createEventContext ( )
override

implementation of IEventProcessor::createEventContext()

Definition at line 821 of file ApplicationMgr.cpp.

821  {
823  if ( m_processingMgr ) { return m_processingMgr->createEventContext(); }
824  }
826  ss << "createEventContext: Invalid state \"" << FSMState() << '"';
827  throw GaudiException( ss.str(), name(), StatusCode::FAILURE );
828 }

◆ createSvcNameListHandler()

void ApplicationMgr::createSvcNameListHandler ( Gaudi::Details::PropertyBase )

Definition at line 927 of file ApplicationMgr.cpp.

927  {
928  if ( !( decodeCreateSvcNameList() ).isSuccess() ) {
929  throw GaudiException( "Failed to create ext services", "MinimalEventLoopMgr::createSvcNameListHandler",
931  }
932 }

◆ decodeCreateSvcNameList()

StatusCode ApplicationMgr::decodeCreateSvcNameList ( )

Definition at line 936 of file ApplicationMgr.cpp.

936  {
938  const auto& theNames = m_createSvcNameList.value();
939  auto it = theNames.begin();
940  auto et = theNames.end();
941  while ( result.isSuccess() && it != et ) {
942  Gaudi::Utils::TypeNameString item( *it++ );
943  if ( ( result = svcManager()->addService( item, ServiceManager::DEFAULT_SVC_PRIORITY ) ).isFailure() ) {
945  log << MSG::ERROR << "decodeCreateSvcNameList: Cannot create service " << item.type() << "/" << item.name()
946  << endmsg;
947  } else {
948  ON_DEBUG {
950  log << MSG::DEBUG << "decodeCreateSvcNameList: Created service " << item.type() << "/" << item.name() << endmsg;
951  }
952  }
953  }
954  return result;
955 }

◆ decodeDllNameList()

StatusCode ApplicationMgr::decodeDllNameList ( )

Definition at line 1008 of file ApplicationMgr.cpp.

1008  {
1009 
1012 
1013  // Clean up multiple entries from DLL list
1014  // -------------------------------------------------------------------------
1015  std::vector<std::string> newList;
1016  std::map<std::string, unsigned int> dllInList, duplicateList;
1017  {
1018  for ( const auto& it : m_dllNameList ) {
1019  if ( 0 == dllInList[it] ) {
1020  newList.push_back( it ); // first instance of this module
1021  } else {
1022  ++duplicateList[it];
1023  } // module listed multiple times
1024  ++dllInList[it]; // increment count for this module
1025  }
1026  }
1027  // m_dllNameList = newList; // update primary list to new, filtered list (do not use the
1028  // property itself otherwise we get called again infinitely)
1029  // List modules that were in there twice..
1030  ON_DEBUG if ( !duplicateList.empty() ) {
1031  log << MSG::DEBUG << "Removed duplicate entries for modules : ";
1032  for ( auto it = duplicateList.begin(); it != duplicateList.end(); ++it ) {
1033  log << it->first << "(" << 1 + it->second << ")";
1034  if ( it != --duplicateList.end() ) log << ", ";
1035  }
1036  log << endmsg;
1037  }
1038  // -------------------------------------------------------------------------
1039 
1040  const std::vector<std::string>& theNames = newList;
1041 
1042  // only load the new dlls or previously failed dlls
1043  ON_DEBUG log << MSG::DEBUG << "Loading declared DLL's" << endmsg;
1044 
1045  std::vector<std::string> successNames, failNames;
1046  for ( const auto& it : theNames ) {
1047  if ( std::find( m_okDlls.rbegin(), m_okDlls.rend(), it ) == m_okDlls.rend() ) {
1048  // found a new module name
1049  StatusCode status = m_classManager->loadModule( it );
1050  if ( status.isFailure() ) {
1051  failNames.push_back( it );
1052  result = StatusCode::FAILURE;
1053  } else {
1054  successNames.push_back( it );
1055  }
1056  }
1057  }
1058 
1059  // report back to the user and store the names of the succesfully loaded dlls
1060  if ( !successNames.empty() ) {
1061  log << MSG::INFO << "Successfully loaded modules : ";
1062  for ( auto it = successNames.begin(); it != successNames.end(); it++ ) {
1063  log << ( *it );
1064  if ( ( it + 1 ) != successNames.end() ) log << ", ";
1065  // save name
1066  m_okDlls.push_back( *it );
1067  }
1068  log << endmsg;
1069  }
1070 
1071  if ( result == StatusCode::FAILURE ) {
1072  log << MSG::WARNING << "Failed to load modules: ";
1073  for ( auto it = failNames.begin(); it != failNames.end(); it++ ) {
1074  log << ( *it );
1075  if ( ( it + 1 ) != failNames.end() ) log << ", ";
1076  }
1077  log << endmsg;
1078  }
1079  return result;
1080 }

◆ decodeExtSvcNameList()

StatusCode ApplicationMgr::decodeExtSvcNameList ( )

Definition at line 970 of file ApplicationMgr.cpp.

970  {
972 
973  const auto& theNames = m_extSvcNameList.value();
974 
975  auto it = theNames.begin();
976  auto et = theNames.end();
977  while ( result.isSuccess() && it != et ) {
978  Gaudi::Utils::TypeNameString item( *it++ );
979  if ( m_extSvcCreates ) {
980  if ( ( result = svcManager()->addService( item, ServiceManager::DEFAULT_SVC_PRIORITY ) ).isFailure() ) {
982  log << MSG::ERROR << "decodeExtSvcNameList: Cannot create service " << item.type() << "/" << item.name()
983  << endmsg;
984  }
985  } else {
986  if ( ( result = svcManager()->declareSvcType( item.name(), item.type() ) ).isFailure() ) {
988  log << MSG::ERROR << "decodeExtSvcNameList: Cannot declare service " << item.type() << "/" << item.name()
989  << endmsg;
990  }
991  }
992  }
993  return result;
994 }

◆ dllNameListHandler()

void ApplicationMgr::dllNameListHandler ( Gaudi::Details::PropertyBase theProp)

Definition at line 999 of file ApplicationMgr.cpp.

999  {
1000  if ( !( decodeDllNameList() ).isSuccess() ) {
1001  throw GaudiException( "Failed to load DLLs.", "MinimalEventLoopMgr::dllNameListHandler", StatusCode::FAILURE );
1002  }
1003 }

◆ empty()

bool ApplicationMgr::empty ( ) const
override

Definition at line 813 of file ApplicationMgr.cpp.

◆ evtLoopPropertyHandler()

void ApplicationMgr::evtLoopPropertyHandler ( Gaudi::Details::PropertyBase theProp)

Definition at line 917 of file ApplicationMgr.cpp.

917  {
918  if ( m_processingMgr ) {
919  auto props = m_processingMgr.as<IProperty>();
920  if ( props ) props->setProperty( p ).ignore();
921  }
922 }

◆ executeEvent()

StatusCode ApplicationMgr::executeEvent ( EventContext &&  ctx)
override

implementation of IEventProcessor::executeEvent(void*)

Definition at line 799 of file ApplicationMgr.cpp.

799  {
801  if ( m_processingMgr ) { return m_processingMgr->executeEvent( std::move( ctx ) ); }
802  }
804  log << MSG::FATAL << "executeEvent: Invalid state \"" << FSMState() << "\"" << endmsg;
805  return StatusCode::FAILURE;
806 }

◆ executeRun()

StatusCode ApplicationMgr::executeRun ( int  evtmax)
override

implementation of IEventProcessor::executeRun(int)

Definition at line 832 of file ApplicationMgr.cpp.

832  {
835  if ( m_processingMgr ) { return m_processingMgr->executeRun( evtmax ); }
836  log << MSG::WARNING << "No EventLoop Manager specified " << endmsg;
837  return StatusCode::SUCCESS;
838  }
839  log << MSG::FATAL << "executeRun: Invalid state \"" << FSMState() << "\"" << endmsg;
840  return StatusCode::FAILURE;
841 }

◆ extSvcNameListHandler()

void ApplicationMgr::extSvcNameListHandler ( Gaudi::Details::PropertyBase theProp)

Definition at line 960 of file ApplicationMgr.cpp.

960  {
961  if ( !( decodeExtSvcNameList() ).isSuccess() ) {
962  throw GaudiException( "Failed to declare ext services", "MinimalEventLoopMgr::extSvcNameListHandler",
964  }
965 }

◆ finalize()

StatusCode ApplicationMgr::finalize ( )
override

Definition at line 578 of file ApplicationMgr.cpp.

578  {
581  log << MSG::INFO << "Already Finalized" << endmsg;
582  return StatusCode::SUCCESS;
583  }
585  log << MSG::FATAL << "finalize: Invalid state \"" << m_state << "\"" << endmsg;
586  return StatusCode::FAILURE;
587  }
589 
590  // disable message suppression in finalize
591  m_svcLocator->service<IProperty>( "MessageSvc" )
592  ->setProperty( Gaudi::Property<bool>( "enableSuppression", false ) )
593  .ignore();
594 
595  // Finalize independently managed Algorithms
596  StatusCode sc = algManager()->finalize();
597  if ( sc.isFailure() ) {
598  log << MSG::WARNING << "Failed to finalize an algorithm." << endmsg;
600  }
601 
602  // Finalize all Services
603  sc = svcManager()->finalize();
604  if ( sc.isFailure() ) {
605  log << MSG::WARNING << "Failed to finalize a service." << endmsg;
607  }
608 
609  // svcManager()->removeService( (IService*) m_processingMgr.get() );
610  // svcManager()->removeService( (IService*) m_runable.get() );
611 
612  if ( sc.isSuccess() ) {
613  log << MSG::INFO << "Application Manager Finalized successfully" << endmsg;
614  } else {
615  log << MSG::ERROR << "Application Manager failed to finalize" << endmsg;
616  }
617 
619  return sc;
620 }

◆ FSMState()

Gaudi::StateMachine::State ApplicationMgr::FSMState ( ) const
override

Definition at line 860 of file ApplicationMgr.cpp.

860 { return m_state; }

◆ getManager()

template<class I >
SmartIF<IComponentManager>& ApplicationMgr::getManager ( )
inline

Definition at line 132 of file ApplicationMgr.h.

132  {
133  return m_managers[I::interfaceID().id()];
134  }

◆ GoToState()

StatusCode ApplicationMgr::GoToState ( Gaudi::StateMachine::State  state,
bool  ignoreFailures = false 
)
protected

Reach a state from current state (whichever it is) going through the correct transitions.

By default, if a transition fails, the chain is interrupted, but the behavior can be changed with the parameter "gnoreFailures"

Definition at line 687 of file ApplicationMgr.cpp.

687  {
689 
690  switch ( state ) {
691 
693  switch ( m_state ) {
695  return StatusCode::SUCCESS;
696  break;
698  return terminate();
699  break;
700  default: // Gaudi::StateMachine::INITIALIZED or Gaudi::StateMachine::RUNNING
702  if ( sc.isSuccess() ) { return terminate(); }
703  break;
704  }
705  break;
706 
708  switch ( m_state ) {
710  return StatusCode::SUCCESS;
711  break;
713  return configure();
714  break;
716  return finalize();
717  break;
718  default: // Gaudi::StateMachine::RUNNING
720  if ( sc.isSuccess() ) { return finalize(); }
721  break;
722  }
723  break;
724 
726  switch ( m_state ) {
728  return StatusCode::SUCCESS;
729  break;
731  return initialize();
732  break;
734  return stop();
735  break;
736  default: // Gaudi::StateMachine::OFFLINE
738  if ( sc.isSuccess() ) { return initialize(); }
739  break;
740  }
741  break;
742 
744  switch ( m_state ) {
746  return StatusCode::SUCCESS;
747  break;
749  return start();
750  break;
751  default: // Gaudi::StateMachine::OFFLINE or Gaudi::StateMachine::CONFIGURED
753  if ( sc.isSuccess() ) { return start(); }
754  break;
755  }
756  break;
757  }
758 
759  // If I get here, there has been a problem in the recursion
760 
761  if ( ignoreFailures ) {
762  // force the new state
763  m_state = state;
764  return StatusCode::SUCCESS;
765  }
766 
767  return sc;
768 }

◆ i_delegateToEvtProc()

template<typename SELF , typename PIMPL , typename METHOD , typename... ARGS>
static auto ApplicationMgr::i_delegateToEvtProc ( SELF *  self,
PIMPL &  member,
std::string_view  method_name,
METHOD &&  method,
ARGS &&...  args 
)
inlinestaticprivate

Helper to delegate calls to event processor implementation.

Definition at line 317 of file ApplicationMgr.h.

318  {
319  if ( self->m_state == Gaudi::StateMachine::RUNNING ) {
320  if ( bool( member ) ) {
321  return std::invoke( method, *member.get(), std::forward<ARGS>( args )... );
322  } else {
324  s << method_name << ": event processor is not a \""
325  << System::typeinfoName( typeid( decltype( *member.get() ) ) ) << '"';
326  throw GaudiException{ s.str(), self->name(), StatusCode::FAILURE };
327  }
328  }
330  s << method_name << ": Invalid state \"" << self->FSMState() << '"';
331  throw GaudiException{ s.str(), self->name(), StatusCode::FAILURE };
332  }

◆ i_startup()

StatusCode ApplicationMgr::i_startup ( )
protected

Internal startup routine.

Definition at line 150 of file ApplicationMgr.cpp.

150  {
151 
152  StatusCode sc;
153 
154  // declare factories in current module
155  m_classManager->loadModule( "" ).ignore();
156 
157  // Note: we cannot use CommonMessaging methods here because MessageSvc is not there yet
158  MsgStream log( nullptr, name() );
159 
160  // Create the Message service
161  auto msgsvc = svcManager()->createService( Gaudi::Utils::TypeNameString( "MessageSvc", m_messageSvcType ) );
162  if ( !msgsvc ) {
163  log << MSG::FATAL << "Error creating MessageSvc of type " << m_messageSvcType << endmsg;
164  return StatusCode::FAILURE;
165  }
166  // Get the useful interface from Message services
167  m_messageSvc = m_svcLocator->service( "MessageSvc" );
168  if ( !m_messageSvc ) {
169  log << MSG::FATAL << "Error retrieving MessageSvc." << endmsg;
170  return StatusCode::FAILURE;
171  }
172  sc = m_messageSvc.as<IProperty>()->setProperty( "OutputLevel", m_outputLevel );
173  if ( !sc ) {
174  log << MSG::FATAL << "Error setting OutputLevel option of MessageSvc" << endmsg;
175  return sc;
176  }
178  if ( gROOT ) {
179  // if ROOT is already initialized (usually it is the case) we redirect messages to MessageSvc.
180  s_messageSvcInstance = m_messageSvc.get();
181  s_originalRootErrorHandler = SetErrorHandler( ROOTErrorHandlerAdapter );
182  } else {
183  log << MSG::WARNING
184  << "ROOT not yet initialized, we cannot override the error handler are requested "
185  "(UseMessageSvcForROOTMessages==true)"
186  << endmsg;
187  }
188  }
189 
190  auto jobsvc = svcManager()->createService( Gaudi::Utils::TypeNameString( "JobOptionsSvc", m_jobOptionsSvcType ) );
191  // Create the Job Options service
192  if ( !jobsvc ) {
193  log << MSG::FATAL << "Error creating JobOptionsSvc" << endmsg;
194  return StatusCode::FAILURE;
195  }
196 
197  auto jobOptsIProp = jobsvc.as<IProperty>();
198  if ( !jobOptsIProp ) {
199  log << MSG::FATAL << "Error locating JobOptionsSvc" << endmsg;
200  return StatusCode::FAILURE;
201  }
202  sc = jobOptsIProp->setProperty( Gaudi::Property<std::string>( "TYPE", m_jobOptionsType ) );
203  if ( !sc.isSuccess() ) {
204  log << MSG::FATAL << "Error setting TYPE option in JobOptionsSvc" << endmsg;
205  return sc;
206  }
207 
208  if ( !m_jobOptionsPreAction.empty() ) {
209  sc = jobOptsIProp->setProperty( Gaudi::Property<std::string>( "PYTHONPARAMS", m_jobOptionsPreAction ) );
210  if ( !sc.isSuccess() ) {
211  log << MSG::FATAL << "Error setting JobOptionsPreAction option in JobOptionsSvc" << endmsg;
212  return sc;
213  }
214  }
215 
216  if ( !m_jobOptionsPostAction.empty() ) {
217  sc = jobOptsIProp->setProperty( Gaudi::Property<std::string>( "PYTHONACTION", m_jobOptionsPostAction ) );
218  if ( !sc.isSuccess() ) {
219  log << MSG::FATAL << "Error setting JobOptionsPostAction option in JobOptionsSvc" << endmsg;
220  return sc;
221  }
222  }
223 
224  if ( !m_jobOptionsPath.empty() ) { // The command line takes precedence
225  sc = jobOptsIProp->setProperty( Gaudi::Property<std::string>( "PATH", m_jobOptionsPath ) );
226  if ( !sc.isSuccess() ) {
227  log << MSG::FATAL << "Error setting PATH option in JobOptionsSvc" << endmsg;
228  return sc;
229  }
230  } else if ( isEnvSet( "JOBOPTPATH" ) ) { // Otherwise the Environment JOBOPTPATH
231  sc = jobOptsIProp->setProperty( Gaudi::Property<std::string>( "PATH", getEnv( "JOBOPTPATH" ) ) );
232  if ( !sc.isSuccess() ) {
233  log << MSG::FATAL << "Error setting PATH option in JobOptionsSvc from env" << endmsg;
234  return sc;
235  }
236  } else { // Otherwise the default
237  sc = jobOptsIProp->setProperty( Gaudi::Property<std::string>( "PATH", "../options/job.opts" ) );
238  if ( !sc.isSuccess() ) {
239  log << MSG::FATAL << "Error setting PATH option in JobOptionsSvc to default" << endmsg;
240  return sc;
241  }
242  }
243  jobOptsIProp.reset();
244 
245  // Sets my default the Output Level of the Message service to be
246  // the same as this
247  auto msgSvcIProp = msgsvc.as<IProperty>();
248  msgSvcIProp->setProperty( Gaudi::Property<int>( "OutputLevel", m_outputLevel ) ).ignore();
249  msgSvcIProp.reset();
250 
251  sc = jobsvc->sysInitialize();
252  if ( !sc.isSuccess() ) {
253  log << MSG::FATAL << "Error initializing JobOptionsSvc" << endmsg;
254  return sc;
255  }
256  sc = msgsvc->sysInitialize();
257  if ( !sc.isSuccess() ) {
258  log << MSG::FATAL << "Error initializing MessageSvc" << endmsg;
259  return sc;
260  }
261 
262  // Make sure output level caches are up to date.
264 
265  return sc;
266 }

◆ initialize()

StatusCode ApplicationMgr::initialize ( )
override

Definition at line 440 of file ApplicationMgr.cpp.

440  {
441  StatusCode sc;
442 
444 
445  // Make sure output level caches are up to date.
447 
448  // I cannot add these services in configure() because they are coming from GaudiUtils
449  // and it messes up genconf when rebuilding it.
450  if ( m_stopOnSignal ) {
451  // Instantiate the service that schedules a stop when a signal is received
452  std::string svcname( "Gaudi::Utils::StopSignalHandler" );
453  sc = svcManager()->addService( svcname );
454  if ( sc.isFailure() ) {
455  log << MSG::INFO << "Cannot instantiate " << svcname << "signals will be ignored" << endmsg;
456  }
457  }
458 
460  log << MSG::INFO << "Already Initialized!" << endmsg;
461  return StatusCode::SUCCESS;
462  }
464  log << MSG::FATAL << "initialize: Invalid state \"" << m_state << "\"" << endmsg;
465  return StatusCode::FAILURE;
466  }
468 
469  //--------------------------------------------------------------------------
470  // Initialize the list of top Services
471  //--------------------------------------------------------------------------
472  sc = svcManager()->initialize();
473  if ( !sc.isSuccess() ) return sc;
474 
475  sc = algManager()->initialize();
476  if ( !sc.isSuccess() ) return sc;
477 
478  //--------------------------------------------------------------------------
479  // Final steps: Inform user and change internal state
480  //--------------------------------------------------------------------------
481  log << MSG::INFO << "Application Manager Initialized successfully" << endmsg;
483 
485 
486  return sc;
487 }

◆ monitoringHub()

Gaudi::Monitoring::Hub& ApplicationMgr::monitoringHub ( )
inlineoverride

Definition at line 154 of file ApplicationMgr.h.

154 { return m_monitoringHub; }

◆ name()

const std::string & ApplicationMgr::name ( ) const
override

Definition at line 857 of file ApplicationMgr.cpp.

857 { return m_name; }

◆ nextEvent()

StatusCode ApplicationMgr::nextEvent ( int  maxevt)
override

Definition at line 526 of file ApplicationMgr.cpp.

526  {
529  log << MSG::FATAL << "nextEvent: Invalid state \"" << m_state << "\"" << endmsg;
530  return StatusCode::FAILURE;
531  }
532  if ( !m_processingMgr ) {
534  log << MSG::FATAL << "No event processing manager specified. Check option: " << m_eventLoopMgr.name() << endmsg;
535  return StatusCode::FAILURE;
536  }
537  return m_processingMgr->nextEvent( maxevt );
538 }

◆ outputLevelUpdate()

void ApplicationMgr::outputLevelUpdate ( )
override

Function to call to update the outputLevel of the components (after a change in MessageSvc).

Definition at line 1082 of file ApplicationMgr.cpp.

1082  {
1083  resetMessaging();
1084  for ( auto& mgrItem : m_managers ) { mgrItem.second->outputLevelUpdate(); }
1085 }

◆ pluginDebugPropertyHandler()

void ApplicationMgr::pluginDebugPropertyHandler ( Gaudi::Details::PropertyBase theProp)

◆ pop()

std::optional< Gaudi::Interfaces::IQueueingEventProcessor::ResultType > ApplicationMgr::pop ( )
override

Definition at line 817 of file ApplicationMgr.cpp.

◆ printAlgsSequences()

void ApplicationMgr::printAlgsSequences ( )

Print the sequence of algorithms that have been loaded.

Definition at line 1108 of file ApplicationMgr.cpp.

1108  {
1110  log << MSG::ALWAYS << "****************************** Algorithm Sequence ****************************" << endmsg;
1111  for ( auto& algname : m_topAlgNameList ) { printAlgsSequencesHelper( algManager(), algname, log, 0 ); }
1112  log << MSG::ALWAYS << "******************************************************************************" << endmsg;
1113 }

◆ push()

void ApplicationMgr::push ( EventContext &&  ctx)
override

Definition at line 808 of file ApplicationMgr.cpp.

◆ queryInterface()

StatusCode ApplicationMgr::queryInterface ( const InterfaceID iid,
void **  pinterface 
)
override

Definition at line 124 of file ApplicationMgr.cpp.

124  {
125  if ( !ppvi ) { return StatusCode::FAILURE; }
126 
127  // try to find own/direct interfaces:
128  StatusCode sc = base_class::queryInterface( iid, ppvi );
129  if ( sc.isSuccess() ) return sc;
130 
131  // find indirect interfaces :
132  if ( ISvcLocator::interfaceID().versionMatch( iid ) ) { return serviceLocator()->queryInterface( iid, ppvi ); }
133  if ( ISvcManager::interfaceID().versionMatch( iid ) ) { return svcManager()->queryInterface( iid, ppvi ); }
134  if ( IAlgManager::interfaceID().versionMatch( iid ) ) { return algManager()->queryInterface( iid, ppvi ); }
135  if ( IClassManager::interfaceID().versionMatch( iid ) ) { return m_classManager->queryInterface( iid, ppvi ); }
136  if ( IMessageSvc::interfaceID().versionMatch( iid ) ) {
137  *ppvi = m_messageSvc.get();
138  if ( m_messageSvc ) m_messageSvc->addRef();
139  // Note that 0 can be a valid IMessageSvc pointer value (when used for
140  // MsgStream).
141  return StatusCode::SUCCESS;
142  }
143  *ppvi = nullptr;
144  return StatusCode::FAILURE;
145 }

◆ reinitialize()

StatusCode ApplicationMgr::reinitialize ( )
override

Definition at line 867 of file ApplicationMgr.cpp.

867  {
870  StatusCode sc;
872  throw GaudiException( "Cannot reinitialize application if not INITIALIZED or RUNNING",
873  "ApplicationMgr::reinitialize", StatusCode::FAILURE );
874  }
876  sc = svcManager()->reinitialize();
877  if ( sc.isFailure() ) retval = sc;
878  sc = algManager()->reinitialize();
879  if ( sc.isFailure() ) retval = sc;
880 
882  if ( sc.isFailure() ) retval = sc;
883  sc = m_svcLocator->service( "JobOptionsSvc" )->sysReinitialize();
884  if ( sc.isFailure() ) retval = sc;
885 
886  log << MSG::INFO << "Application Manager Reinitialized successfully" << endmsg;
887 
888  return retval;
889 }

◆ restart()

StatusCode ApplicationMgr::restart ( )
override

Definition at line 894 of file ApplicationMgr.cpp.

894  {
896  StatusCode sc;
898  throw GaudiException( "Cannot restart application if not RUNNING", "ApplicationMgr::restart", StatusCode::FAILURE );
899  }
900 
901  sc = svcManager()->restart();
902  if ( sc.isFailure() ) retval = sc;
903  sc = algManager()->restart();
904  if ( sc.isFailure() ) retval = sc;
905 
906  sc = m_messageSvc.as<IService>()->sysRestart();
907  if ( sc.isFailure() ) retval = sc;
908  sc = m_svcLocator->service( "JobOptionsSvc" )->sysRestart();
909  if ( sc.isFailure() ) retval = sc;
910 
911  return retval;
912 }

◆ run()

StatusCode ApplicationMgr::run ( )
override

Definition at line 773 of file ApplicationMgr.cpp.

773  {
775 
777  if ( sc.isSuccess() ) {
779  if ( m_runable != 0 ) { // loop over the events
780  sc = m_runable->run();
781  if ( !sc.isSuccess() ) { log << MSG::FATAL << "Application execution failed. Ending the job." << endmsg; }
782  } else {
783  log << MSG::FATAL << "Application has no runable object. Check option:" << m_runableType.name() << endmsg;
784  }
785  }
786  if ( sc.isSuccess() ) { // try to close cleanly
788  }
789  // either the runable failed of the stut-down
790  if ( sc.isFailure() ) { // try to close anyway (but keep the StatusCode unchanged)
792  }
793  return sc;
794 }

◆ serviceLocator()

SmartIF<ISvcLocator>& ApplicationMgr::serviceLocator ( ) const
inlineoverride

Needed to locate the message service.

Definition at line 149 of file ApplicationMgr.h.

149 { return m_svcLocator; }

◆ setServiceManager()

void ApplicationMgr::setServiceManager ( ISvcManager )
inlineoverrideprotected

Definition at line 161 of file ApplicationMgr.h.

161 {}

◆ start()

StatusCode ApplicationMgr::start ( )
override

Definition at line 492 of file ApplicationMgr.cpp.

492  {
493 
495 
497  log << MSG::INFO << "Already Initialized!" << endmsg;
498  return StatusCode::SUCCESS;
499  }
501  log << MSG::FATAL << "start: Invalid state \"" << m_state << "\"" << endmsg;
502  return StatusCode::FAILURE;
503  }
505 
506  //--------------------------------------------------------------------------
507  // Initialize the list of top Services
508  //--------------------------------------------------------------------------
509  return m_svcLocator->service( "JobOptionsSvc" )
510  ->sysStart()
511  .andThen( [&]() { return m_messageSvc.as<IService>()->sysStart(); } )
512  .andThen( [&]() { return svcManager()->start(); } )
513  .andThen( [&]() { return algManager()->start(); } )
514  .andThen( [&]() {
515  //--------------------------------------------------------------------------
516  // Final steps: Inform user and change internal state
517  //--------------------------------------------------------------------------
518  log << MSG::INFO << "Application Manager Started successfully" << endmsg;
520  } );
521 }

◆ stop()

StatusCode ApplicationMgr::stop ( )
override

Definition at line 543 of file ApplicationMgr.cpp.

543  {
544 
546 
548  log << MSG::INFO << "Already Initialized!" << endmsg;
549  return StatusCode::SUCCESS;
550  }
552  log << MSG::FATAL << "stop: Invalid state \"" << m_state << "\"" << endmsg;
553  return StatusCode::FAILURE;
554  }
556 
557  // Stop independently managed Algorithms
558  return algManager()
559  ->stop()
560  //--------------------------------------------------------------------------
561  // Stop the list of top Services
562  //--------------------------------------------------------------------------
563  .andThen( [&]() { return svcManager()->stop(); } )
564  .andThen( [&]() { return m_messageSvc.as<IService>()->sysStop(); } )
565  .andThen( [&]() { return m_svcLocator->service( "JobOptionsSvc" )->sysStop(); } )
566  //--------------------------------------------------------------------------
567  // Final steps: Inform user and change internal state
568  //--------------------------------------------------------------------------
569  .andThen( [&]() {
570  log << MSG::INFO << "Application Manager Stopped successfully" << endmsg;
572  } );
573 }

◆ stopRun()

StatusCode ApplicationMgr::stopRun ( )
override

implementation of IEventProcessor::stopRun()

Definition at line 846 of file ApplicationMgr.cpp.

846  {
849  if ( m_processingMgr ) { return m_processingMgr->stopRun(); }
850  log << MSG::WARNING << "No EventLoop Manager specified " << endmsg;
851  return StatusCode::SUCCESS;
852  }
853  log << MSG::FATAL << "stopRun: Invalid state \"" << FSMState() << "\"" << endmsg;
854  return StatusCode::FAILURE;
855 }

◆ svcManager()

SmartIF<ISvcManager>& ApplicationMgr::svcManager ( )
inline

Definition at line 136 of file ApplicationMgr.h.

136  {
137  // Cache the casted pointer to ISvcManager
138  if ( !m_svcManager ) { m_svcManager = getManager<IService>(); }
139  return m_svcManager;
140  }

◆ sysFinalize()

StatusCode ApplicationMgr::sysFinalize ( )
inlineoverride

Definition at line 107 of file ApplicationMgr.h.

107 { return StatusCode::SUCCESS; }

◆ sysInitialize()

StatusCode ApplicationMgr::sysInitialize ( )
inlineoverride

Definition at line 101 of file ApplicationMgr.h.

101 { return StatusCode::SUCCESS; }

◆ sysReinitialize()

StatusCode ApplicationMgr::sysReinitialize ( )
inlineoverride

Definition at line 109 of file ApplicationMgr.h.

109 { return StatusCode::SUCCESS; }

◆ sysRestart()

StatusCode ApplicationMgr::sysRestart ( )
inlineoverride

Definition at line 111 of file ApplicationMgr.h.

111 { return StatusCode::SUCCESS; }

◆ sysStart()

StatusCode ApplicationMgr::sysStart ( )
inlineoverride

Definition at line 103 of file ApplicationMgr.h.

103 { return StatusCode::SUCCESS; }

◆ sysStop()

StatusCode ApplicationMgr::sysStop ( )
inlineoverride

Definition at line 105 of file ApplicationMgr.h.

105 { return StatusCode::SUCCESS; }

◆ targetFSMState()

Gaudi::StateMachine::State ApplicationMgr::targetFSMState ( ) const
override

Definition at line 862 of file ApplicationMgr.cpp.

862 { return m_targetState; }

◆ terminate()

StatusCode ApplicationMgr::terminate ( )
override

Definition at line 625 of file ApplicationMgr.cpp.

625  {
627 
629  log << MSG::INFO << "Already Offline" << endmsg;
630  return StatusCode::SUCCESS;
631  }
633  log << MSG::FATAL << "terminate: Invalid state \"" << m_state << "\"" << endmsg;
634  return StatusCode::FAILURE;
635  }
636  // release all Services
638 
640  log << MSG::INFO << "Application Manager Terminated successfully" << endmsg;
642  log << MSG::INFO << "Application Manager Terminated successfully with a user requested ScheduledStop" << endmsg;
643  } else {
644  log << MSG::ERROR << "Application Manager Terminated with error code " << m_returnCode.value() << endmsg;
645  }
646 
647  {
648  auto& opts = m_svcLocator->getOptsSvc();
649  // Force a disable the auditing of finalize for MessageSvc
650  opts.set( "MessageSvc.AuditFinalize", "false" );
651  // Force a disable the auditing of finalize for JobOptionsSvc
652  opts.set( "JobOptionsSvc.AuditFinalize", "false" );
653  }
654 
655  // if we have overriden it, restore the original ROOT error handler
656  if ( s_originalRootErrorHandler ) {
657  SetErrorHandler( s_originalRootErrorHandler );
658  s_originalRootErrorHandler = nullptr;
659  }
660  // make sure ROOTErrorHandlerAdapter (if in use) does not try to use the MessageSvc we are about to delete
661  s_messageSvcInstance = nullptr;
662  // finalize MessageSvc
663  auto svc = m_messageSvc.as<IService>();
664  if ( !svc ) {
665  log << MSG::ERROR << "Could not get the IService interface of the MessageSvc" << endmsg;
666  } else {
667  svc->sysFinalize().ignore();
668  svcManager()->removeService( svc ).ignore();
669  }
670 
671  // finalize JobOptionsSvc
672  svc = m_svcLocator->service( "JobOptionsSvc" );
673  if ( !svc ) {
674  log << MSG::ERROR << "Could not get the IService interface of the JobOptionsSvc" << endmsg;
675  } else {
676  svc->sysFinalize().ignore();
677  svcManager()->removeService( svc ).ignore();
678  }
679 
681  return StatusCode::SUCCESS;
682 }

Member Data Documentation

◆ m_actHistory

Gaudi::Property<bool> ApplicationMgr::m_actHistory { this, "ActivateHistory", false, "Activate HistorySvc" }
protected

Definition at line 262 of file ApplicationMgr.h.

◆ m_algManager

SmartIF<IAlgManager> ApplicationMgr::m_algManager
protected

Cached pointer to the manager of algorithms.

Definition at line 186 of file ApplicationMgr.h.

◆ m_appName

Gaudi::Property<std::string> ApplicationMgr::m_appName { this, "AppName", "ApplicationMgr", "The name of the application" }
protected

Definition at line 260 of file ApplicationMgr.h.

◆ m_appVersion

Gaudi::Property<std::string> ApplicationMgr::m_appVersion { this, "AppVersion", {}, "The version of the application" }
protected

Definition at line 261 of file ApplicationMgr.h.

◆ m_auditAlgs

Gaudi::Property<bool> ApplicationMgr::m_auditAlgs { this, "AuditAlgorithms", false }
protected

Definition at line 282 of file ApplicationMgr.h.

◆ m_auditSvcs

Gaudi::Property<bool> ApplicationMgr::m_auditSvcs { this, "AuditServices", false }
protected

Definition at line 281 of file ApplicationMgr.h.

◆ m_auditTools

Gaudi::Property<bool> ApplicationMgr::m_auditTools { this, "AuditTools", false }
protected

Defaults for auditors.

Definition at line 280 of file ApplicationMgr.h.

◆ m_classManager

SmartIF<DLLClassManager> ApplicationMgr::m_classManager
protected

Reference to the class manager.

Definition at line 191 of file ApplicationMgr.h.

◆ m_createSvcNameList

Gaudi::Property<std::vector<std::string> > ApplicationMgr::m_createSvcNameList
protected
Initial value:
{
this, "CreateSvc", {}, "List of extra services to be created" }

Definition at line 276 of file ApplicationMgr.h.

◆ m_declaredManagers

Gaudi::Property<std::vector<std::string> > ApplicationMgr::m_declaredManagers
protected

Property to declare the list of known managers.

Definition at line 180 of file ApplicationMgr.h.

◆ m_dllNameList

Gaudi::Property<std::vector<std::string> > ApplicationMgr::m_dllNameList { this, "Dlls", {}, "List of DDL's names" }
protected

Definition at line 247 of file ApplicationMgr.h.

◆ m_environment

Gaudi::Property<std::map<std::string, std::string> > ApplicationMgr::m_environment
protected
Initial value:
{
this, "Environment", {}, "Environment variables to set" }

Definition at line 284 of file ApplicationMgr.h.

◆ m_eventLoopMgr

Gaudi::Property<std::string> ApplicationMgr::m_eventLoopMgr
protected
Initial value:
{ this, "EventLoop", "EventLoopMgr", "Processing manager type",
"Service:IEventProcessor" }

Definition at line 255 of file ApplicationMgr.h.

◆ m_evtMax

Gaudi::Property<int> ApplicationMgr::m_evtMax { this, "EvtMax", -1, "Number of events to be processed (-1 means all events)" }
protected

Definition at line 241 of file ApplicationMgr.h.

◆ m_evtsel

Gaudi::Property<std::string> ApplicationMgr::m_evtsel { this, "EvtSel", {}, "Event selection" }
protected

Definition at line 257 of file ApplicationMgr.h.

◆ m_extSvcCreates

Gaudi::Property<bool> ApplicationMgr::m_extSvcCreates
protected
Initial value:
{ this, "ExtSvcCreates", true,
"LHCb (default) or ATLAS definition of \"ExtSvc\"" }

Definition at line 244 of file ApplicationMgr.h.

◆ m_extSvcNameList

Gaudi::Property<std::vector<std::string> > ApplicationMgr::m_extSvcNameList
protected
Initial value:
{
this, "ExtSvc", {}, "List of external services names", "vector<Service>" }

Definition at line 242 of file ApplicationMgr.h.

◆ m_histPersName

Gaudi::Property<std::string> ApplicationMgr::m_histPersName { this, "HistogramPersistency", "NONE", "Name of the Hist Pers Svc" }
protected

Definition at line 258 of file ApplicationMgr.h.

◆ m_jobOptionsPath

Gaudi::Property<std::string> ApplicationMgr::m_jobOptionsPath { this, "JobOptionsPath", {}, "The \"file\" to look for properties" }
protected

Definition at line 249 of file ApplicationMgr.h.

◆ m_jobOptionsPostAction

Gaudi::Property<std::string> ApplicationMgr::m_jobOptionsPostAction
protected
Initial value:
{
this, "JobOptionsPreAction", {}, "additional command to run on config" }

Definition at line 252 of file ApplicationMgr.h.

◆ m_jobOptionsPreAction

Gaudi::Property<std::string> ApplicationMgr::m_jobOptionsPreAction
protected
Initial value:
{
this, "JobOptionsPostAction", {}, "additional command to run on config" }

Definition at line 250 of file ApplicationMgr.h.

◆ m_jobOptionsSvcType

Gaudi::Property<std::string> ApplicationMgr::m_jobOptionsSvcType
protected
Initial value:
{ this, "JobOptionsSvcType", "JobOptionsSvc", "JobOptionsSvc type",
"Service:Gaudi::Interfaces::IOptionsSvc" }

Definition at line 218 of file ApplicationMgr.h.

◆ m_jobOptionsType

Gaudi::Property<std::string> ApplicationMgr::m_jobOptionsType { this, "JobOptionsType", "FILE", "Source type (e.g. dbase, file...)" }
protected

Definition at line 248 of file ApplicationMgr.h.

◆ m_loopCheck

Gaudi::Property<bool> ApplicationMgr::m_loopCheck
protected
Initial value:
{ this, "InitializationLoopCheck", true,
[this]( auto& ) { this->svcManager()->setLoopCheckEnabled( m_loopCheck ); },
"For ServiceMgr initialization loop checking" }

Definition at line 287 of file ApplicationMgr.h.

◆ m_managers

ManagersMap ApplicationMgr::m_managers
protected

Map of known component managers.

It contains (at least) the managers for IService and IAlgorithm. IAlgTool and IAuditor are not mandatory (but a missing manager for IAlgTool will probably not allow any job to run).

Definition at line 178 of file ApplicationMgr.h.

◆ m_messageSvc

SmartIF<IMessageSvc> ApplicationMgr::m_messageSvc
protected

Reference to the message service.

Definition at line 229 of file ApplicationMgr.h.

◆ m_messageSvcType

Gaudi::Property<std::string> ApplicationMgr::m_messageSvcType
protected
Initial value:
{ this, "MessageSvcType", "MessageSvc", "MessageSvc type",
"Service:IMessageSvc" }

Definition at line 216 of file ApplicationMgr.h.

◆ m_monitoringHub

Gaudi::Monitoring::Hub ApplicationMgr::m_monitoringHub
protected

Definition at line 235 of file ApplicationMgr.h.

◆ m_name

std::string ApplicationMgr::m_name = "ApplicationMgr"
protected

Name.

Definition at line 221 of file ApplicationMgr.h.

◆ m_okDlls

std::vector<std::string> ApplicationMgr::m_okDlls
private

names of successfully loaded dlls

Definition at line 313 of file ApplicationMgr.h.

◆ m_outputLevel

Gaudi::Property<int> ApplicationMgr::m_outputLevel { this, "OutputLevel", MSG::INFO, "Message output level" }
protected

Definition at line 259 of file ApplicationMgr.h.

◆ m_outStreamNameList

Gaudi::Property<std::vector<std::string> > ApplicationMgr::m_outStreamNameList
protected
Initial value:
{
this, "OutStream", {}, &ApplicationMgr::evtLoopPropertyHandler, "List of output stream names" }

Definition at line 214 of file ApplicationMgr.h.

◆ m_pluginDebugLevel

Gaudi::Property<int> ApplicationMgr::m_pluginDebugLevel
protected
Initial value:
{ this, "PluginDebugLevel", 0,
[this]( auto& ) {
<< "Updating Gaudi::PluginService::SetDebug(level) to level="
}
},
"Debug level for the plugin system" }

Definition at line 263 of file ApplicationMgr.h.

◆ m_printAlgsSequence

Gaudi::Property<bool> ApplicationMgr::m_printAlgsSequence
protected
Initial value:
{ this, "PrintAlgsSequence", false,
"Print the sequence of algorithms that have been loaded." }

Definition at line 303 of file ApplicationMgr.h.

◆ m_processingMgr

SmartIF<IEventProcessor> ApplicationMgr::m_processingMgr
protected

Reference to processing manager object.

Definition at line 231 of file ApplicationMgr.h.

◆ m_propertiesPrint

Gaudi::Property<bool> ApplicationMgr::m_propertiesPrint
protected
Initial value:
{ this, "PropertiesPrint", false,
"Flag to activate the printout of properties" }

Definition at line 296 of file ApplicationMgr.h.

◆ m_queueingProcessor

SmartIF<IQueueingEventProcessor> ApplicationMgr::m_queueingProcessor
protected

Reference to a queueing processing manager object.

Definition at line 233 of file ApplicationMgr.h.

◆ m_returnCode

Gaudi::Property<int> ApplicationMgr::m_returnCode
protected
Initial value:
{ this, "ReturnCode", Gaudi::ReturnCode::Success,
"Return code of the application. Set internally in case of error conditions." }

Property to record the error conditions occurring during the running.

Definition at line 300 of file ApplicationMgr.h.

◆ m_runable

SmartIF<IRunable> ApplicationMgr::m_runable
protected

Reference to the runable object.

Definition at line 230 of file ApplicationMgr.h.

◆ m_runableType

Gaudi::Property<std::string> ApplicationMgr::m_runableType { this, "Runable", "AppMgrRunable", "Runable type", "Service:IRunable" }
protected

Definition at line 254 of file ApplicationMgr.h.

◆ m_SIExit

Gaudi::Property<int> ApplicationMgr::m_SIExit
protected
Initial value:
{ this, "Exit", 0,
[this]( auto& ) {
::exit( 0 );
},
"For SI's \"Exit\" command via callback" }

Definition at line 201 of file ApplicationMgr.h.

◆ m_SIGo

Gaudi::Property<int> ApplicationMgr::m_SIGo
protected
Initial value:
{ this, "Go", 0,
[this]( auto& ) {
this->reinitialize().ignore();
},
"For SI's \"Go\" command via callback" }

Definition at line 193 of file ApplicationMgr.h.

◆ m_state

Gaudi::StateMachine::State ApplicationMgr::m_state = Gaudi::StateMachine::OFFLINE
protected

Internal State.

Definition at line 222 of file ApplicationMgr.h.

◆ m_stopOnSignal

Gaudi::Property<bool> ApplicationMgr::m_stopOnSignal
protected
Initial value:
{
this, "StopOnSignal", false, "Flag to enable/disable the signal handler that schedule a stop of the event loop" }

Property to enable/disable the "stop on signal" service.

See also
Gaudi::Utils::StopSignalHandler

Definition at line 293 of file ApplicationMgr.h.

◆ m_svcLocator

SmartIF<ISvcLocator> ApplicationMgr::m_svcLocator
mutableprotected

Reference to its own service locator (must be instantiated prior to any service!)

Definition at line 189 of file ApplicationMgr.h.

◆ m_svcManager

SmartIF<ISvcManager> ApplicationMgr::m_svcManager
protected

Cached pointer to the manager of services.

Definition at line 183 of file ApplicationMgr.h.

◆ m_svcMapping

Gaudi::Property<std::vector<std::string> > ApplicationMgr::m_svcMapping { this, "SvcMapping", {}, "Default mapping of services" }
protected

Definition at line 225 of file ApplicationMgr.h.

◆ m_svcOptMapping

Gaudi::Property<std::vector<std::string> > ApplicationMgr::m_svcOptMapping
protected
Initial value:
{
this, "SvcOptMapping", {}, "Default mapping of optional services" }

Definition at line 226 of file ApplicationMgr.h.

◆ m_targetState

Gaudi::StateMachine::State ApplicationMgr::m_targetState = Gaudi::StateMachine::OFFLINE
protected

Internal State.

Definition at line 223 of file ApplicationMgr.h.

◆ m_topAlgNameList

Gaudi::Property<std::vector<std::string> > ApplicationMgr::m_topAlgNameList
protected
Initial value:
{ this,
"TopAlg",
{},
"List of top level algorithms names",
"vector<Algorithm>" }

Definition at line 208 of file ApplicationMgr.h.

◆ m_useHiveAlgorithmManager

bool ApplicationMgr::m_useHiveAlgorithmManager
protected

Definition at line 310 of file ApplicationMgr.h.

◆ m_useMessageSvcForROOTMessages

Gaudi::Property<bool> ApplicationMgr::m_useMessageSvcForROOTMessages
protected
Initial value:
{ this, "UseMessageSvcForROOTMessages", true,
"Replace ROOT error handler with MessageSvc." }

Definition at line 306 of file ApplicationMgr.h.


The documentation for this class was generated from the following files:
ApplicationMgr::printAlgsSequences
void printAlgsSequences()
Print the sequence of algorithms that have been loaded.
Definition: ApplicationMgr.cpp:1108
Gaudi::ReturnCode::Success
constexpr int Success
Definition: AppReturnCode.h:26
MSG::DEBUG
@ DEBUG
Definition: IMessageSvc.h:25
IService
Definition: IService.h:28
Gaudi::Details::PropertyBase::name
const std::string name() const
property name
Definition: PropertyBase.h:39
ApplicationMgr::m_algManager
SmartIF< IAlgManager > m_algManager
Cached pointer to the manager of algorithms.
Definition: ApplicationMgr.h:186
Gaudi::Interfaces::IQueueingEventProcessor::pop
virtual std::optional< ResultType > pop()=0
Get the next available result.
Gaudi::ReturnCode::FinalizationFailure
constexpr int FinalizationFailure
Error codes for operation failures.
Definition: AppReturnCode.h:42
std::string
STL class.
ApplicationMgr::m_propertiesPrint
Gaudi::Property< bool > m_propertiesPrint
Definition: ApplicationMgr.h:296
Gaudi.Configuration.log
log
Definition: Configuration.py:28
std::move
T move(T... args)
ApplicationMgr::decodeDllNameList
StatusCode decodeDllNameList()
Definition: ApplicationMgr.cpp:1008
CommonMessaging< implements< IAppMgrUI, Gaudi::Interfaces::IQueueingEventProcessor, IService, IStateful, INamedInterface, IProperty > >::resetMessaging
MSG::Level resetMessaging()
Reinitialize internal states.
Definition: CommonMessaging.h:179
StatusCode::isSuccess
bool isSuccess() const
Definition: StatusCode.h:314
MSG::INFO
@ INFO
Definition: IMessageSvc.h:25
ApplicationMgr::outputLevelUpdate
void outputLevelUpdate() override
Function to call to update the outputLevel of the components (after a change in MessageSvc).
Definition: ApplicationMgr.cpp:1082
ApplicationMgr::m_runable
SmartIF< IRunable > m_runable
Reference to the runable object.
Definition: ApplicationMgr.h:230
ApplicationMgr::i_startup
StatusCode i_startup()
Internal startup routine.
Definition: ApplicationMgr.cpp:150
ApplicationMgr::stop
StatusCode stop() override
Definition: ApplicationMgr.cpp:543
ApplicationMgr::m_name
std::string m_name
Name.
Definition: ApplicationMgr.h:221
gaudirun.s
string s
Definition: gaudirun.py:346
System::getEnv
GAUDI_API std::string getEnv(const char *var)
get a particular environment variable (returning "UNKNOWN" if not set)
Definition: System.cpp:390
ApplicationMgr::m_messageSvcType
Gaudi::Property< std::string > m_messageSvcType
Definition: ApplicationMgr.h:216
std::vector< std::string >
std::find
T find(T... args)
PropertyHolder< CommonMessaging< implements< IAppMgrUI, Gaudi::Interfaces::IQueueingEventProcessor, IService, IStateful, INamedInterface, IProperty > > >::setProperty
StatusCode setProperty(const Gaudi::Details::PropertyBase &p)
Set the property from a property.
Definition: IProperty.h:39
check_ParticleID.props
props
Definition: check_ParticleID.py:21
GAUDI_MINOR_VERSION
#define GAUDI_MINOR_VERSION
Definition: GAUDI_VERSION.h:9
ApplicationMgr::name
const std::string & name() const override
Definition: ApplicationMgr.cpp:857
GaudiException
Definition: GaudiException.h:31
ApplicationMgr::FSMState
Gaudi::StateMachine::State FSMState() const override
Definition: ApplicationMgr.cpp:860
ApplicationMgr::sysStop
StatusCode sysStop() override
Definition: ApplicationMgr.h:105
ApplicationMgr::m_stopOnSignal
Gaudi::Property< bool > m_stopOnSignal
Property to enable/disable the "stop on signal" service.
Definition: ApplicationMgr.h:293
ServiceManager
Definition: ServiceManager.h:46
System::setEnv
GAUDI_API int setEnv(const std::string &name, const std::string &value, int overwrite=1)
Set an environment variables.
Definition: System.cpp:503
std::stringstream
STL class.
MSG::WARNING
@ WARNING
Definition: IMessageSvc.h:25
ApplicationMgr::m_okDlls
std::vector< std::string > m_okDlls
names of successfully loaded dlls
Definition: ApplicationMgr.h:313
System::typeinfoName
GAUDI_API const std::string typeinfoName(const std::type_info &)
Get platform independent information about the class type.
Definition: System.cpp:315
ApplicationMgr::i_delegateToEvtProc
static auto i_delegateToEvtProc(SELF *self, PIMPL &member, std::string_view method_name, METHOD &&method, ARGS &&... args)
Helper to delegate calls to event processor implementation.
Definition: ApplicationMgr.h:317
ApplicationMgr::terminate
StatusCode terminate() override
Definition: ApplicationMgr.cpp:625
ApplicationMgr::executeRun
StatusCode executeRun(int evtmax) override
implementation of IEventProcessor::executeRun(int)
Definition: ApplicationMgr.cpp:832
ApplicationMgr::finalize
StatusCode finalize() override
Definition: ApplicationMgr.cpp:578
PropertyHolder< CommonMessaging< implements< IAppMgrUI, Gaudi::Interfaces::IQueueingEventProcessor, IService, IStateful, INamedInterface, IProperty > > >::bindPropertiesTo
void bindPropertiesTo(Gaudi::Interfaces::IOptionsSvc &optsSvc)
Definition: PropertyHolder.h:252
ApplicationMgr::m_jobOptionsSvcType
Gaudi::Property< std::string > m_jobOptionsSvcType
Definition: ApplicationMgr.h:218
PropertyHolder< CommonMessaging< implements< IAppMgrUI, Gaudi::Interfaces::IQueueingEventProcessor, IService, IStateful, INamedInterface, IProperty > > >::property
Gaudi::Details::PropertyBase * property(std::string_view name) const
\fixme property and bindPropertiesTo should be protected
Definition: PropertyHolder.h:238
ApplicationMgr::createSvcNameListHandler
void createSvcNameListHandler(Gaudi::Details::PropertyBase &)
Definition: ApplicationMgr.cpp:927
AlgorithmManager
Definition: AlgorithmManager.h:42
std::vector::push_back
T push_back(T... args)
DLLClassManager
Definition: DLLClassManager.h:38
PropertyHolder< CommonMessaging< implements< IAppMgrUI, Gaudi::Interfaces::IQueueingEventProcessor, IService, IStateful, INamedInterface, IProperty > > >::getProperties
const std::vector< Gaudi::Details::PropertyBase * > & getProperties() const override
get all properties
Definition: PropertyHolder.h:222
ApplicationMgr::svcManager
SmartIF< ISvcManager > & svcManager()
Definition: ApplicationMgr.h:136
ApplicationMgr::m_dllNameList
Gaudi::Property< std::vector< std::string > > m_dllNameList
Definition: ApplicationMgr.h:247
IProperty
Definition: IProperty.h:33
ApplicationMgr::dllNameListHandler
void dllNameListHandler(Gaudi::Details::PropertyBase &theProp)
Definition: ApplicationMgr.cpp:999
GaudiPython.Pythonizations.self
self
Definition: Pythonizations.py:578
Gaudi::Utils::TypeNameString
Helper class to parse a string of format "type/name".
Definition: TypeNameString.h:20
ApplicationMgr::m_returnCode
Gaudi::Property< int > m_returnCode
Property to record the error conditions occurring during the running.
Definition: ApplicationMgr.h:300
Gaudi::Time::format
std::string format(bool local, std::string spec="%c") const
Format the time using strftime.
Definition: Time.cpp:262
Gaudi::StateMachine::CONFIGURED
@ CONFIGURED
Definition: StateMachine.h:24
GaudiPython.Pythonizations.ctx
ctx
Definition: Pythonizations.py:578
StatusCode
Definition: StatusCode.h:65
gaudirun.opts
opts
Definition: gaudirun.py:336
ApplicationMgr::configure
StatusCode configure() override
Definition: ApplicationMgr.cpp:271
IInterface::interfaceID
static const InterfaceID & interfaceID()
Return an instance of InterfaceID identifying the interface.
Definition: IInterface.h:248
ProduceConsume.j
j
Definition: ProduceConsume.py:104
ApplicationMgr::m_jobOptionsPostAction
Gaudi::Property< std::string > m_jobOptionsPostAction
Definition: ApplicationMgr.h:252
Gaudi::StateMachine::OFFLINE
@ OFFLINE
Definition: StateMachine.h:23
std::string::c_str
T c_str(T... args)
Gaudi::Interfaces::IQueueingEventProcessor::push
virtual void push(EventContext &&ctx)=0
Schedule the processing of an event.
Gaudi::Property::declareUpdateHandler
Details::PropertyBase & declareUpdateHandler(std::function< void(Details::PropertyBase &)> fun) override
set new callback for update
Definition: Property.h:144
ApplicationMgr::m_jobOptionsPreAction
Gaudi::Property< std::string > m_jobOptionsPreAction
Definition: ApplicationMgr.h:250
Gaudi::Property::value
const ValueType & value() const
Definition: Property.h:237
Gaudi::ReturnCode::ScheduledStop
constexpr int ScheduledStop
Definition: AppReturnCode.h:35
ApplicationMgr::m_svcLocator
SmartIF< ISvcLocator > m_svcLocator
Reference to its own service locator (must be instantiated prior to any service!)
Definition: ApplicationMgr.h:189
ApplicationMgr::m_appVersion
Gaudi::Property< std::string > m_appVersion
Definition: ApplicationMgr.h:261
ApplicationMgr::sysReinitialize
StatusCode sysReinitialize() override
Definition: ApplicationMgr.h:109
ApplicationMgr::m_jobOptionsType
Gaudi::Property< std::string > m_jobOptionsType
Definition: ApplicationMgr.h:248
ApplicationMgr::sysRestart
StatusCode sysRestart() override
Definition: ApplicationMgr.h:111
ON_DEBUG
#define ON_DEBUG
Definition: ApplicationMgr.cpp:40
ApplicationMgr::m_svcManager
SmartIF< ISvcManager > m_svcManager
Cached pointer to the manager of services.
Definition: ApplicationMgr.h:183
ApplicationMgr::m_runableType
Gaudi::Property< std::string > m_runableType
Definition: ApplicationMgr.h:254
endmsg
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition: MsgStream.h:202
System::isEnvSet
GAUDI_API bool isEnvSet(const char *var)
Check if an environment variable is set or not.
Definition: System.cpp:410
std::map< std::string, unsigned int >
ApplicationMgr::m_topAlgNameList
Gaudi::Property< std::vector< std::string > > m_topAlgNameList
Definition: ApplicationMgr.h:208
ApplicationMgr::m_processingMgr
SmartIF< IEventProcessor > m_processingMgr
Reference to processing manager object.
Definition: ApplicationMgr.h:231
Gaudi::StateMachine::RUNNING
@ RUNNING
Definition: StateMachine.h:26
MsgStream
Definition: MsgStream.h:33
ApplicationMgr::m_svcMapping
Gaudi::Property< std::vector< std::string > > m_svcMapping
Definition: ApplicationMgr.h:225
MSG::FATAL
@ FATAL
Definition: IMessageSvc.h:25
Gaudi::PluginService::v1::SetDebug
GAUDIPS_API void SetDebug(int debugLevel)
Backward compatibility with Reflex.
Definition: PluginServiceV1.cpp:323
ApplicationMgr::m_svcOptMapping
Gaudi::Property< std::vector< std::string > > m_svcOptMapping
Definition: ApplicationMgr.h:226
ApplicationMgr::decodeExtSvcNameList
StatusCode decodeExtSvcNameList()
Definition: ApplicationMgr.cpp:970
gaudiComponentHelp.properties
properties
Definition: gaudiComponentHelp.py:68
ApplicationMgr::m_extSvcNameList
Gaudi::Property< std::vector< std::string > > m_extSvcNameList
Definition: ApplicationMgr.h:242
ApplicationMgr::m_eventLoopMgr
Gaudi::Property< std::string > m_eventLoopMgr
Definition: ApplicationMgr.h:255
std::vector::rend
T rend(T... args)
StatusCode::ignore
const StatusCode & ignore() const
Allow discarding a StatusCode without warning.
Definition: StatusCode.h:139
SmartIF::as
SmartIF< IFace > as() const
return a new SmartIF instance to another interface
Definition: SmartIF.h:117
ApplicationMgr::m_extSvcCreates
Gaudi::Property< bool > m_extSvcCreates
Definition: ApplicationMgr.h:244
ApplicationMgr::m_useMessageSvcForROOTMessages
Gaudi::Property< bool > m_useMessageSvcForROOTMessages
Definition: ApplicationMgr.h:306
StatusCode::isFailure
bool isFailure() const
Definition: StatusCode.h:129
ApplicationMgr::m_createSvcNameList
Gaudi::Property< std::vector< std::string > > m_createSvcNameList
Definition: ApplicationMgr.h:276
ApplicationMgr::m_actHistory
Gaudi::Property< bool > m_actHistory
Definition: ApplicationMgr.h:262
MSG::Level
Level
Definition: IMessageSvc.h:25
ApplicationMgr::serviceLocator
SmartIF< ISvcLocator > & serviceLocator() const override
Needed to locate the message service.
Definition: ApplicationMgr.h:149
PropertyHolder< CommonMessaging< implements< IAppMgrUI, Gaudi::Interfaces::IQueueingEventProcessor, IService, IStateful, INamedInterface, IProperty > > >::declareProperty
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Details::PropertyBase &prop)
Declare a property.
Definition: PropertyHolder.h:106
ApplicationMgr::m_monitoringHub
Gaudi::Monitoring::Hub m_monitoringHub
Definition: ApplicationMgr.h:235
MSG::VERBOSE
@ VERBOSE
Definition: IMessageSvc.h:25
StatusCode::SUCCESS
constexpr static const auto SUCCESS
Definition: StatusCode.h:100
std::endl
T endl(T... args)
ApplicationMgr::decodeCreateSvcNameList
StatusCode decodeCreateSvcNameList()
Definition: ApplicationMgr.cpp:936
SmartIF::get
TYPE * get() const
Get interface pointer.
Definition: SmartIF.h:86
ApplicationMgr::m_appName
Gaudi::Property< std::string > m_appName
Definition: ApplicationMgr.h:260
gaudirun.args
args
Definition: gaudirun.py:336
MSG::ALWAYS
@ ALWAYS
Definition: IMessageSvc.h:25
std::map::begin
T begin(T... args)
MSG::NIL
@ NIL
Definition: IMessageSvc.h:25
Gaudi::StateMachine::INITIALIZED
@ INITIALIZED
Definition: StateMachine.h:25
MSG::ERROR
@ ERROR
Definition: IMessageSvc.h:25
Gaudi::Time::current
static Time current()
Returns the current time.
Definition: Time.cpp:119
ApplicationMgr::evtLoopPropertyHandler
void evtLoopPropertyHandler(Gaudi::Details::PropertyBase &theProp)
Definition: ApplicationMgr.cpp:917
compareRootHistos.retval
retval
Definition: compareRootHistos.py:499
ApplicationMgr::m_queueingProcessor
SmartIF< IQueueingEventProcessor > m_queueingProcessor
Reference to a queueing processing manager object.
Definition: ApplicationMgr.h:233
ApplicationMgr::m_outputLevel
Gaudi::Property< int > m_outputLevel
Definition: ApplicationMgr.h:259
ApplicationMgr::m_messageSvc
SmartIF< IMessageSvc > m_messageSvc
Reference to the message service.
Definition: ApplicationMgr.h:229
ApplicationMgr::m_managers
ManagersMap m_managers
Map of known component managers.
Definition: ApplicationMgr.h:178
std::string::empty
T empty(T... args)
ApplicationMgr::m_state
Gaudi::StateMachine::State m_state
Internal State.
Definition: ApplicationMgr.h:222
ApplicationMgr::sysStart
StatusCode sysStart() override
Definition: ApplicationMgr.h:103
ApplicationMgr::m_jobOptionsPath
Gaudi::Property< std::string > m_jobOptionsPath
Definition: ApplicationMgr.h:249
ApplicationMgr::m_printAlgsSequence
Gaudi::Property< bool > m_printAlgsSequence
Definition: ApplicationMgr.h:303
std::stringstream::str
T str(T... args)
System::hostName
GAUDI_API const std::string & hostName()
Host name.
Definition: System.cpp:320
ApplicationMgr::extSvcNameListHandler
void extSvcNameListHandler(Gaudi::Details::PropertyBase &theProp)
Definition: ApplicationMgr.cpp:960
std::map::end
T end(T... args)
ApplicationMgr::GoToState
StatusCode GoToState(Gaudi::StateMachine::State state, bool ignoreFailures=false)
Reach a state from current state (whichever it is) going through the correct transitions.
Definition: ApplicationMgr.cpp:687
GAUDI_MAJOR_VERSION
#define GAUDI_MAJOR_VERSION
Definition: GAUDI_VERSION.h:8
ApplicationMgr::reinitialize
StatusCode reinitialize() override
Definition: ApplicationMgr.cpp:867
ApplicationMgr::m_loopCheck
Gaudi::Property< bool > m_loopCheck
Definition: ApplicationMgr.h:287
StatusCode::FAILURE
constexpr static const auto FAILURE
Definition: StatusCode.h:101
Gaudi::Interfaces::IQueueingEventProcessor::empty
virtual bool empty() const =0
Tell if the processor has events in the queues.
ApplicationMgr::m_environment
Gaudi::Property< std::map< std::string, std::string > > m_environment
Definition: ApplicationMgr.h:284
compareRootHistos.state
state
Definition: compareRootHistos.py:496
AlgorithmManager::typeAliases
AlgTypeAliasesMap & typeAliases()
Definition: AlgorithmManager.h:92
ApplicationMgr::m_pluginDebugLevel
Gaudi::Property< int > m_pluginDebugLevel
Definition: ApplicationMgr.h:263
ApplicationMgr::algManager
SmartIF< IAlgManager > & algManager()
Definition: ApplicationMgr.h:142
std::numeric_limits
Gaudi::Property< bool >
ApplicationMgr::m_classManager
SmartIF< DLLClassManager > m_classManager
Reference to the class manager.
Definition: ApplicationMgr.h:191
ApplicationMgr::start
StatusCode start() override
Definition: ApplicationMgr.cpp:492
ON_VERBOSE
#define ON_VERBOSE
Definition: ApplicationMgr.cpp:41
std::vector::rbegin
T rbegin(T... args)
ApplicationMgr::m_evtMax
Gaudi::Property< int > m_evtMax
Definition: ApplicationMgr.h:241
ApplicationMgr::m_targetState
Gaudi::StateMachine::State m_targetState
Internal State.
Definition: ApplicationMgr.h:223
ApplicationMgr::initialize
StatusCode initialize() override
Definition: ApplicationMgr.cpp:440
IProperty::setProperty
StatusCode setProperty(const Gaudi::Details::PropertyBase &p)
Set the property from a property.
Definition: IProperty.h:39
GAUDI_PATCH_VERSION
#define GAUDI_PATCH_VERSION
Definition: GAUDI_VERSION.h:10