rework of the EventLoop Worker implementation
This ended up as a rather major rewrite of the Worker
class. Essentially I did three things though:
- I moved some functionality that was common between the different child classes into the
Worker
class itself. Back when we still had to support PROOF which worked completely differently this functionality needed to be implemented separately for each worker, but there was no longer any reason for such a setup. - I moved all the diagnostic, instrumentation and helper code out of the
Worker
class and into separate classes. For that I implemented a newModule
mechanism that allows to run code at various places inside the worker job. Not only does that simplify and clarify theWorker
implementation, it also makes it a lot easier to understand what each of these modules do. - I removed the state machine from the
Worker
class, which was actually quite hard to maintain and understand at this point. Part of the state machine is moved to a new moduleAlgorithmStateModule
, but most of the state machine logic I could just remove straight out. This is another simplification due to no longer supporting PROOF. - I also dd a general update to follow more of the standard ATLAS coding conventions with status codes, message streams/macros, smart pointers, etc.
Let's already alert @akraszna to this. The shifters should take a look at it first, but given the scope of these changes I presume that at least some parts will be flagged for expert review.