| The Gaudi Framework v29r0 (ff2e7097)

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

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

Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
HiveSlimEventLoopMgr Class Reference

`#include <GaudiHive/HiveSlimEventLoopMgr.h>`

Inheritance diagram for HiveSlimEventLoopMgr:
[legend]
Collaboration diagram for HiveSlimEventLoopMgr:
[legend]

## Public Member Functions
| HiveSlimEventLoopMgr (const std::string &nam, ISvcLocator *svcLoc)
| Standard Constructor. More...
| ~HiveSlimEventLoopMgr () override
| Standard Destructor. More...
StatusCode | getEventRoot (IOpaqueAddress *&refpAddr)
| Create event address using event selector. More...
StatusCode | initialize () override
| implementation of IService::initialize More...
StatusCode | reinitialize () override
| implementation of IService::reinitialize More...
StatusCode | stop () override
| implementation of IService::stop More...
StatusCode | finalize () override
| implementation of IService::finalize More...
StatusCode | nextEvent (int maxevt) override
| implementation of IService::nextEvent More...
StatusCode | executeEvent (void *par) override
| implementation of IEventProcessor::executeEvent(void* par) More...
StatusCode | executeRun (int maxevt) override
| implementation of IEventProcessor::executeRun() More...
StatusCode | stopRun () override
| implementation of IEventProcessor::stopRun() More...
Public Member Functions inherited from extends< Service, IEventProcessor >
void * | i_cast (const InterfaceID &tid) const override
| Implementation of IInterface::i_cast. More...
StatusCode | queryInterface (const InterfaceID &ti, void **pp) override
| Implementation of IInterface::queryInterface. More...
std::vector< std::string > | getInterfaceNames () const override
| Implementation of IInterface::getInterfaceNames. More...
| ~extends () override=default
| Virtual destructor. More...
Public Member Functions inherited from Service
const std::string & | name () const override
| Retrieve name of the service. More...
StatusCode | configure () override
StatusCode | initialize () override
StatusCode | start () override
StatusCode | stop () override
StatusCode | finalize () override
StatusCode | terminate () override
Gaudi::StateMachine::State | FSMState () const override
Gaudi::StateMachine::State | targetFSMState () const override
StatusCode | reinitialize () override
StatusCode | restart () override
StatusCode | sysInitialize () override
| Initialize Service. More...
StatusCode | sysStart () override
| Initialize Service. More...
StatusCode | sysStop () override
| Initialize Service. More...
StatusCode | sysFinalize () override
| Finalize Service. More...
StatusCode | sysReinitialize () override
| Re-initialize the Service. More...
StatusCode | sysRestart () override
| Re-initialize the Service. More...
| Service (std::string name, ISvcLocator *svcloc)
| Standard Constructor. More...
SmartIF< ISvcLocator > & | serviceLocator () const override
| Retrieve pointer to service locator. More...
StatusCode | setProperties ()
| Method for setting declared properties to the values specified for the job. More...
template<class T >
StatusCode | service (const std::string &name, const T *&psvc, bool createIf=true) const
| Access a service by name, creating it if it doesn't already exist. More...
template<class T >
StatusCode | service (const std::string &name, T *&psvc, bool createIf=true) const
template<typename IFace = IService>
SmartIF< IFace > | service (const std::string &name, bool createIf=true) const
template<class T >
StatusCode | service (const std::string &svcType, const std::string &svcName, T *&psvc) const
| Access a service by name and type, creating it if it doesn't already exist. More...
template<class T >
StatusCode | declareTool (ToolHandle< T > &handle, std::string toolTypeAndName, bool createIf=true)
| Declare used tool. More...
SmartIF< IAuditorSvc > & | auditorSvc () const
| The standard auditor service.May not be invoked before sysInitialize() has been invoked. More...
Public Member Functions inherited from PropertyHolder< CommonMessaging< implements< IService, IProperty, IStateful > > >
| PropertyHolder ()=default
| ~PropertyHolder () override=default
Gaudi::Details::PropertyBase & | declareProperty (Gaudi::Details::PropertyBase &prop)
| Declare a property. More...
Gaudi::Details::PropertyBase * | declareProperty (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::PropertyBase * | declareProperty (const std::string &name, TYPE &value, const std::string &doc="none") const
Gaudi::Details::PropertyBase * | declareProperty (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::PropertyBase * | declareRemoteProperty (const std::string &name, IProperty *rsvc, const std::string &rname="")
| Declare a remote property. More...
StatusCode | setProperty (const Gaudi::Details::PropertyBase &p) override
| set the property form another property More...
StatusCode | setProperty (const std::string &s) override
| set the property from the formatted string More...
StatusCode | setProperty (const std::string &n, const std::string &v) override
| set the property from name and the value More...
StatusCode | setProperty (const std::string &name, const TYPE &value)
| set the property form the value More...
StatusCode | getProperty (Gaudi::Details::PropertyBase *p) const override
| get the property More...
const Gaudi::Details::PropertyBase & | getProperty (const std::string &name) const override
| get the property by name More...
StatusCode | getProperty (const std::string &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 (const std::string &name) const override
| Return true if we have a property with the given name. More...
| PropertyHolder (const PropertyHolder &)=delete
PropertyHolder & | operator= (const PropertyHolder &)=delete
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, GaudiHandleBase &ref, const std::string &doc="none")
| Specializations for various GaudiHandles. More...
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, GaudiHandleArrayBase &ref, const std::string &doc="none")
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, DataObjectHandleBase &ref, const std::string &doc="none")
Public Member Functions inherited from CommonMessagingBase
virtual | ~CommonMessagingBase ()=default
| Virtual destructor. More...
SmartIF< IMessageSvc > & | msgSvc () const
| The standard message service. More...
MsgStream & | msgStream () const
| Return an uninitialized MsgStream. More...
MsgStream & | msgStream (const MSG::Level level) const
| Predefined configurable message stream for the efficient printouts. More...
MsgStream & | always () const
| shortcut for the method msgStream(MSG::ALWAYS) More...
MsgStream & | fatal () const
| shortcut for the method msgStream(MSG::FATAL) More...
MsgStream & | err () const
| shortcut for the method msgStream(MSG::ERROR) More...
MsgStream & | error () const
| shortcut for the method msgStream(MSG::ERROR) More...
MsgStream & | warning () const
| shortcut for the method msgStream(MSG::WARNING) More...
MsgStream & | info () const
| shortcut for the method msgStream(MSG::INFO) More...
MsgStream & | debug () const
| shortcut for the method msgStream(MSG::DEBUG) More...
MsgStream & | verbose () const
| shortcut for the method msgStream(MSG::VERBOSE) More...
MsgStream & | msg () const
| shortcut for the method msgStream(MSG::INFO) More...
MSG::Level | msgLevel () const
| get the output level from the embedded MsgStream More...
MSG::Level | outputLevel () const __attribute__((deprecated))
| Backward compatibility function for getting the output level. More...
bool | msgLevel (MSG::Level lvl) const
| get the output level from the embedded MsgStream More...
Public Member Functions inherited from extend_interfaces< Interfaces... >
| ~extend_interfaces () override=default
| Virtual destructor. More...

## Protected Member Functions
StatusCode | clearWBSlot (int evtSlot)
| Clear a slot in the WB. More...
StatusCode | declareEventRootAddress ()
| Declare the root address of the event. More...
StatusCode | createEventContext (EventContext *&eventContext, int createdEvents)
| Create event context. More...
StatusCode | drainScheduler (int &finishedEvents)
| Drain the scheduler from all actions that may be queued. More...
Protected Member Functions inherited from Service
| ~Service () override
| Standard Destructor. More...
int | outputLevel () const
| get the `Service's` output level More...
Protected Member Functions inherited from PropertyHolder< CommonMessaging< implements< IService, IProperty, IStateful > > >
Gaudi::Details::PropertyBase * | property (const std::string &name) const
Protected Member Functions inherited from CommonMessaging< implements< IService, IProperty, IStateful > >
void | updateMsgStreamOutputLevel (int level)
| Update the output level of the cached MsgStream. More...

