Skip to content

Replace IAsyncEventProcessor with IQueueingEventProcessor

Marco Clemencic requested to merge clemenci/Gaudi:async-with-queue into master

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)
Edited by Marco Clemencic

Merge request reports