[WIP] Enable re-entrant Algorithms
Adds a new type of Algorithm, ReEntAlgorithm
, which has a const execute method. It inherits from Algorithm.
This builds on MR !273 (merged) and is a replacement for !177 (closed) which has been closed.
To explicitly differentiate it from a regular Algorithm, a different signature is used, StatusCode execute_R(const EventContext&) const
. The regular execute() method is disabled via a final qualifier, and returns a StatusCode::FAILURE;
ReEntAlgorithm::getContext()
overrides the default behaviour by returning the thread local EventContext.
A test method bool isReEntrant()
is also added to IAlgorithm.
When a re-entrant Algorithm is detected by the AlgResourcePool, only a single instance is created, but can be requested ad-infinitum.
Edited by Charles Leggett