## Protected Attributes
Gaudi::Property< std::string > | m_histPersName {this, "HistogramPersistency", "", ""}
Gaudi::Property< std::string > | m_evtsel {this, "EvtSel", "", ""}
Gaudi::Property< bool > | m_warnings {this, "Warnings", true, "Set this property to false to suppress warning messages"}
Gaudi::Property< std::string > | m_schedulerName
Gaudi::Property< std::vector< unsigned int > > | m_eventNumberBlacklist {this, "EventNumberBlackList", {}, ""}
SmartIF< IDataManagerSvc > | m_evtDataMgrSvc
| Reference to the Event Data Service's IDataManagerSvc interface. More...
SmartIF< IEvtSelector > | m_evtSelector
| Reference to the Event Selector. More...
IEvtSelector::Context * | m_evtContext = nullptr
| Event Iterator. More...
SmartIF< IDataManagerSvc > | m_histoDataMgrSvc
| Reference to the Histogram Data Service. More...
SmartIF< IConversionSvc > | m_histoPersSvc
| Reference to the Histogram Persistency Service. More...
SmartIF< IHiveWhiteBoard > | m_whiteboard
| Reference to the Whiteboard. More...
SmartIF< IAlgResourcePool > | m_algResourcePool
| Reference to the Algorithm resource pool. More...
SmartIF< IAlgExecStateSvc > | m_algExecStateSvc
| Reference to the AlgExecStateSvc. More...
SmartIF< IProperty > | m_appMgrProperty
| Property interface of ApplicationMgr. More...
bool | m_endEventFired = false
| Flag to avoid to fire the EnvEvent incident twice in a row (and also not before the first event) More...
SmartIF< IScheduler > | m_schedulerSvc
| A shortcut for the scheduler. More...
SmartIF< IIncidentListener > | m_abortEventListener
| Instance of the incident listener waiting for AbortEvent. More...
bool | m_scheduledStop = false
| Scheduled stop of event processing. More...
SmartIF< IAppMgrUI > | m_appMgrUI
| Reference to the IAppMgrUI interface of the application manager. More...
SmartIF< IIncidentSvc > | m_incidentSvc
| Reference to the incident service. More...
boost::dynamic_bitset * | m_blackListBS = nullptr
Protected Attributes inherited from Service
Gaudi::StateMachine::State | m_state = Gaudi::StateMachine::OFFLINE
| Service state. More...
Gaudi::StateMachine::State | m_targetState = Gaudi::StateMachine::OFFLINE
| Service state. More...
Gaudi::Property< int > | m_outputLevel {this, "OutputLevel", MSG::NIL, "output level"}
Gaudi::Property< bool > | m_auditInit {this, "AuditServices", false, "[[deprecated]] unused"}
Gaudi::Property< bool > | m_auditorInitialize {this, "AuditInitialize", false, "trigger auditor on initialize()"}
Gaudi::Property< bool > | m_auditorStart {this, "AuditStart", false, "trigger auditor on start()"}
Gaudi::Property< bool > | m_auditorStop {this, "AuditStop", false, "trigger auditor on stop()"}
Gaudi::Property< bool > | m_auditorFinalize {this, "AuditFinalize", false, "trigger auditor on finalize()"}
Gaudi::Property< bool > | m_auditorReinitialize {this, "AuditReinitialize", false, "trigger auditor on reinitialize()"}
Gaudi::Property< bool > | m_auditorRestart {this, "AuditRestart", false, "trigger auditor on restart()"}
SmartIF< IAuditorSvc > | m_pAuditorSvc
| Auditor Service. More...

## Additional Inherited Members
Public Types inherited from extends< Service, IEventProcessor >
using | base_class = extends
| Typedef to this class. More...
using | extend_interfaces_base = extend_interfaces< Interfaces... >
| Typedef to the base of this class. More...
Public Types inherited from Service
typedef Gaudi::PluginService::Factory< IService *, const std::string &, ISvcLocator * > | Factory
Public Types inherited from PropertyHolder< CommonMessaging< implements< IService, IProperty, IStateful > > >
using | PropertyHolderImpl = PropertyHolder< CommonMessaging< implements< IService, IProperty, IStateful > > >
| Typedef used to refer to this class from derived classes, as in. More...
Public Types inherited from CommonMessaging< implements< IService, IProperty, IStateful > >
using | base_class = CommonMessaging
Public Types inherited from extend_interfaces< Interfaces... >
using | ext_iids = typename Gaudi::interface_list_cat< typename Interfaces::ext_iids... >::type
| take union of the ext_iids of all Interfaces... More...

## Detailed Description

Definition at line 26 of file HiveSlimEventLoopMgr.h.

## Constructor & Destructor Documentation

HiveSlimEventLoopMgr::HiveSlimEventLoopMgr | ( | const std::string & | nam,
|  | ISvcLocator * | svcLoc
| ) |  |

Standard Constructor.

Definition at line 44 of file HiveSlimEventLoopMgr.cpp.

45 : base_class( name, svcLoc ), m_appMgrUI( svcLoc )
46 {
47 }
Service::name
const std::string & name() const override
Retrieve name of the service.
Definition: Service.cpp:289
HiveSlimEventLoopMgr::m_appMgrUI
SmartIF< IAppMgrUI > m_appMgrUI
Reference to the IAppMgrUI interface of the application manager.
Definition: HiveSlimEventLoopMgr.h:73
extends< Service, IEventProcessor >::base_class
extends base_class
Typedef to this class.
Definition: extends.h:15

HiveSlimEventLoopMgr::~HiveSlimEventLoopMgr | ( |  | ) |
| override

Standard Destructor.

Definition at line 52 of file HiveSlimEventLoopMgr.cpp.

53 {
54 m_histoDataMgrSvc.reset();
55 m_histoPersSvc.reset();
56 m_evtDataMgrSvc.reset();
57 m_whiteboard.reset();
58 m_evtSelector.reset();
59 if ( m_evtContext ) delete m_evtContext;
60 }
HiveSlimEventLoopMgr::m_evtDataMgrSvc
SmartIF< IDataManagerSvc > m_evtDataMgrSvc
Reference to the Event Data Service&#39;s IDataManagerSvc interface.
Definition: HiveSlimEventLoopMgr.h:38
HiveSlimEventLoopMgr::m_whiteboard
SmartIF< IHiveWhiteBoard > m_whiteboard
Reference to the Whiteboard.
Definition: HiveSlimEventLoopMgr.h:48
HiveSlimEventLoopMgr::m_histoPersSvc
SmartIF< IConversionSvc > m_histoPersSvc
Reference to the Histogram Persistency Service.
Definition: HiveSlimEventLoopMgr.h:46
HiveSlimEventLoopMgr::m_histoDataMgrSvc
SmartIF< IDataManagerSvc > m_histoDataMgrSvc
Reference to the Histogram Data Service.
Definition: HiveSlimEventLoopMgr.h:44
HiveSlimEventLoopMgr::m_evtSelector
SmartIF< IEvtSelector > m_evtSelector
Reference to the Event Selector.
Definition: HiveSlimEventLoopMgr.h:40
SmartIF::reset
void reset(TYPE *ptr=nullptr)
Set the internal pointer to the passed one disposing of the old one.
Definition: SmartIF.h:92
HiveSlimEventLoopMgr::m_evtContext
IEvtSelector::Context * m_evtContext
Event Iterator.
Definition: HiveSlimEventLoopMgr.h:42

## Member Function Documentation

StatusCode HiveSlimEventLoopMgr::clearWBSlot | ( | int | evtSlot | ) |
| protected

Clear a slot in the WB.

Definition at line 654 of file HiveSlimEventLoopMgr.cpp.

655 {
656 StatusCode sc = m_whiteboard->clearStore( evtSlot );
657 if ( !sc.isSuccess() ) {
658 warning() << "Clear of Event data store failed" << endmsg;
659 }
660 return m_whiteboard->freeStore( evtSlot );
661 }
StatusCode::isSuccess
bool isSuccess() const
Test for a status code of SUCCESS.
Definition: StatusCode.h:75
HiveSlimEventLoopMgr::m_whiteboard
SmartIF< IHiveWhiteBoard > m_whiteboard
Reference to the Whiteboard.
Definition: HiveSlimEventLoopMgr.h:48
CommonMessagingBase::warning
MsgStream & warning() const
shortcut for the method msgStream(MSG::WARNING)
Definition: CommonMessaging.h:114
IHiveWhiteBoard::clearStore
virtual StatusCode clearStore(size_t partitionIndex)=0
Clear an given &#39;slot&#39;.
StatusCode
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:28
IHiveWhiteBoard::freeStore
virtual StatusCode freeStore(size_t partitionIndex)=0
Free a store partition.
endmsg
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition: MsgStream.h:209

StatusCode HiveSlimEventLoopMgr::createEventContext | ( | EventContext *& | eventContext,
|  | int | createdEvents
| ) |  |
| protected

Create event context.

Definition at line 572 of file HiveSlimEventLoopMgr.cpp.

573 {
574 evtContext = new EventContext;
575
576 evtContext->set( createdEvts, m_whiteboard->allocateStore( createdEvts ) );
577
578 m_algExecStateSvc->reset( *evtContext );
579
580 StatusCode sc = m_whiteboard->selectStore( evtContext->slot() );
581 if ( sc.isFailure() ) {
582 warning() << "Slot " << evtContext->slot() << " could not be selected for the WhiteBoard" << endmsg;
583 }
584 return sc;
585 }
EventContext::set
void set(const ContextEvt_t &e=0, const ContextID_t &s=INVALID_CONTEXT_ID)
Definition: EventContext.h:44
HiveSlimEventLoopMgr::m_whiteboard
SmartIF< IHiveWhiteBoard > m_whiteboard
Reference to the Whiteboard.
Definition: HiveSlimEventLoopMgr.h:48
EventContext
This class represents an entry point to all the event specific data.
Definition: EventContext.h:24
StatusCode::isFailure
bool isFailure() const
Test for a status code of FAILURE.
Definition: StatusCode.h:86
IHiveWhiteBoard::selectStore
virtual StatusCode selectStore(size_t partitionIndex)=0
Activate an given &#39;slot&#39; for all subsequent calls within the same thread id.
CommonMessagingBase::warning
MsgStream & warning() const
shortcut for the method msgStream(MSG::WARNING)
Definition: CommonMessaging.h:114
StatusCode
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:28
IAlgExecStateSvc::reset
virtual void reset(const EventContext &ctx)=0
HiveSlimEventLoopMgr::m_algExecStateSvc
SmartIF< IAlgExecStateSvc > m_algExecStateSvc
Reference to the AlgExecStateSvc.
Definition: HiveSlimEventLoopMgr.h:52
IHiveWhiteBoard::allocateStore
virtual size_t allocateStore(int evtnumber)=0
Allocate a store partition for new event.
endmsg
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition: MsgStream.h:209

