1 #ifndef GAUDIHIVE_ROUNDROBINSCHEDULERSVC_H
2 #define GAUDIHIVE_ROUNDROBINSCHEDULERSVC_H
5 #include "GaudiKernel/IScheduler.h"
6 #include "GaudiKernel/IRunable.h"
7 #include "GaudiKernel/Service.h"
8 #include "GaudiKernel/IAlgResourcePool.h"
18 #include <unordered_map>
23 #include "tbb/concurrent_queue.h"
101 #endif // GAUDIHIVE_ROUNDROBINSCHEDULERSVC_H
StatusCode processEvents()
virtual StatusCode pushNewEvents(std::vector< EventContext * > &eventContexts)
The ISvcLocator is the interface implemented by the Service Factory in the Application Manager to loc...
virtual unsigned int freeSlots()
Get free slots number.
virtual StatusCode finalize()
Finalise.
std::list< IAlgorithm * > m_algList
Cache the list of algs to be executed.
RoundRobinSchedulerSvc(const std::string &name, ISvcLocator *svc)
Constructor.
virtual StatusCode popFinishedEvent(EventContext *&eventContext)
Blocks until an event is availble.
bool m_useTopAlgList
Decide if the top alglist or its flat version has to be used.
This class represents an entry point to all the event specific data.
unsigned int m_freeSlots
The number of free slots (0 or 1)
std::vector< std::vector< std::string > > m_algosDependencies
Ugly, will disappear when the deps are declared only within the C++ code of the algos.
SmartIF< IAlgResourcePool > m_algResourcePool
std::unordered_map< std::string, unsigned int > m_algname_index_map
Map to bookkeep the information necessary to the name2index conversion.
Manage the execution flow using an execution flow graph Once initialized, the graph is const and can ...
virtual StatusCode tryPopFinishedEvent(EventContext *&eventContext)
Try to fetch an event from the scheduler.
This class is used for returning status codes from appropriate routines.
std::vector< std::string > m_algname_vect
Vector to bookkeep the information necessary to the index2name conversion.
virtual StatusCode pushNewEvent(EventContext *eventContext)
Make an event available to the scheduler.
concurrency::ExecutionFlowManager m_controlFlow
virtual StatusCode initialize()
Initialise.
Base class used to extend a class implementing other interfaces.
tbb::concurrent_bounded_queue< EventContext * > m_finishedEvents
Queue of finished events.
~RoundRobinSchedulerSvc()
Destructor.
std::vector< EventContext * > m_evtCtx_buffer
The RoundRobinSchedulerSvc implements the IScheduler interface.