The Gaudi Framework  v29r0 (ff2e7097)
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 
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:
56  };
57  } // namespace recursive_CF
58 } // namespace concurrency
59 
60 #endif /* EXECUTIONFLOWMANAGER_H_ */
ControlFlowGraph * m_CFGraph
the control flow graph
STL class.
The AlgsExecutionStates encodes the state machine for the execution of algorithms within a single eve...
const std::string & name() const override
Retrieve name of the service.
ControlFlowGraph * getCFGraph() const
Get the flow graph instance.
SmartIF< ISvcLocator > & serviceLocator() const override
Retrieve pointer to service locator.
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.
Manage control flow part of the execution flow.