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
trueif there's something in the system (either events being processed or results ready to be popped)
- returns
Edited by Marco Clemencic