StatusCode HiveSlimEventLoopMgr::declareEventRootAddress | ( |  | ) |
| protected

Declare the root address of the event.

Definition at line 544 of file HiveSlimEventLoopMgr.cpp.

545 {
546
547 StatusCode sc;
548 if ( m_evtContext ) {
549 //---This is the "event iterator" context from EventSelector
550 IOpaqueAddress* pAddr = 0;
551 sc = getEventRoot( pAddr );
552 if ( !sc.isSuccess() ) {
553 info() << "No more events in event selection " << endmsg;
554 return StatusCode::FAILURE;
555 }
556 sc = m_evtDataMgrSvc->setRoot( "/Event", pAddr );
557 if ( !sc.isSuccess() ) {
558 warning() << "Error declaring event root address." << endmsg;
559 }
560 } else {
561 //---In case of no event selector----------------
562 sc = m_evtDataMgrSvc->setRoot( "/Event", new DataObject() );
563 if ( !sc.isSuccess() ) {
564 warning() << "Error declaring event root DataObject" << endmsg;
565 }
566 }
567 return StatusCode::SUCCESS;
568 }
StatusCode::SUCCESS
Definition: StatusCode.h:31
HiveSlimEventLoopMgr::m_evtDataMgrSvc
SmartIF< IDataManagerSvc > m_evtDataMgrSvc
Reference to the Event Data Service&#39;s IDataManagerSvc interface.
Definition: HiveSlimEventLoopMgr.h:38
StatusCode::FAILURE
Definition: StatusCode.h:31
CommonMessagingBase::info
MsgStream & info() const
shortcut for the method msgStream(MSG::INFO)
Definition: CommonMessaging.h:117
StatusCode::isSuccess
bool isSuccess() const
Test for a status code of SUCCESS.
Definition: StatusCode.h:75
CommonMessagingBase::warning
MsgStream & warning() const
shortcut for the method msgStream(MSG::WARNING)
Definition: CommonMessaging.h:114
StatusCode
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:28
HiveSlimEventLoopMgr::getEventRoot
StatusCode getEventRoot(IOpaqueAddress *&refpAddr)
Create event address using event selector.
Definition: HiveSlimEventLoopMgr.cpp:521
IDataManagerSvc::setRoot
virtual StatusCode setRoot(std::string root_name, DataObject *pObject)=0
Initialize data store for new event by giving new event path.
GaudiPython.Bindings.DataObject
DataObject
Definition: Bindings.py:55
IOpaqueAddress
Opaque address interface definition.
Definition: IOpaqueAddress.h:23
endmsg
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition: MsgStream.h:209
HiveSlimEventLoopMgr::m_evtContext
IEvtSelector::Context * m_evtContext
Event Iterator.
Definition: HiveSlimEventLoopMgr.h:42

StatusCode HiveSlimEventLoopMgr::drainScheduler | ( | int & | finishedEvents | ) |
| protected

Drain the scheduler from all actions that may be queued.

Definition at line 589 of file HiveSlimEventLoopMgr.cpp.

590 {
591
592 StatusCode sc( StatusCode::SUCCESS );
593
594 // maybe we can do better
595 std::vector<EventContext*> finishedEvtContexts;
596
597 EventContext* finishedEvtContext( nullptr );
598
599 // Here we wait not to loose cpu resources
600 debug() << "Waiting for a context" << endmsg;
601 sc = m_schedulerSvc->popFinishedEvent( finishedEvtContext );
602
603 // We got past it: cache the pointer
604 if ( sc.isSuccess() ) {
605 debug() << "Context obtained" << endmsg;
606 } else {
607 // A problem occurred.
608 debug() << "Context not obtained: a problem in the scheduling?" << endmsg;
609 // return StatusCode::FAILURE;
610 }
611
612 finishedEvtContexts.push_back( finishedEvtContext );
613
614 // Let's see if we can pop other event contexts
615 while ( m_schedulerSvc->tryPopFinishedEvent( finishedEvtContext ).isSuccess() ) {
616 finishedEvtContexts.push_back( finishedEvtContext );
617 }
618
619 // Now we flush them
620 StatusCode finalSC;
621 for ( auto& thisFinishedEvtContext : finishedEvtContexts ) {
622 if ( nullptr == thisFinishedEvtContext ) {
623 error() << "Detected nullptr ctxt before clearing WB!" << endmsg;
624 finalSC = StatusCode::FAILURE;
625 continue;
626 }
627 if ( m_algExecStateSvc->eventStatus( *thisFinishedEvtContext ) != EventStatus::Success ) {
628 fatal() << "Failed event detected on " << thisFinishedEvtContext << endmsg;
629 finalSC = StatusCode::FAILURE;
630 }
631 // shouldn't these incidents move to the forward scheduler?
632 // If we want to consume incidents with an algorithm at the end of the graph
633 // we need to add this to forward scheduler lambda action,
634 // otherwise we have to do this serially on this thread!
635 m_incidentSvc->fireIncident( Incident( name(), IncidentType::EndProcessing, *thisFinishedEvtContext ) );
636 m_incidentSvc->fireIncident( Incident( name(), IncidentType::EndEvent, *thisFinishedEvtContext ) );
637
638 debug() << "Clearing slot " << thisFinishedEvtContext->slot() << " (event " << thisFinishedEvtContext->evt()
639 << ") of the whiteboard" << endmsg;
640
641 StatusCode sc = clearWBSlot( thisFinishedEvtContext->slot() );
642 if ( !sc.isSuccess() )
643 error() << "Whiteboard slot " << thisFinishedEvtContext->slot() << " could not be properly cleared";
644
645 delete thisFinishedEvtContext;
646
647 finishedEvts++;
648 }
649 return finalSC;
650 }
HiveSlimEventLoopMgr::clearWBSlot
StatusCode clearWBSlot(int evtSlot)
Clear a slot in the WB.
Definition: HiveSlimEventLoopMgr.cpp:654
StatusCode::SUCCESS
Definition: StatusCode.h:31
HiveSlimEventLoopMgr::m_incidentSvc
SmartIF< IIncidentSvc > m_incidentSvc
Reference to the incident service.
Definition: HiveSlimEventLoopMgr.h:75
Service::name
const std::string & name() const override
Retrieve name of the service.
Definition: Service.cpp:289
StatusCode::FAILURE
Definition: StatusCode.h:31
StatusCode::isSuccess
bool isSuccess() const
Test for a status code of SUCCESS.
Definition: StatusCode.h:75
HiveSlimEventLoopMgr::m_schedulerSvc
SmartIF< IScheduler > m_schedulerSvc
A shortcut for the scheduler.
Definition: HiveSlimEventLoopMgr.h:59
EventContext
This class represents an entry point to all the event specific data.
Definition: EventContext.h:24
std::vector::push_back
T push_back(T...args)
CommonMessagingBase::error
MsgStream & error() const
shortcut for the method msgStream(MSG::ERROR)
Definition: CommonMessaging.h:111
IIncidentSvc::fireIncident
virtual void fireIncident(const Incident &incident)=0
Fire an Incident.
StatusCode
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:28
EventStatus::Success
Definition: IAlgExecStateSvc.h:59
std::vector
STL class.
HiveSlimEventLoopMgr::m_algExecStateSvc
SmartIF< IAlgExecStateSvc > m_algExecStateSvc
Reference to the AlgExecStateSvc.
Definition: HiveSlimEventLoopMgr.h:52
CommonMessagingBase::debug
MsgStream & debug() const
shortcut for the method msgStream(MSG::DEBUG)
Definition: CommonMessaging.h:120
IScheduler::tryPopFinishedEvent
virtual StatusCode tryPopFinishedEvent(EventContext *&eventContext)=0
Try to retrieve a finished event from the scheduler.
Incident
Base class for all Incidents (computing events).
Definition: Incident.h:17
IAlgExecStateSvc::eventStatus
virtual const EventStatus::Status & eventStatus(const EventContext &ctx) const =0
CommonMessagingBase::fatal
MsgStream & fatal() const
shortcut for the method msgStream(MSG::FATAL)
Definition: CommonMessaging.h:105
IScheduler::popFinishedEvent
virtual StatusCode popFinishedEvent(EventContext *&eventContext)=0
Retrieve a finished event from the scheduler.
endmsg
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition: MsgStream.h:209

StatusCode HiveSlimEventLoopMgr::executeEvent | ( | void * | par | ) |
| override

implementation of IEventProcessor::executeEvent(void* par)

Definition at line 312 of file HiveSlimEventLoopMgr.cpp.

