The Gaudi Framework  master (ff829712)
Loading...
Searching...
No Matches
concurrency::ActiveLineageScout Class Reference

#include </builds/gaudi/Gaudi/GaudiHive/src/PRGraph/Visitors/Validators.h>

Inheritance diagram for concurrency::ActiveLineageScout:
Collaboration diagram for concurrency::ActiveLineageScout:

Public Member Functions

 ActiveLineageScout (const EventSlot *slot, const ControlFlowNode &node)
 Constructor.
 
bool visitEnter (AlgorithmNode &) const override
 
bool visitEnter (DataNode &) const override
 
bool visitEnter (ConditionNode &) const override
 
bool visit (DecisionNode &) override
 
void reset () override
 
virtual bool reply () const
 
virtual void visitParents (DecisionNode &)
 
virtual bool visit (AlgorithmNode &)
 
virtual bool visit (DataNode &)
 
virtual bool visit (ConditionNode &)
 
virtual bool visitEnter (DecisionNode &) const
 
- Public Member Functions inherited from concurrency::IGraphVisitor
virtual ~IGraphVisitor ()=default
 

Protected Attributes

const EventSlotm_slot
 
const ControlFlowNodem_startNode
 
bool m_active { true }
 
std::string m_previousNodeName
 

Detailed Description

Definition at line 51 of file Validators.h.

Constructor & Destructor Documentation

◆ ActiveLineageScout()

concurrency::ActiveLineageScout::ActiveLineageScout ( const EventSlot * slot,
const ControlFlowNode & node )
inline

Constructor.

Definition at line 54 of file Validators.h.

55 : m_slot( slot ), m_startNode( node ), m_previousNodeName( node.name() ) {}
const ControlFlowNode & m_startNode
Definition Validators.h:77

Member Function Documentation

◆ reply()

virtual bool concurrency::ActiveLineageScout::reply ( ) const
inlinevirtual

Reimplemented in concurrency::SubSlotScout.

Definition at line 71 of file Validators.h.

◆ reset()

void concurrency::ActiveLineageScout::reset ( )
inlineoverridevirtual

Reimplemented from concurrency::IGraphVisitor.

Reimplemented in concurrency::SubSlotScout.

Definition at line 66 of file Validators.h.

66 {
67 m_active = true;
69 }

◆ visit() [1/4]

virtual bool concurrency::IGraphVisitor::visit ( AlgorithmNode & )
inlinevirtual

Reimplemented from concurrency::IGraphVisitor.

Definition at line 28 of file IGraphVisitor.h.

28{ return true; }

◆ visit() [2/4]

virtual bool concurrency::IGraphVisitor::visit ( ConditionNode & )
inlinevirtual

Reimplemented from concurrency::IGraphVisitor.

Definition at line 34 of file IGraphVisitor.h.

34{ return true; }

◆ visit() [3/4]

virtual bool concurrency::IGraphVisitor::visit ( DataNode & )
inlinevirtual

Reimplemented from concurrency::IGraphVisitor.

Definition at line 31 of file IGraphVisitor.h.

31{ return true; }

◆ visit() [4/4]

bool concurrency::ActiveLineageScout::visit ( DecisionNode & node)
overridevirtual

Reimplemented from concurrency::IGraphVisitor.

Definition at line 38 of file Validators.cpp.

38 {
39
40 // Test if this node is already resolved
41 if ( m_slot->controlFlowState[node.getNodeIndex()] != -1 ) {
42 m_active = false;
43 return m_active;
44 }
45
46 // Test if the node that sent this scout is out-of-sequence in this node
47 if ( !node.m_modeConcurrent ) {
48
49 for ( auto& child : node.getDaughters() ) {
50
51 if ( child->name() == m_previousNodeName ) break;
52
53 if ( m_slot->controlFlowState[child->getNodeIndex()] == -1 ) {
54 m_active = false;
55 return m_active;
56 }
57 }
58 }
59
60 this->visitParents( node );
61
62 return this->reply();
63 }
virtual bool reply() const
Definition Validators.h:71
virtual void visitParents(DecisionNode &)

◆ visitEnter() [1/4]

bool concurrency::ActiveLineageScout::visitEnter ( AlgorithmNode & ) const
inlineoverridevirtual

Reimplemented from concurrency::IGraphVisitor.

Definition at line 60 of file Validators.h.

60{ return false; }

◆ visitEnter() [2/4]

bool concurrency::ActiveLineageScout::visitEnter ( ConditionNode & ) const
inlineoverridevirtual

Reimplemented from concurrency::IGraphVisitor.

Definition at line 62 of file Validators.h.

62{ return false; }

◆ visitEnter() [3/4]

bool concurrency::ActiveLineageScout::visitEnter ( DataNode & ) const
inlineoverridevirtual

Reimplemented from concurrency::IGraphVisitor.

Definition at line 61 of file Validators.h.

61{ return false; }

◆ visitEnter() [4/4]

virtual bool concurrency::IGraphVisitor::visitEnter ( DecisionNode & ) const
inlinevirtual

Reimplemented from concurrency::IGraphVisitor.

Definition at line 24 of file IGraphVisitor.h.

24{ return true; }

◆ visitParents()

void concurrency::ActiveLineageScout::visitParents ( DecisionNode & node)
virtual

Reimplemented in concurrency::SubSlotScout.

Definition at line 66 of file Validators.cpp.

66 {
67
68 for ( auto& parent : node.m_parents ) {
69 m_active = true;
70 m_previousNodeName = node.name();
71 parent->accept( *this );
72
73 // Any active parent means that this node is active
74 if ( this->reply() ) break;
75 }
76 }

Member Data Documentation

◆ m_active

bool concurrency::ActiveLineageScout::m_active { true }
protected

Definition at line 78 of file Validators.h.

78{ true };

◆ m_previousNodeName

std::string concurrency::ActiveLineageScout::m_previousNodeName
protected

Definition at line 79 of file Validators.h.

◆ m_slot

const EventSlot* concurrency::ActiveLineageScout::m_slot
protected

Definition at line 76 of file Validators.h.

◆ m_startNode

const ControlFlowNode& concurrency::ActiveLineageScout::m_startNode
protected

Definition at line 77 of file Validators.h.


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