X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2Fengine%2FElementaryNode.cxx;h=d227016b9bfb3542e7209a44ed99752a91644b43;hb=c9208a8ef7f32a620d9650908588320ff159a167;hp=a2dd127df25324571d0b3591038c75fd6c90e9a0;hpb=d43f5989bbbd14821954b71167be3477ddc2980a;p=modules%2Fyacs.git diff --git a/src/engine/ElementaryNode.cxx b/src/engine/ElementaryNode.cxx index a2dd127df..d227016b9 100644 --- a/src/engine/ElementaryNode.cxx +++ b/src/engine/ElementaryNode.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2006-2015 CEA/DEN, EDF R&D +// Copyright (C) 2006-2019 CEA/DEN, EDF R&D // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public @@ -47,11 +47,13 @@ using namespace std; ElementaryNode::ElementaryNode(const std::string& name): Node(name), _createDatastreamPorts(false), - _multi_port_node(false) + _multi_port_node(false), + _weight() { + _weight.setDefaultElementary(); } -ElementaryNode::ElementaryNode(const ElementaryNode& other, ComposedNode *father):Node(other,father) +ElementaryNode::ElementaryNode(const ElementaryNode& other, ComposedNode *father):Node(other,father), _weight(other._weight) { _createDatastreamPorts = other._createDatastreamPorts; _multi_port_node = other._multi_port_node; @@ -85,24 +87,25 @@ ElementaryNode::~ElementaryNode() delete *iter4; } -void ElementaryNode::init(bool start) +void ElementaryNode::initCommonPartWithoutStateManagement(bool start) { - DEBTRACE("ElementaryNode::init " << getName() << " " << start << " " << _state); - for(list::iterator iter=_setOfOutputPort.begin();iter!=_setOfOutputPort.end();iter++) (*iter)->exInit(); for(list::iterator iter2=_setOfInputPort.begin();iter2!=_setOfInputPort.end();iter2++) (*iter2)->exInit(start); _inGate.exReset(); +} + +void ElementaryNode::init(bool start) +{ + DEBTRACE("ElementaryNode::init " << getName() << " " << start << " " << _state); + initCommonPartWithoutStateManagement(start); if(_state == YACS::DISABLED) { exDisabledState(); // to refresh propagation of DISABLED state - return; + return ; } - if(start) //complete initialization - setState(YACS::READY); - else if(_state > YACS::LOADED)//partial initialization (inside a loop) - setState(YACS::TORECONNECT); + setState(YACS::READY); } bool ElementaryNode::isDeployable() const @@ -432,10 +435,10 @@ void ElementaryNode::getReadyTasks(std::vector& tasks) std::string input_port_name = (*iter1)->getName(); // Get Port Name in master node InputPort * master_port = getInputPort(input_port_name); - for (std::set::const_iterator itt=master_port->_backLinks.begin(); itt!=master_port->_backLinks.end();itt++) + for (auto itt : master_port->_backLinks) { // Connect dataflow - getProc()->edAddDFLink((*itt),(*iter1)); + getProc()->edAddDFLink(itt.first,(*iter1)); } } @@ -891,3 +894,10 @@ void ElementaryNode::getCoupledNodes(std::set& coupledSet) } } +void ElementaryNode::setWeight(double elementaryWeight) +{ + if(elementaryWeight<=0.) + throw Exception("ElementaryNode::setWeight : invalid input value !"); + _weight.setElementaryWeight(elementaryWeight); +} +