1 #ifndef MARLINMT_CONCURRENCY_PEPSCHEDULER_h 2 #define MARLINMT_CONCURRENCY_PEPSCHEDULER_h 1 11 #include <unordered_set> 18 namespace concurrency {
26 std::shared_ptr<EventStore>
_event {
nullptr} ;
53 using EventList = std::vector<std::shared_ptr<EventStore>> ;
54 using Clock = std::chrono::steady_clock ;
55 using TimePoint = std::chrono::steady_clock::time_point ;
62 void initialize()
override ;
64 void processRunHeader( std::shared_ptr<RunHeader> rhdr )
override ;
65 void pushEvent( std::shared_ptr<EventStore> event )
override ;
66 void popFinishedEvents( std::vector<std::shared_ptr<EventStore>> &events )
override ;
67 std::size_t freeSlots()
const override ;
71 void configureProcessors() ;
72 void configurePool() ;
92 UIntParameter _queueSize {*
this,
"EventQueueSize",
"The input event queue size (default 2*nthreads)"} ;
std::shared_ptr< SuperSequence > ProcessorSequence
IScheduler interface Interface for implementing a scheduling algorithm for event processing.
std::exception_ptr _exception
std::chrono::steady_clock Clock
std::vector< WorkerPool::PushResult > PushResultList
clock_type::time_point time_point
std::shared_ptr< EventStore > _event
< The input event
std::shared_ptr< EventStore > InputType
WorkerOutput struct Stores the output of a processor sequence call.
std::map< std::string, std::string > ConditionsMap
PEPScheduler class Parallel Event Processing Scheduler.
std::vector< std::shared_ptr< EventStore > > EventList
std::chrono::steady_clock::time_point TimePoint