Replace IAsyncEventProcessor with IQueueingEventProcessor
After internal tests of the IAsyncEventProcessor
approach (see !878 (merged)) in LHCb (see lhcb/LHCb!1939 (merged)), it turned out that an interface based on promises and futures it not adequate to the Gaudi event loop, so we decided to replace it with a queue based interface (see LBCOMP-21).
The new interface IQueueingEventProcessor
is simple:
-
void push(EventContext&&)
- possibly blocking function to submit a new event for processing
-
std::optional<std::tuple<StatusCode, EventContext>> pop()
- non-blocking function to get the result of a processed event (the order may not match that of pushed events)
-
bool empty() const
- returns
true
if there's something in the system (either events being processed or results ready to be popped)
- returns
Edited by Marco Clemencic