ATLAS Offline Software
Public Member Functions | List of all members
EL::Detail::Manager Class Referenceabstract

an interface for classes that handle job management for the Driver More...

#include <Manager.h>

Inheritance diagram for EL::Detail::Manager:
Collaboration diagram for EL::Detail::Manager:

Public Member Functions

virtual ~Manager () noexcept=default
 standard (virtual) destructor More...
 
virtual std::pair< Detail::ManagerOrder, std::string > getManagerOrder () const noexcept=0
 get the order/name of this manager More...
 
virtual ::StatusCode doManagerStep (Detail::ManagerData &data) const =0
 do whatever needs to be done for the given submission step More...
 

Detailed Description

an interface for classes that handle job management for the Driver

The idea of this class is similar to Module, but for work being done on the submission node, instead of the worker node. Even though it is essentially a pluggable infrastructure, but it is meant for expert use only, not as something that the user would directly instantiate or configure himself.

The general way this works is that at the beginning of each task/operation a series of managers get loaded based on the task at hand. Then we go through a series of steps (ManagerStep) and at each step each manager gets the option to do what it needs to do at that step. That way the different managers can operate more or less independently and have their code interleave while avoiding a fair amount of spaghetti code. Any data that needs to be communicated between different managers or steps gets placed into the ManagerData structure, meaning individual managers don't need to know about each other directly.

So far (16 Aug 19) there are only very few managers defined, and most code still tries to address to many things in a single manager/driver. However, this should (hopefully) serve as the infrastructure for making such changes a lot easier in the future.

Definition at line 50 of file Manager.h.

Constructor & Destructor Documentation

◆ ~Manager()

virtual EL::Detail::Manager::~Manager ( )
virtualdefaultnoexcept

standard (virtual) destructor

Guarantee
no-fail

Member Function Documentation

◆ doManagerStep()

virtual ::StatusCode EL::Detail::Manager::doManagerStep ( Detail::ManagerData data) const
pure virtual

do whatever needs to be done for the given submission step

Guarantee
basic
Failures
job configuration errors
driver errors

Implemented in EL::Detail::DriverManager, EL::Detail::BaseManager, EL::Detail::SubmitDirManager, EL::Detail::RetrieveManager, and EL::Detail::SubmitManager.

◆ getManagerOrder()

virtual std::pair<Detail::ManagerOrder,std::string> EL::Detail::Manager::getManagerOrder ( ) const
pure virtualnoexcept

get the order/name of this manager

This is both used to identify the manager we are looking at, and to make sure they get executed in the right order. It is a mistake to load two managers that report the same order.

This is a pair of an enum that defines the absolute order of managers, and a string that identifies the stream that this manager belongs to. If this manager is not specific to a stream this should be the empty stream.

Guarantee
no-fail

Implemented in EL::Detail::DriverManager, EL::Detail::BaseManager, EL::Detail::SubmitDirManager, EL::Detail::RetrieveManager, and EL::Detail::SubmitManager.


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