313 {
314
315 // Leave the interface intact and swallow this C trick.
316 int& createdEvts = *( (int*)createdEvts_IntPtr );
317
318 EventContext* evtContext( nullptr );
319
320 // Check if event number is in blacklist
321 if ( LIKELY( m_blackListBS != nullptr ) ) { // we are processing a finite number of events, use bitset blacklist
322 if ( m_blackListBS->test( createdEvts ) ) {
323 verbose() << "Event " << createdEvts << " on black list" << endmsg;
324 return StatusCode::RECOVERABLE;
325 }
326 } else if ( std::binary_search( m_eventNumberBlacklist.begin(), m_eventNumberBlacklist.end(), createdEvts ) ) {
327
328 verbose() << "Event " << createdEvts << " on black list" << endmsg;
329 return StatusCode::RECOVERABLE;
330 }
331
332 if ( createEventContext( evtContext, createdEvts ).isFailure() ) {
333 fatal() << "Impossible to create event context" << endmsg;
334 return StatusCode::FAILURE;
335 }
336
337 verbose() << "Beginning to process event " << createdEvts << endmsg;
338
339 // An incident may schedule a stop, in which case is better to exit before the actual execution.
340 // DP have to find out who shoots this
341 /* if ( m_scheduledStop ) {
342 always() << "Terminating event processing loop due to a stop scheduled by an incident listener" << endmsg;
343 return StatusCode::SUCCESS;
344 }*/
345
346 StatusCode declEvtRootSc = declareEventRootAddress();
347 if ( declEvtRootSc.isFailure() ) { // We ran out of events!
348 createdEvts = -1; // Set created event to a negative value: we finished!
349 return StatusCode::SUCCESS;
350 }
351
352 // Fire BeginEvent "Incident"
353 m_incidentSvc->fireIncident(
354 std::unique_ptr<Incident>( new Incident( name(), IncidentType::BeginEvent, *evtContext ) ) );
355
356 // Now add event to the scheduler
357 verbose() << "Adding event " << evtContext->evt() << ", slot " << evtContext->slot() << " to the scheduler" << endmsg;
358
359 m_incidentSvc->fireIncident(
360 std::unique_ptr<Incident>( new Incident( name(), IncidentType::BeginProcessing, *evtContext ) ) );
361
362 StatusCode addEventStatus = m_schedulerSvc->pushNewEvent( evtContext );
363
364 // If this fails, we need to wait for something to complete
365 if ( !addEventStatus.isSuccess() ) {
366 fatal() << "An event processing slot should be now free in the scheduler, but it appears not to be the case."
367 << endmsg;
368 }
369
370 createdEvts++;
371 return StatusCode::SUCCESS;
372 }
StatusCode::SUCCESS
Definition: StatusCode.h:31
HiveSlimEventLoopMgr::m_incidentSvc
SmartIF< IIncidentSvc > m_incidentSvc
Reference to the incident service.
Definition: HiveSlimEventLoopMgr.h:75
HiveSlimEventLoopMgr::declareEventRootAddress
StatusCode declareEventRootAddress()
Declare the root address of the event.
Definition: HiveSlimEventLoopMgr.cpp:544
Service::name
const std::string & name() const override
Retrieve name of the service.
Definition: Service.cpp:289
StatusCode::FAILURE
Definition: StatusCode.h:31
StatusCode::isSuccess
bool isSuccess() const
Test for a status code of SUCCESS.
Definition: StatusCode.h:75
HiveSlimEventLoopMgr::m_schedulerSvc
SmartIF< IScheduler > m_schedulerSvc
A shortcut for the scheduler.
Definition: HiveSlimEventLoopMgr.h:59
CommonMessagingBase::verbose
MsgStream & verbose() const
shortcut for the method msgStream(MSG::VERBOSE)
Definition: CommonMessaging.h:123
std::binary_search
T binary_search(T...args)
HiveSlimEventLoopMgr::m_eventNumberBlacklist
Gaudi::Property< std::vector< unsigned int > > m_eventNumberBlacklist
Definition: HiveSlimEventLoopMgr.h:35
EventContext
This class represents an entry point to all the event specific data.
Definition: EventContext.h:24
StatusCode::isFailure
bool isFailure() const
Test for a status code of FAILURE.
Definition: StatusCode.h:86
IIncidentSvc::fireIncident
virtual void fireIncident(const Incident &incident)=0
Fire an Incident.
StatusCode
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:28
HiveSlimEventLoopMgr::createEventContext
StatusCode createEventContext(EventContext *&eventContext, int createdEvents)
Create event context.
Definition: HiveSlimEventLoopMgr.cpp:572
IScheduler::pushNewEvent
virtual StatusCode pushNewEvent(EventContext *eventContext)=0
Make an event available to the scheduler.
LIKELY
#define LIKELY(x)
Definition: Kernel.h:127
std::unique_ptr< Incident >
StatusCode::RECOVERABLE
Definition: StatusCode.h:31
Incident
Base class for all Incidents (computing events).
Definition: Incident.h:17
CommonMessagingBase::fatal
MsgStream & fatal() const
shortcut for the method msgStream(MSG::FATAL)
Definition: CommonMessaging.h:105
endmsg
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition: MsgStream.h:209
HiveSlimEventLoopMgr::m_blackListBS
boost::dynamic_bitset * m_blackListBS
Definition: HiveSlimEventLoopMgr.h:78

StatusCode HiveSlimEventLoopMgr::executeRun | ( | int | maxevt | ) |
| override

implementation of IEventProcessor::executeRun()

Definition at line 377 of file HiveSlimEventLoopMgr.cpp.

378 {
379 StatusCode sc;
380 bool eventfailed = false;
381
382 if ( maxevt > 0 ) { // finite number of events to process
383 const unsigned int umaxevt = static_cast<unsigned int>( maxevt );
384 m_blackListBS = new boost::dynamic_bitset<>( maxevt ); // all initialized to zero
385 for ( unsigned int i = 0; i < m_eventNumberBlacklist.size() && m_eventNumberBlacklist[i] <= umaxevt;
386 ++i ) { // black list is sorted in init
387 m_blackListBS->set( m_eventNumberBlacklist[i], true );
388 }
389 }
390
391 sc = m_algResourcePool->beginRun();
392 if ( sc.isFailure() ) eventfailed = true;
393
394 // Call now the nextEvent(...)
395 sc = nextEvent( maxevt );
396 if ( !sc.isSuccess() ) eventfailed = true;
397
398 sc = m_algResourcePool->endRun();
399 if ( sc.isFailure() ) eventfailed = true;
400
401 if ( m_blackListBS != nullptr ) delete m_blackListBS;
402
403 if ( eventfailed )
404 return StatusCode::FAILURE;
405 else
406 return StatusCode::SUCCESS;
407 }
StatusCode::SUCCESS
Definition: StatusCode.h:31
StatusCode::FAILURE
Definition: StatusCode.h:31
StatusCode::isSuccess
bool isSuccess() const
Test for a status code of SUCCESS.
Definition: StatusCode.h:75
HiveSlimEventLoopMgr::m_eventNumberBlacklist
Gaudi::Property< std::vector< unsigned int > > m_eventNumberBlacklist
Definition: HiveSlimEventLoopMgr.h:35
StatusCode::isFailure
bool isFailure() const
Test for a status code of FAILURE.
Definition: StatusCode.h:86
IAlgResourcePool::endRun
virtual StatusCode endRun()=0
End Run.
StatusCode
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:28
IAlgResourcePool::beginRun
virtual StatusCode beginRun()=0
Begin Run.
maxevt
int maxevt
Definition: Bootstrap.cpp:279
HiveSlimEventLoopMgr::m_algResourcePool
SmartIF< IAlgResourcePool > m_algResourcePool
Reference to the Algorithm resource pool.
Definition: HiveSlimEventLoopMgr.h:50
HiveSlimEventLoopMgr::nextEvent
StatusCode nextEvent(int maxevt) override
implementation of IService::nextEvent
Definition: HiveSlimEventLoopMgr.cpp:430
HiveSlimEventLoopMgr::m_blackListBS
boost::dynamic_bitset * m_blackListBS
Definition: HiveSlimEventLoopMgr.h:78

StatusCode HiveSlimEventLoopMgr::finalize | ( |  | ) |
| override

implementation of IService::finalize

Definition at line 240 of file HiveSlimEventLoopMgr.cpp.

