The Gaudi Framework  v41r0 (bdbe7744)
Loading...
Searching...
No Matches
Gaudi::Interfaces::IQueueingEventProcessor Struct Referenceabstract

Extend IEventProcessor for asynchronous scheduling of events via queue-like interface. More...

#include </builds/gaudi/Gaudi/GaudiKernel/include/Gaudi/Interfaces/IQueueingEventProcessor.h>

Inheritance diagram for Gaudi::Interfaces::IQueueingEventProcessor:
Collaboration diagram for Gaudi::Interfaces::IQueueingEventProcessor:

Public Types

using ResultType = std::tuple<StatusCode, EventContext>
 Type of objects in the output queue.
Public Types inherited from IInterface
enum class  Status : StatusCode::code_t {
  FAILURE = 0 , SUCCESS = 1 , NO_INTERFACE , VERSMISMATCH ,
  LAST_ERROR
}
 Return status. More...
using iid = Gaudi::InterfaceId<IInterface, 0, 0>
 Interface ID.
using ext_iids = Gaudi::interface_list<iid>
 Extra interfaces.

Public Member Functions

 DeclareInterfaceID (IQueueingEventProcessor, 1, 0)
virtual void push (EventContext &&ctx)=0
 Schedule the processing of an event.
virtual bool empty () const =0
 Tell if the processor has events in the queues.
virtual std::optional< ResultType > pop ()=0
 Get the next available result.
Public Member Functions inherited from IEventProcessor
 DeclareInterfaceID (IEventProcessor, 4, 0)
 InterfaceID.
virtual EventContext createEventContext ()=0
virtual StatusCode executeEvent (EventContext &&ctx)=0
 Process single event.
virtual StatusCode executeRun (int maxevt)=0
 Process the maxevt events as a Run.
virtual StatusCode nextEvent (int maxevt)=0
 Process the next maxevt events.
virtual StatusCode stopRun ()=0
 Schedule a stop of the current event processing.
Public Member Functions inherited from IInterface
template<Gaudi::IsInterface TARGET>
TARGET * cast ()
template<Gaudi::IsInterface TARGET>
TARGET const * cast () const
template<typename TARGET>
requires ( !Gaudi::IsInterface<TARGET> )
TARGET * cast ()
template<typename TARGET>
requires ( !Gaudi::IsInterface<TARGET> )
TARGET const * cast () const
virtual std::vector< std::string > getInterfaceNames () const =0
 Returns a vector of strings containing the names of all the implemented interfaces.
virtual unsigned long addRef () const =0
 Increment the reference count of Interface instance.
virtual unsigned long release () const =0
 Release Interface instance.
virtual unsigned long refCount () const =0
 Current reference count.
virtual StatusCode queryInterface (const InterfaceID &ti, void **pp)=0
 Set the void** to the pointer to the requested interface of the instance.
virtual ~IInterface ()=default
 Virtual destructor.
virtual void const * i_cast (const InterfaceID &) const =0
void * i_cast (const InterfaceID &iidiid)

Additional Inherited Members

Static Public Member Functions inherited from IInterface
static const InterfaceID & interfaceID ()
 Return an instance of InterfaceID identifying the interface.
Protected Member Functions inherited from IInterface
virtual unsigned long decRef () const =0
 Decrement reference count and return the new reference count.

Detailed Description

Extend IEventProcessor for asynchronous scheduling of events via queue-like interface.

Definition at line 21 of file IQueueingEventProcessor.h.

Member Typedef Documentation

◆ ResultType

Type of objects in the output queue.

Definition at line 25 of file IQueueingEventProcessor.h.

Member Function Documentation

◆ DeclareInterfaceID()

Gaudi::Interfaces::IQueueingEventProcessor::DeclareInterfaceID ( IQueueingEventProcessor ,
1 ,
0  )

◆ empty()

virtual bool Gaudi::Interfaces::IQueueingEventProcessor::empty ( ) const
pure virtual

Tell if the processor has events in the queues.

Useful to know when all the work has been done (including retrieving the results).

◆ pop()

virtual std::optional< ResultType > Gaudi::Interfaces::IQueueingEventProcessor::pop ( )
pure virtual

Get the next available result.

If none is available, return std::nullopt.

◆ push()

virtual void Gaudi::Interfaces::IQueueingEventProcessor::push ( EventContext && ctx)
pure virtual

Schedule the processing of an event.

May block, depending on the concrete implementation.


The documentation for this struct was generated from the following file: