The Gaudi Framework  master (d98a2936)
Promoters.h
Go to the documentation of this file.
1 /***********************************************************************************\
2 * (c) Copyright 1998-2025 CERN for the benefit of the LHCb and ATLAS collaborations *
3 * *
4 * This software is distributed under the terms of the Apache version 2 licence, *
5 * copied verbatim in the file "LICENSE". *
6 * *
7 * In applying this licence, CERN does not waive the privileges and immunities *
8 * granted to it by virtue of its status as an Intergovernmental Organization *
9 * or submit itself to any jurisdiction. *
10 \***********************************************************************************/
11 #pragma once
12 
13 #include "../../EventSlot.h"
14 #include "../PrecedenceRulesGraph.h"
15 #include "IGraphVisitor.h"
16 
17 namespace concurrency {
18 
19  //--------------------------------------------------------------------------
21  public:
23  DataReadyPromoter( EventSlot& slot, const Cause& cause, bool ifTrace = false )
24  : m_slot( &slot ), m_cause( cause ), m_trace( ifTrace ) {}
25 
28 
29  bool visitEnter( AlgorithmNode& ) const override;
30 
31  bool visit( AlgorithmNode& ) override;
32 
33  bool visitEnter( DataNode& ) const override;
34 
35  bool visit( DataNode& ) override;
36 
37  bool visitEnter( ConditionNode& ) const override;
38 
39  bool visit( ConditionNode& ) override;
40 
43  bool m_trace;
44  };
45 
46  //--------------------------------------------------------------------------
47  class DecisionUpdater : public IGraphVisitor {
48  public:
50  DecisionUpdater( EventSlot& slot, const Cause& cause, bool ifTrace = false )
51  : m_slot( &slot ), m_cause( cause ), m_trace( ifTrace ) {}
52 
54 
55  bool visit( AlgorithmNode& ) override;
56 
59  bool m_trace;
60  };
61 
62  //--------------------------------------------------------------------------
63  class Supervisor : public IGraphVisitor {
64  public:
66  Supervisor( EventSlot& slot, const Cause& cause, bool ifTrace = false )
67  : m_slot( &slot ), m_cause( cause ), m_trace( ifTrace ) {}
68 
71 
72  bool visitEnter( DecisionNode& ) const override;
73 
74  bool visit( DecisionNode& ) override;
75 
76  bool visitEnter( AlgorithmNode& ) const override;
77 
78  bool visit( AlgorithmNode& ) override;
79 
82  bool m_trace;
83  };
84 
85  //--------------------------------------------------------------------------
86  class RunSimulator : public IGraphVisitor {
87  public:
89  RunSimulator( EventSlot& slot, const Cause& cause ) : m_slot( &slot ), m_cause( cause ) {}
90 
93 
94  bool visitEnter( DecisionNode& ) const override;
95 
96  bool visit( DecisionNode& ) override;
97 
98  bool visitEnter( AlgorithmNode& ) const override;
99 
100  bool visit( AlgorithmNode& ) override;
101 
102  void reset() override { m_nodesSucceeded = 0; }
103 
107  };
108 } // namespace concurrency
concurrency::RunSimulator::m_nodesSucceeded
int m_nodesSucceeded
Definition: Promoters.h:106
concurrency::Supervisor
Definition: Promoters.h:63
concurrency::DecisionUpdater::m_slot
EventSlot * m_slot
Definition: Promoters.h:57
concurrency::DataReadyPromoter::m_slot
EventSlot * m_slot
Definition: Promoters.h:41
concurrency::Supervisor::Supervisor
Supervisor(EventSlot &slot, const Cause &cause, bool ifTrace=false)
Constructor.
Definition: Promoters.h:66
EventSlot
Class representing an event slot.
Definition: EventSlot.h:23
concurrency::DataReadyPromoter
Definition: Promoters.h:20
concurrency::DataReadyPromoter::m_trace
bool m_trace
Definition: Promoters.h:43
concurrency::RunSimulator::visit
bool visit(DecisionNode &) override
Definition: Promoters.cpp:361
concurrency::DecisionUpdater::visit
bool visit(AlgorithmNode &) override
Definition: Promoters.cpp:104
concurrency::Supervisor::visitEnter
bool visitEnter(DecisionNode &) const override
Definition: Promoters.cpp:152
concurrency::IGraphVisitor
Definition: IGraphVisitor.h:20
concurrency::DecisionUpdater::m_cause
Cause m_cause
Definition: Promoters.h:58
concurrency::RunSimulator::visitEnter
bool visitEnter(DecisionNode &) const override
Definition: Promoters.cpp:354
concurrency::AlgorithmNode
Definition: PrecedenceRulesGraph.h:485
concurrency::Supervisor::visit
bool visit(DecisionNode &) override
Definition: Promoters.cpp:159
concurrency::ConditionNode
Definition: PrecedenceRulesGraph.h:592
IGraphVisitor.h
concurrency::Supervisor::m_slot
EventSlot * m_slot
Definition: Promoters.h:80
concurrency::Supervisor::m_cause
Cause m_cause
Definition: Promoters.h:81
concurrency::IGraphVisitor::visit
virtual bool visit(DecisionNode &)
Definition: IGraphVisitor.h:25
concurrency
Definition: PrecedenceRulesGraph.cpp:38
concurrency::IGraphVisitor::visitEnter
virtual bool visitEnter(DecisionNode &) const
Definition: IGraphVisitor.h:24
concurrency::DecisionNode
Definition: PrecedenceRulesGraph.h:440
concurrency::DecisionUpdater
Definition: Promoters.h:47
concurrency::RunSimulator::m_slot
EventSlot * m_slot
Definition: Promoters.h:104
concurrency::DataReadyPromoter::visit
bool visit(AlgorithmNode &) override
Definition: Promoters.cpp:32
concurrency::DataReadyPromoter::m_cause
Cause m_cause
Definition: Promoters.h:42
concurrency::DecisionUpdater::m_trace
bool m_trace
Definition: Promoters.h:59
concurrency::DataNode
Definition: PrecedenceRulesGraph.h:554
concurrency::RunSimulator::RunSimulator
RunSimulator(EventSlot &slot, const Cause &cause)
Constructor.
Definition: Promoters.h:89
concurrency::RunSimulator::reset
void reset() override
Definition: Promoters.h:102
concurrency::DataReadyPromoter::visitEnter
bool visitEnter(AlgorithmNode &) const override
Definition: Promoters.cpp:24
concurrency::RunSimulator::m_cause
Cause m_cause
Definition: Promoters.h:105
concurrency::DecisionUpdater::DecisionUpdater
DecisionUpdater(EventSlot &slot, const Cause &cause, bool ifTrace=false)
Constructor.
Definition: Promoters.h:50
concurrency::Supervisor::m_trace
bool m_trace
Definition: Promoters.h:82
Cause
Definition: PrecedenceRulesGraph.h:397
concurrency::DataReadyPromoter::DataReadyPromoter
DataReadyPromoter(EventSlot &slot, const Cause &cause, bool ifTrace=false)
Constructor.
Definition: Promoters.h:23
concurrency::RunSimulator
Definition: Promoters.h:86