241 {
242
243 StatusCode scRet;
244 StatusCode sc = Service::finalize();
245
246 if ( sc.isFailure() ) {
247 scRet = StatusCode::FAILURE;
248 error() << "Problems finalizing Service base class" << endmsg;
249 }
250
251 // Save Histograms Now
252 if ( m_histoPersSvc != 0 ) {
253 HistogramAgent agent;
254 sc = m_histoDataMgrSvc->traverseTree( &agent );
255 if ( sc.isSuccess() ) {
256 IDataSelector* objects = agent.selectedObjects();
257 // skip /stat entry!
258 if ( objects->size() > 0 ) {
259 IDataSelector::iterator i;
260 for ( i = objects->begin(); i != objects->end(); i++ ) {
261 IOpaqueAddress* pAddr = 0;
262 StatusCode iret = m_histoPersSvc->createRep( *i, pAddr );
263 if ( iret.isSuccess() ) {
264 ( *i )->registry()->setAddress( pAddr );
265 } else {
266 sc = iret;
267 }
268 }
269 for ( i = objects->begin(); i != objects->end(); i++ ) {
270 IRegistry* reg = ( *i )->registry();
271 StatusCode iret = m_histoPersSvc->fillRepRefs( reg->address(), *i );
272 if ( !iret.isSuccess() ) {
273 sc = iret;
274 }
275 }
276 }
277 if ( sc.isSuccess() ) {
278 info() << "Histograms converted successfully according to request." << endmsg;
279 } else {
280 error() << "Error while saving Histograms." << endmsg;
281 }
282 } else {
283 error() << "Error while traversing Histogram data store" << endmsg;
284 }
285 }
286
287 scRet = sc;
288
289 // Release event selector context
290 if ( m_evtSelector && m_evtContext ) {
291 m_evtSelector->releaseContext( m_evtContext ).ignore();
292 m_evtContext = 0;
293 }
294
295 m_incidentSvc = 0; // release
296 m_appMgrUI = 0; // release
297
298 // Release all interfaces...
299 m_histoDataMgrSvc = 0;
300 m_histoPersSvc = 0;
301
302 m_evtSelector = 0;
303 m_whiteboard = 0;
304 m_evtDataMgrSvc = 0;
305
306 return scRet;
307 }
HiveSlimEventLoopMgr::m_incidentSvc
SmartIF< IIncidentSvc > m_incidentSvc
Reference to the incident service.
Definition: HiveSlimEventLoopMgr.h:75
HiveSlimEventLoopMgr::m_evtDataMgrSvc
SmartIF< IDataManagerSvc > m_evtDataMgrSvc
Reference to the Event Data Service&#39;s IDataManagerSvc interface.
Definition: HiveSlimEventLoopMgr.h:38
StatusCode::FAILURE
Definition: StatusCode.h:31
Service::finalize
StatusCode finalize() override
Definition: Service.cpp:174
HiveSlimEventLoopMgr::m_appMgrUI
SmartIF< IAppMgrUI > m_appMgrUI
Reference to the IAppMgrUI interface of the application manager.
Definition: HiveSlimEventLoopMgr.h:73
CommonMessagingBase::info
MsgStream & info() const
shortcut for the method msgStream(MSG::INFO)
Definition: CommonMessaging.h:117
StatusCode::isSuccess
bool isSuccess() const
Test for a status code of SUCCESS.
Definition: StatusCode.h:75
HistogramAgent
HistogramAgent base in charge of collecting all the refereces to DataObjects in a transient store tha...
Definition: HistogramAgent.h:17
HiveSlimEventLoopMgr::m_whiteboard
SmartIF< IHiveWhiteBoard > m_whiteboard
Reference to the Whiteboard.
Definition: HiveSlimEventLoopMgr.h:48
std::vector::end
T end(T...args)
IConverter::createRep
virtual StatusCode createRep(DataObject *pObject, IOpaqueAddress *&refpAddress)=0
Convert the transient object to the requested representation.
StatusCode::isFailure
bool isFailure() const
Test for a status code of FAILURE.
Definition: StatusCode.h:86
CommonMessagingBase::error
MsgStream & error() const
shortcut for the method msgStream(MSG::ERROR)
Definition: CommonMessaging.h:111
IDataManagerSvc::traverseTree
virtual StatusCode traverseTree(IDataStoreAgent *pAgent)=0
Analyse by traversing all data objects in the data store.
StatusCode
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:28
IRegistry
The IRegistry represents the entry door to the environment any data object residing in a transient da...
Definition: IRegistry.h:22
IEvtSelector::releaseContext
virtual StatusCode releaseContext(Context *&) const =0
Release the Context object.
HistogramAgent::selectedObjects
IDataSelector * selectedObjects()
Return the set of selected DataObjects.
Definition: HistogramAgent.h:30
std::vector::size
T size(T...args)
std::vector< DataObject * >
HiveSlimEventLoopMgr::m_histoPersSvc
SmartIF< IConversionSvc > m_histoPersSvc
Reference to the Histogram Persistency Service.
Definition: HiveSlimEventLoopMgr.h:46
std::vector::begin
T begin(T...args)
HiveSlimEventLoopMgr::m_histoDataMgrSvc
SmartIF< IDataManagerSvc > m_histoDataMgrSvc
Reference to the Histogram Data Service.
Definition: HiveSlimEventLoopMgr.h:44
HiveSlimEventLoopMgr::m_evtSelector
SmartIF< IEvtSelector > m_evtSelector
Reference to the Event Selector.
Definition: HiveSlimEventLoopMgr.h:40
IOpaqueAddress
Opaque address interface definition.
Definition: IOpaqueAddress.h:23
StatusCode::ignore
void ignore() const
Definition: StatusCode.h:109
IRegistry::address
virtual IOpaqueAddress * address() const =0
Retrieve opaque storage address.
IConverter::fillRepRefs
virtual StatusCode fillRepRefs(IOpaqueAddress *pAddress, DataObject *pObject)=0
Resolve the references of the converted object.
endmsg
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition: MsgStream.h:209
HiveSlimEventLoopMgr::m_evtContext
IEvtSelector::Context * m_evtContext
Event Iterator.
Definition: HiveSlimEventLoopMgr.h:42

StatusCode HiveSlimEventLoopMgr::getEventRoot | ( | IOpaqueAddress *& | refpAddr | ) |

Create event address using event selector.

Definition at line 521 of file HiveSlimEventLoopMgr.cpp.

522 {
523 refpAddr = 0;
524 StatusCode sc = m_evtSelector->next( *m_evtContext );
525 if ( !sc.isSuccess() ) {
526 return sc;
527 }
528 // Create root address and assign address to data service
529 sc = m_evtSelector->createAddress( *m_evtContext, refpAddr );
530 if ( !sc.isSuccess() ) {
531 sc = m_evtSelector->next( *m_evtContext );
532 if ( sc.isSuccess() ) {
533 sc = m_evtSelector->createAddress( *m_evtContext, refpAddr );
534 if ( !sc.isSuccess() ) {
535 warning() << "Error creating IOpaqueAddress." << endmsg;
536 }
537 }
538 }
539 return sc;
540 }
StatusCode::isSuccess
bool isSuccess() const
Test for a status code of SUCCESS.
Definition: StatusCode.h:75
CommonMessagingBase::warning
MsgStream & warning() const
shortcut for the method msgStream(MSG::WARNING)
Definition: CommonMessaging.h:114
StatusCode
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:28
HiveSlimEventLoopMgr::m_evtSelector
SmartIF< IEvtSelector > m_evtSelector
Reference to the Event Selector.
Definition: HiveSlimEventLoopMgr.h:40
IEvtSelector::next
virtual StatusCode next(Context &c) const =0
Fetch the next event or the first event if it will be use soon after the creation of the context...
IEvtSelector::createAddress
virtual StatusCode createAddress(const Context &c, IOpaqueAddress *&iop) const =0
Create an IOpaqueAddress object from the event fetched.
endmsg
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition: MsgStream.h:209
HiveSlimEventLoopMgr::m_evtContext
IEvtSelector::Context * m_evtContext
Event Iterator.
Definition: HiveSlimEventLoopMgr.h:42

StatusCode HiveSlimEventLoopMgr::initialize | ( |  | ) |
| override

implementation of IService::initialize

Definition at line 65 of file HiveSlimEventLoopMgr.cpp.

