| The Gaudi Framework v29r1 (5cd95fa2)

- Main Page
- Related Pages
- Modules
- Namespaces
- Classes
- Files

- File List
- File Members

ExecutionFlowManager.h
Go to the documentation of this file.
1 #ifndef EXECUTIONFLOWMANAGER_H_
2 #define EXECUTIONFLOWMANAGER_H_
3
4 #include "ControlFlowGraph.h"
5
6 namespace concurrency
7 {
8
9 namespace recursive_CF
10 {
11
12 struct IExecutionFlowManager {
13 virtual ~IExecutionFlowManager() {}
14 };
15
24 class ExecutionFlowManager : public CommonMessaging<IExecutionFlowManager>
25 {
26 public:
28 ExecutionFlowManager() : m_name( "ExecutionFlowManager" ), m_CFGraph( 0 ){};
30 ~ExecutionFlowManager() override = default;
33 void initialize( ControlFlowGraph* graph,
34 const std::unordered_map<std::string, unsigned int>& algname_index_map );
36 inline ControlFlowGraph* getCFGraph() const { return m_CFGraph; }
38 void updateEventState( AlgsExecutionStates& algo_states, std::vector<int>& node_decisions ) const;
40 bool rootDecisionResolved( const std::vector<int>& node_decisions ) const;
42 void printEventState( std::stringstream& ss, AlgsExecutionStates& states, const std::vector<int>& node_decisions,
43 const unsigned int& recursionLevel ) const
44 {
45 m_CFGraph->printState( ss, states, node_decisions, recursionLevel );
46 }
48 const std::string& name() const override { return m_name; }
50 SmartIF<ISvcLocator>& serviceLocator() const override { return m_CFGraph->serviceLocator(); }
51
52 private:
53 std::string m_name;
55 ControlFlowGraph* m_CFGraph;
56 };
57 } // namespace recursive_CF
58 } // namespace concurrency
59
60 #endif /* EXECUTIONFLOWMANAGER_H_ */
SmartIF< ISvcLocator >
concurrency::recursive_CF::ExecutionFlowManager::m_CFGraph
ControlFlowGraph * m_CFGraph
the control flow graph
Definition: ExecutionFlowManager.h:55
concurrency
Definition: ControlFlowGraph.cpp:4
std::stringstream
STL class.
std::string
STL class.
concurrency::recursive_CF::ExecutionFlowManager::m_name
std::string m_name
Definition: ExecutionFlowManager.h:53
ControlFlowGraph.h
concurrency::recursive_CF::ControlFlowGraph
Definition: ControlFlowGraph.h:144
AlgsExecutionStates
The AlgsExecutionStates encodes the state machine for the execution of algorithms within a single eve...
Definition: AlgsExecutionStates.h:28
concurrency::recursive_CF::ExecutionFlowManager::name
const std::string & name() const override
Retrieve name of the service.
Definition: ExecutionFlowManager.h:48
concurrency::recursive_CF::ExecutionFlowManager::getCFGraph
ControlFlowGraph * getCFGraph() const
Get the flow graph instance.
Definition: ExecutionFlowManager.h:36
concurrency::recursive_CF::ExecutionFlowManager::serviceLocator
SmartIF< ISvcLocator > & serviceLocator() const override
Retrieve pointer to service locator.
Definition: ExecutionFlowManager.h:50
plotSpeedupsPyRoot.graph
graph
Definition: plotSpeedupsPyRoot.py:142
std::vector< int >
concurrency::recursive_CF::ExecutionFlowManager::ExecutionFlowManager
ExecutionFlowManager()
Constructor.
Definition: ExecutionFlowManager.h:28
concurrency::recursive_CF::IExecutionFlowManager
Definition: ExecutionFlowManager.h:12
concurrency::recursive_CF::ExecutionFlowManager::printEventState
void printEventState(std::stringstream &ss, AlgsExecutionStates &states, const std::vector< int > &node_decisions, const unsigned int &recursionLevel) const
Print the state of the control flow for a given event.
Definition: ExecutionFlowManager.h:42
concurrency::recursive_CF::IExecutionFlowManager::~IExecutionFlowManager
virtual ~IExecutionFlowManager()
Definition: ExecutionFlowManager.h:13
CommonMessaging
Definition: CommonMessaging.h:62
concurrency::recursive_CF::ExecutionFlowManager
Manage control flow part of the execution flow.
Definition: ExecutionFlowManager.h:24
std::unordered_map< std::string, unsigned int >