66 {
67
68 if ( !m_appMgrUI.isValid() ) {
69 return StatusCode::FAILURE;
70 }
71
72 StatusCode sc = Service::initialize();
73 if ( !sc.isSuccess() ) {
74 error() << "Failed to initialize Service Base class." << endmsg;
75 return StatusCode::FAILURE;
76 }
77
78 // Get the references to the services that are needed by the ApplicationMgr itself
79 m_incidentSvc = serviceLocator()->service( "IncidentSvc" );
80 if ( !m_incidentSvc.isValid() ) {
81 fatal() << "Error retrieving IncidentSvc." << endmsg;
82 return StatusCode::FAILURE;
83 }
84
85 // Setup access to event data services
86 m_evtDataMgrSvc = serviceLocator()->service( "EventDataSvc" );
87 if ( !m_evtDataMgrSvc.isValid() ) {
88 fatal() << "Error retrieving EventDataSvc interface IDataManagerSvc." << endmsg;
89 return StatusCode::FAILURE;
90 }
91 m_whiteboard = serviceLocator()->service( "EventDataSvc" );
92 if ( !m_whiteboard.isValid() ) {
93 fatal() << "Error retrieving EventDataSvc interface IHiveWhiteBoard." << endmsg;
94 return StatusCode::FAILURE;
95 }
96 m_schedulerSvc = serviceLocator()->service( m_schedulerName );
97 if ( !m_schedulerSvc.isValid() ) {
98 fatal() << "Error retrieving SchedulerSvc interface IScheduler." << endmsg;
99 return StatusCode::FAILURE;
100 }
101 // Obtain the IProperty of the ApplicationMgr
102 m_appMgrProperty = serviceLocator();
103 if ( !m_appMgrProperty.isValid() ) {
104 fatal() << "IProperty interface not found in ApplicationMgr." << endmsg;
105 return StatusCode::FAILURE;
106 }
107
108 // We do not expect a Event Selector necessarily being declared
109 setProperty( m_appMgrProperty->getProperty( "EvtSel" ) ).ignore();
110
111 if ( m_evtsel != "NONE" || m_evtsel.length() == 0 ) {
112 m_evtSelector = serviceLocator()->service( "EventSelector" );
113 if ( m_evtSelector.isValid() ) {
114 // Setup Event Selector
115 sc = m_evtSelector->createContext( m_evtContext );
116 if ( !sc.isSuccess() ) {
117 fatal() << "Can not create the event selector Context." << endmsg;
118 return sc;
119 }
120 } else {
121 fatal() << "EventSelector not found." << endmsg;
122 return sc;
123 }
124 } else {
125 m_evtSelector = 0;
126 m_evtContext = 0;
127 if ( m_warnings ) {
128 warning() << "Unable to locate service \"EventSelector\" " << endmsg;
129 warning() << "No events will be processed from external input." << endmsg;
130 }
131 }
132
133 // Setup access to histogramming services
134 m_histoDataMgrSvc = serviceLocator()->service( "HistogramDataSvc" );
135 if ( !m_histoDataMgrSvc.isValid() ) {
136 fatal() << "Error retrieving HistogramDataSvc." << endmsg;
137 return sc;
138 }
139 // Setup histogram persistency
140 m_histoPersSvc = serviceLocator()->service( "HistogramPersistencySvc" );
141 if ( !m_histoPersSvc.isValid() ) {
142 warning() << "Histograms cannot not be saved - though required." << endmsg;
143 return sc;
144 }
145
146 // Setup algorithm resource pool
147 m_algResourcePool = serviceLocator()->service( "AlgResourcePool" );
148 if ( !m_algResourcePool.isValid() ) {
149 fatal() << "Error retrieving AlgResourcePool" << endmsg;
150 return StatusCode::FAILURE;
151 }
152
153 m_algExecStateSvc = serviceLocator()->service( "AlgExecStateSvc" );
154 if ( !m_algExecStateSvc.isValid() ) {
155 fatal() << "Error retrieving AlgExecStateSvc" << endmsg;
156 return StatusCode::FAILURE;
157 }
158
159 std::sort( m_eventNumberBlacklist.begin(), m_eventNumberBlacklist.end() );
160 info() << "Found " << m_eventNumberBlacklist.size() << " events in black list" << endmsg;
161
162 return StatusCode::SUCCESS;
163 }
Service::initialize
StatusCode initialize() override
Definition: Service.cpp:64
StatusCode::SUCCESS
Definition: StatusCode.h:31
HiveSlimEventLoopMgr::m_evtsel
Gaudi::Property< std::string > m_evtsel
Definition: HiveSlimEventLoopMgr.h:31
HiveSlimEventLoopMgr::m_incidentSvc
SmartIF< IIncidentSvc > m_incidentSvc
Reference to the incident service.
Definition: HiveSlimEventLoopMgr.h:75
HiveSlimEventLoopMgr::m_evtDataMgrSvc
SmartIF< IDataManagerSvc > m_evtDataMgrSvc
Reference to the Event Data Service&#39;s IDataManagerSvc interface.
Definition: HiveSlimEventLoopMgr.h:38
StatusCode::FAILURE
Definition: StatusCode.h:31
PropertyHolder< CommonMessaging< implements< IService, IProperty, IStateful > > >::setProperty
StatusCode setProperty(const Gaudi::Details::PropertyBase &p) override
set the property form another property
Definition: PropertyHolder.h:208
HiveSlimEventLoopMgr::m_appMgrUI
SmartIF< IAppMgrUI > m_appMgrUI
Reference to the IAppMgrUI interface of the application manager.
Definition: HiveSlimEventLoopMgr.h:73
CommonMessagingBase::info
MsgStream & info() const
shortcut for the method msgStream(MSG::INFO)
Definition: CommonMessaging.h:117
StatusCode::isSuccess
bool isSuccess() const
Test for a status code of SUCCESS.
Definition: StatusCode.h:75
HiveSlimEventLoopMgr::m_whiteboard
SmartIF< IHiveWhiteBoard > m_whiteboard
Reference to the Whiteboard.
Definition: HiveSlimEventLoopMgr.h:48
HiveSlimEventLoopMgr::m_schedulerSvc
SmartIF< IScheduler > m_schedulerSvc
A shortcut for the scheduler.
Definition: HiveSlimEventLoopMgr.h:59
HiveSlimEventLoopMgr::m_eventNumberBlacklist
Gaudi::Property< std::vector< unsigned int > > m_eventNumberBlacklist
Definition: HiveSlimEventLoopMgr.h:35
IProperty::getProperty
virtual StatusCode getProperty(Gaudi::Details::PropertyBase *p) const =0
Get the property by property.
HiveSlimEventLoopMgr::m_appMgrProperty
SmartIF< IProperty > m_appMgrProperty
Property interface of ApplicationMgr.
Definition: HiveSlimEventLoopMgr.h:54
HiveSlimEventLoopMgr::m_warnings
Gaudi::Property< bool > m_warnings
Definition: HiveSlimEventLoopMgr.h:32
ISvcLocator::service
StatusCode service(const Gaudi::Utils::TypeNameString &name, T *&svc, bool createIf=true)
Templated method to access a service by name.
Definition: ISvcLocator.h:79
CommonMessagingBase::error
MsgStream & error() const
shortcut for the method msgStream(MSG::ERROR)
Definition: CommonMessaging.h:111
CommonMessagingBase::warning
MsgStream & warning() const
shortcut for the method msgStream(MSG::WARNING)
Definition: CommonMessaging.h:114
StatusCode
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:28
HiveSlimEventLoopMgr::m_algExecStateSvc
SmartIF< IAlgExecStateSvc > m_algExecStateSvc
Reference to the AlgExecStateSvc.
Definition: HiveSlimEventLoopMgr.h:52
HiveSlimEventLoopMgr::m_histoPersSvc
SmartIF< IConversionSvc > m_histoPersSvc
Reference to the Histogram Persistency Service.
Definition: HiveSlimEventLoopMgr.h:46
HiveSlimEventLoopMgr::m_schedulerName
Gaudi::Property< std::string > m_schedulerName
Definition: HiveSlimEventLoopMgr.h:33
SmartIF::isValid
bool isValid() const
Allow for check if smart pointer is valid.
Definition: SmartIF.h:68
HiveSlimEventLoopMgr::m_histoDataMgrSvc
SmartIF< IDataManagerSvc > m_histoDataMgrSvc
Reference to the Histogram Data Service.
Definition: HiveSlimEventLoopMgr.h:44
HiveSlimEventLoopMgr::m_evtSelector
SmartIF< IEvtSelector > m_evtSelector
Reference to the Event Selector.
Definition: HiveSlimEventLoopMgr.h:40
std::sort
T sort(T...args)
IEvtSelector::createContext
virtual StatusCode createContext(Context *&c) const =0
Create and return a context object that will keep track of the state of selection.
CommonMessagingBase::fatal
MsgStream & fatal() const
shortcut for the method msgStream(MSG::FATAL)
Definition: CommonMessaging.h:105
HiveSlimEventLoopMgr::m_algResourcePool
SmartIF< IAlgResourcePool > m_algResourcePool
Reference to the Algorithm resource pool.
Definition: HiveSlimEventLoopMgr.h:50
Service::serviceLocator
SmartIF< ISvcLocator > & serviceLocator() const override
Retrieve pointer to service locator.
Definition: Service.cpp:292
endmsg
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition: MsgStream.h:209
HiveSlimEventLoopMgr::m_evtContext
IEvtSelector::Context * m_evtContext
Event Iterator.
Definition: HiveSlimEventLoopMgr.h:42

StatusCode HiveSlimEventLoopMgr::nextEvent | ( | int | maxevt | ) |
| override

implementation of IService::nextEvent

Definition at line 430 of file HiveSlimEventLoopMgr.cpp.

431 {
432
433 // Calculate runtime
434 typedef std::chrono::high_resolution_clock Clock;
435 typedef Clock::time_point time_point;
436
437 // Reset the application return code.
438 Gaudi::setAppReturnCode( m_appMgrProperty, Gaudi::ReturnCode::Success, true ).ignore();
439
440 int finishedEvts = 0;
441 int createdEvts = 0;
442 int skippedEvts = 0;
443 info() << "Starting loop on events" << endmsg;
444 // Loop until the finished events did not reach the maxevt number
445 bool loop_ended = false;
446 // Run the first event before spilling more than one
447 bool newEvtAllowed = false;
448
449 constexpr double oneOver1204 = 1. / 1024.;
450
451 uint iteration = 0;
452 time_point start_time = Clock::now();
453 while ( !loop_ended and ( maxevt < 0 or ( finishedEvts + skippedEvts ) < maxevt ) ) {
454 debug() << "work loop iteration " << iteration++ << endmsg;
455 // if the created events did not reach maxevt, create an event
456 if ( ( newEvtAllowed or createdEvts == 0 ) && // Launch the first event alone
457 createdEvts >= 0 && // The events are not finished with an unlimited number of events
458 ( createdEvts < maxevt or maxevt < 0 ) && // The events are not finished with a limited number of events
459 m_schedulerSvc->freeSlots() > 0 ) { // There are still free slots in the scheduler
460
461 if ( 1 == createdEvts ) // reset counter to count from event 1
462 start_time = Clock::now();
463
464 debug() << "createdEvts: " << createdEvts << ", freeslots: " << m_schedulerSvc->freeSlots() << endmsg;
465 // DP remove to remove the syscalls...
466 // if (0!=createdEvts){
467 // info() << "Event Number = " << createdEvts
468 // << " WSS (MB) = " << System::mappedMemory(System::MemoryUnit::kByte)*oneOver1204
469 // << " Time (s) = " << secsFromStart(start_time) << endmsg;
470 // }
471
472 // TODO can we adapt the interface of executeEvent for a nicer solution?
473 StatusCode sc = StatusCode::RECOVERABLE;
474 while ( !sc.isSuccess() // we haven't created an event yet
475 && ( createdEvts < maxevt or maxevt < 0 ) ) { // redunant check for maxEvts, can we do better?
476 sc = executeEvent( &createdEvts );
477
478 if ( sc.isRecoverable() ) { // we skipped an event
479
480 // this is all to skip the event
481 size_t slot =
482 m_whiteboard->allocateStore( createdEvts ); // we need a new store, not to change the previous event
483 m_whiteboard->selectStore( slot );
484 declareEventRootAddress(); // actually skip over the event
485 m_whiteboard->freeStore( slot ); // delete the store
486
487 ++createdEvts;
488 ++skippedEvts;
489 } else if ( sc.isRecoverable() ) { // exit immediatly
490 return StatusCode::FAILURE;
491 } // else we have an success --> exit loop
492 }
493
494 } // end if condition createdEvts < maxevt
495 else {
496 // all the events were created but not all finished or the slots were
497 // all busy: the scheduler should finish its job
498
499 debug() << "Draining the scheduler" << endmsg;
500
501 // Pull out of the scheduler the finished events
502 if ( drainScheduler( finishedEvts ).isFailure() ) {
503 loop_ended = true;
504 }
505 newEvtAllowed = true;
506 }
507 } // end main loop on finished events
508 time_point end_time = Clock::now();
509
510 info() << "---> Loop Finished (skipping 1st evt) - "
511 << " WSS " << System::mappedMemory( System::MemoryUnit::kByte ) * oneOver1204 << " total time "
512 << std::chrono::duration_cast<std::chrono::nanoseconds>( end_time - start_time ).count() << endmsg;
513 info() << skippedEvts << " events were SKIPed" << endmsg;
514
515 return StatusCode::SUCCESS;
516 }
std::chrono::nanoseconds
StatusCode::SUCCESS
Definition: StatusCode.h:31
HiveSlimEventLoopMgr::declareEventRootAddress
StatusCode declareEventRootAddress()
Declare the root address of the event.
Definition: HiveSlimEventLoopMgr.cpp:544
StatusCode::FAILURE
Definition: StatusCode.h:31
CommonMessagingBase::info
MsgStream & info() const
shortcut for the method msgStream(MSG::INFO)
Definition: CommonMessaging.h:117
HiveSlimEventLoopMgr::drainScheduler
StatusCode drainScheduler(int &finishedEvents)
Drain the scheduler from all actions that may be queued.
Definition: HiveSlimEventLoopMgr.cpp:589
StatusCode::isSuccess
bool isSuccess() const
Test for a status code of SUCCESS.
Definition: StatusCode.h:75
HiveSlimEventLoopMgr::m_whiteboard
SmartIF< IHiveWhiteBoard > m_whiteboard
Reference to the Whiteboard.
Definition: HiveSlimEventLoopMgr.h:48
HiveSlimEventLoopMgr::m_schedulerSvc
SmartIF< IScheduler > m_schedulerSvc
A shortcut for the scheduler.
Definition: HiveSlimEventLoopMgr.h:59
std::chrono::duration_cast
T duration_cast(T...args)
HiveSlimEventLoopMgr::m_appMgrProperty
SmartIF< IProperty > m_appMgrProperty
Property interface of ApplicationMgr.
Definition: HiveSlimEventLoopMgr.h:54
System::kByte
Definition: Memory.h:56
IHiveWhiteBoard::selectStore
virtual StatusCode selectStore(size_t partitionIndex)=0
Activate an given &#39;slot&#39; for all subsequent calls within the same thread id.
std::chrono::high_resolution_clock
StatusCode
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:28
StatusCode::isRecoverable
bool isRecoverable() const
Definition: StatusCode.h:87
Clock
std::chrono::high_resolution_clock Clock
Definition: ITimelineSvc.h:10
Gaudi::setAppReturnCode
StatusCode setAppReturnCode(SmartIF< IProperty > &appmgr, int value, bool force=false)
Set the application return code.
Definition: AppReturnCode.h:51
std::count
T count(T...args)
System::mappedMemory
GAUDI_API long mappedMemory(MemoryUnit unit=kByte, InfoType fetch=Memory, long pid=-1)
Basic Process Information: priority boost.
Definition: Memory.cpp:204
CommonMessagingBase::debug
MsgStream & debug() const
shortcut for the method msgStream(MSG::DEBUG)
Definition: CommonMessaging.h:120
IHiveWhiteBoard::allocateStore
virtual size_t allocateStore(int evtnumber)=0
Allocate a store partition for new event.
StatusCode::RECOVERABLE
Definition: StatusCode.h:31
time_point
Clock::time_point time_point
Definition: ITimelineSvc.h:11
std::chrono::high_resolution_clock::now
T now(T...args)
IHiveWhiteBoard::freeStore
virtual StatusCode freeStore(size_t partitionIndex)=0
Free a store partition.
maxevt
int maxevt
Definition: Bootstrap.cpp:279
StatusCode::ignore
void ignore() const
Definition: StatusCode.h:109
Gaudi::ReturnCode::Success
constexpr int Success
Definition: AppReturnCode.h:18
HiveSlimEventLoopMgr::executeEvent
StatusCode executeEvent(void *par) override
implementation of IEventProcessor::executeEvent(void* par)
Definition: HiveSlimEventLoopMgr.cpp:312
IScheduler::freeSlots
virtual unsigned int freeSlots()=0
Get the free event processing slots.
endmsg
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition: MsgStream.h:209

StatusCode HiveSlimEventLoopMgr::reinitialize | ( |  | ) |
| override

implementation of IService::reinitialize

Definition at line 167 of file HiveSlimEventLoopMgr.cpp.

168 {
169
170 // Check to see whether a new Event Selector has been specified
171 setProperty( m_appMgrProperty->getProperty( "EvtSel" ) );
172 if ( m_evtsel != "NONE" || m_evtsel.length() == 0 ) {
173 SmartIF<IService> theSvc( serviceLocator()->service( "EventSelector" ) );
174 SmartIF<IEvtSelector> theEvtSel( theSvc );
175 StatusCode sc;
176 if ( theEvtSel.isValid() && ( theEvtSel.get() != m_evtSelector.get() ) ) {
177 // Setup Event Selector
178 if ( m_evtSelector.get() && m_evtContext ) {
179 // Need to release context before switching to new event selector
180 m_evtSelector->releaseContext( m_evtContext );
181 m_evtContext = 0;
182 }
183 m_evtSelector = theEvtSel;
184 if ( theSvc->FSMState() == Gaudi::StateMachine::INITIALIZED ) {
185 sc = theSvc->reinitialize();
186 if ( !sc.isSuccess() ) {
187 error() << "Failure Reinitializing EventSelector " << theSvc->name() << endmsg;
188 return sc;
189 }
190 } else {
191 sc = theSvc->sysInitialize();
192 if ( !sc.isSuccess() ) {
193 error() << "Failure Initializing EventSelector " << theSvc->name() << endmsg;
194 return sc;
195 }
196 }
197 sc = m_evtSelector->createContext( m_evtContext );
198 if ( !sc.isSuccess() ) {
199 error() << "Can not create Context " << theSvc->name() << endmsg;
200 return sc;
201 }
202
203 } else if ( m_evtSelector.isValid() ) {
204 if ( m_evtContext ) {
205 m_evtSelector->releaseContext( m_evtContext );
206 m_evtContext = 0;
207 }
208 sc = m_evtSelector->createContext( m_evtContext );
209 if ( !sc.isSuccess() ) {
210 error() << "Can not create Context " << theSvc->name() << endmsg;
211 return sc;
212 }
213 }
214 } else if ( m_evtSelector.isValid() && m_evtContext ) {
215 m_evtSelector->releaseContext( m_evtContext );
216 m_evtSelector = 0;
217 m_evtContext = 0;
218 }
219 return StatusCode::SUCCESS;
220 }
Gaudi::StateMachine::INITIALIZED
Definition: StateMachine.h:17
StatusCode::SUCCESS
Definition: StatusCode.h:31
HiveSlimEventLoopMgr::m_evtsel
Gaudi::Property< std::string > m_evtsel
Definition: HiveSlimEventLoopMgr.h:31
SmartIF< IService >
PropertyHolder< CommonMessaging< implements< IService, IProperty, IStateful > > >::setProperty
StatusCode setProperty(const Gaudi::Details::PropertyBase &p) override
set the property form another property
Definition: PropertyHolder.h:208
StatusCode::isSuccess
bool isSuccess() const
Test for a status code of SUCCESS.
Definition: StatusCode.h:75
IProperty::getProperty
virtual StatusCode getProperty(Gaudi::Details::PropertyBase *p) const =0
Get the property by property.
HiveSlimEventLoopMgr::m_appMgrProperty
SmartIF< IProperty > m_appMgrProperty
Property interface of ApplicationMgr.
Definition: HiveSlimEventLoopMgr.h:54
SmartIF::get
TYPE * get() const
Get interface pointer.
Definition: SmartIF.h:82
CommonMessagingBase::error
MsgStream & error() const
shortcut for the method msgStream(MSG::ERROR)
Definition: CommonMessaging.h:111
StatusCode
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:28
IEvtSelector::releaseContext
virtual StatusCode releaseContext(Context *&) const =0
Release the Context object.
SmartIF::isValid
bool isValid() const
Allow for check if smart pointer is valid.
Definition: SmartIF.h:68
HiveSlimEventLoopMgr::m_evtSelector
SmartIF< IEvtSelector > m_evtSelector
Reference to the Event Selector.
Definition: HiveSlimEventLoopMgr.h:40
Service::service
StatusCode service(const std::string &name, const T *&psvc, bool createIf=true) const
Access a service by name, creating it if it doesn&#39;t already exist.
Definition: Service.h:85
IEvtSelector::createContext
virtual StatusCode createContext(Context *&c) const =0
Create and return a context object that will keep track of the state of selection.
Service::serviceLocator
SmartIF< ISvcLocator > & serviceLocator() const override
Retrieve pointer to service locator.
Definition: Service.cpp:292
endmsg
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition: MsgStream.h:209
HiveSlimEventLoopMgr::m_evtContext
IEvtSelector::Context * m_evtContext
Event Iterator.
Definition: HiveSlimEventLoopMgr.h:42

StatusCode HiveSlimEventLoopMgr::stop | ( |  | ) |
| override

implementation of IService::stop

Definition at line 226 of file HiveSlimEventLoopMgr.cpp.

227 {
228 if ( !m_endEventFired ) {
229 // Fire pending EndEvent incident
230 m_incidentSvc->fireIncident( Incident( name(), IncidentType::EndEvent ) );
231 m_endEventFired = true;
232 }
233 return StatusCode::SUCCESS;
234 }
StatusCode::SUCCESS
Definition: StatusCode.h:31
HiveSlimEventLoopMgr::m_incidentSvc
SmartIF< IIncidentSvc > m_incidentSvc
Reference to the incident service.
Definition: HiveSlimEventLoopMgr.h:75
Service::name
const std::string & name() const override
Retrieve name of the service.
Definition: Service.cpp:289
IIncidentSvc::fireIncident
virtual void fireIncident(const Incident &incident)=0
Fire an Incident.
Incident
Base class for all Incidents (computing events).
Definition: Incident.h:17
HiveSlimEventLoopMgr::m_endEventFired
bool m_endEventFired
Flag to avoid to fire the EnvEvent incident twice in a row (and also not before the first event) ...
Definition: HiveSlimEventLoopMgr.h:57

StatusCode HiveSlimEventLoopMgr::stopRun | ( |  | ) |
| override

implementation of IEventProcessor::stopRun()

Definition at line 412 of file HiveSlimEventLoopMgr.cpp.

413 {
414 // Set the application return code
415 SmartIF<IProperty> appmgr( serviceLocator() );
416 if ( Gaudi::setAppReturnCode( appmgr, Gaudi::ReturnCode::ScheduledStop ).isFailure() ) {
417 error() << "Could not set return code of the application (" << Gaudi::ReturnCode::ScheduledStop << ")" << endmsg;
418 }
419 m_scheduledStop = true;
420 return StatusCode::SUCCESS;
421 }
StatusCode::SUCCESS
Definition: StatusCode.h:31
SmartIF< IProperty >
HiveSlimEventLoopMgr::m_scheduledStop
bool m_scheduledStop
Scheduled stop of event processing.
Definition: HiveSlimEventLoopMgr.h:71
Gaudi::ReturnCode::ScheduledStop
constexpr int ScheduledStop
Definition: AppReturnCode.h:27
CommonMessagingBase::error
MsgStream & error() const
shortcut for the method msgStream(MSG::ERROR)
Definition: CommonMessaging.h:111
Gaudi::setAppReturnCode
StatusCode setAppReturnCode(SmartIF< IProperty > &appmgr, int value, bool force=false)
Set the application return code.
Definition: AppReturnCode.h:51
Service::serviceLocator
SmartIF< ISvcLocator > & serviceLocator() const override
Retrieve pointer to service locator.
Definition: Service.cpp:292
endmsg
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition: MsgStream.h:209

## Member Data Documentation

SmartIF<IIncidentListener> HiveSlimEventLoopMgr::m_abortEventListener
| protected

Instance of the incident listener waiting for AbortEvent.

Definition at line 69 of file HiveSlimEventLoopMgr.h.

SmartIF<IAlgExecStateSvc> HiveSlimEventLoopMgr::m_algExecStateSvc
| protected

Reference to the AlgExecStateSvc.

Definition at line 52 of file HiveSlimEventLoopMgr.h.

SmartIF<IAlgResourcePool> HiveSlimEventLoopMgr::m_algResourcePool
| protected

Reference to the Algorithm resource pool.

Definition at line 50 of file HiveSlimEventLoopMgr.h.

SmartIF<IProperty> HiveSlimEventLoopMgr::m_appMgrProperty
| protected

Property interface of ApplicationMgr.

Definition at line 54 of file HiveSlimEventLoopMgr.h.

SmartIF<IAppMgrUI> HiveSlimEventLoopMgr::m_appMgrUI
| protected

Reference to the IAppMgrUI interface of the application manager.

Definition at line 73 of file HiveSlimEventLoopMgr.h.

boost::dynamic_bitset* HiveSlimEventLoopMgr::m_blackListBS = nullptr
| protected

Definition at line 78 of file HiveSlimEventLoopMgr.h.

bool HiveSlimEventLoopMgr::m_endEventFired = false
| protected

Flag to avoid to fire the EnvEvent incident twice in a row (and also not before the first event)

Definition at line 57 of file HiveSlimEventLoopMgr.h.

Gaudi::Property<std::vector<unsigned int> > HiveSlimEventLoopMgr::m_eventNumberBlacklist {this, "EventNumberBlackList", {}, ""}
| protected

Definition at line 35 of file HiveSlimEventLoopMgr.h.

IEvtSelector::Context* HiveSlimEventLoopMgr::m_evtContext = nullptr
| protected

Event Iterator.

Definition at line 42 of file HiveSlimEventLoopMgr.h.

SmartIF<IDataManagerSvc> HiveSlimEventLoopMgr::m_evtDataMgrSvc
| protected

Reference to the Event Data Service's IDataManagerSvc interface.

Definition at line 38 of file HiveSlimEventLoopMgr.h.

Gaudi::Property<std::string> HiveSlimEventLoopMgr::m_evtsel {this, "EvtSel", "", ""}
| protected

Definition at line 31 of file HiveSlimEventLoopMgr.h.

SmartIF<IEvtSelector> HiveSlimEventLoopMgr::m_evtSelector
| protected

Reference to the Event Selector.

Definition at line 40 of file HiveSlimEventLoopMgr.h.

SmartIF<IDataManagerSvc> HiveSlimEventLoopMgr::m_histoDataMgrSvc
| protected

Reference to the Histogram Data Service.

Definition at line 44 of file HiveSlimEventLoopMgr.h.

SmartIF<IConversionSvc> HiveSlimEventLoopMgr::m_histoPersSvc
| protected

Reference to the Histogram Persistency Service.

Definition at line 46 of file HiveSlimEventLoopMgr.h.

Gaudi::Property<std::string> HiveSlimEventLoopMgr::m_histPersName {this, "HistogramPersistency", "", ""}
| protected

Definition at line 30 of file HiveSlimEventLoopMgr.h.

SmartIF<IIncidentSvc> HiveSlimEventLoopMgr::m_incidentSvc
| protected

Reference to the incident service.

Definition at line 75 of file HiveSlimEventLoopMgr.h.

bool HiveSlimEventLoopMgr::m_scheduledStop = false
| protected

Scheduled stop of event processing.

Definition at line 71 of file HiveSlimEventLoopMgr.h.

Gaudi::Property<std::string> HiveSlimEventLoopMgr::m_schedulerName
| protected

Initial value:
{this, "SchedulerName", "ForwardSchedulerSvc",
"Name of the scheduler to be used"}

Definition at line 33 of file HiveSlimEventLoopMgr.h.

SmartIF<IScheduler> HiveSlimEventLoopMgr::m_schedulerSvc
| protected

A shortcut for the scheduler.

Definition at line 59 of file HiveSlimEventLoopMgr.h.

Gaudi::Property<bool> HiveSlimEventLoopMgr::m_warnings {this, "Warnings", true, "Set this property to false to suppress warning messages"}
| protected

Definition at line 32 of file HiveSlimEventLoopMgr.h.

SmartIF<IHiveWhiteBoard> HiveSlimEventLoopMgr::m_whiteboard
| protected

Reference to the Whiteboard.

Definition at line 48 of file HiveSlimEventLoopMgr.h.

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

- GaudiHive/GaudiHive/HiveSlimEventLoopMgr.h
- GaudiHive/src/HiveSlimEventLoopMgr.cpp