Version: 9.15.0
Node.cxx
Go to the documentation of this file.
1 // Copyright (C) 2006-2025 CEA, EDF
2 //
3 // This library is free software; you can redistribute it and/or
4 // modify it under the terms of the GNU Lesser General Public
5 // License as published by the Free Software Foundation; either
6 // version 2.1 of the License, or (at your option) any later version.
7 //
8 // This library is distributed in the hope that it will be useful,
9 // but WITHOUT ANY WARRANTY; without even the implied warranty of
10 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11 // Lesser General Public License for more details.
12 //
13 // You should have received a copy of the GNU Lesser General Public
14 // License along with this library; if not, write to the Free Software
15 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
16 //
17 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
18 //
19 
20 #include "Node.hxx"
21 #include "DynParaLoop.hxx"
22 #include "InputPort.hxx"
23 #include "OutputPort.hxx"
24 #include "InPropertyPort.hxx"
25 #include "ComposedNode.hxx"
26 #include "Dispatcher.hxx"
27 #include "InputDataStreamPort.hxx"
28 #include "OutputDataStreamPort.hxx"
29 #include <iostream>
30 #include <fstream>
31 
32 //#define _DEVDEBUG_
33 #include "YacsTrace.hxx"
34 
35 using namespace YACS::ENGINE;
36 using namespace std;
37 
44 const char Node::SEP_CHAR_IN_PORT[]=".";
45 
46 int Node::_total = 0;
47 std::map<int,Node*> Node::idMap;
48 
50 {
51  insert(make_pair(YACS::READY, "READY"));
52  insert(make_pair(YACS::TOLOAD, "TOLOAD"));
53  insert(make_pair(YACS::LOADED, "LOADED"));
54  insert(make_pair(YACS::TOACTIVATE, "TOACTIVATE"));
55  insert(make_pair(YACS::ACTIVATED, "ACTIVATED"));
56  insert(make_pair(YACS::DESACTIVATED, "DESACTIVATED"));
57  insert(make_pair(YACS::DONE, "DONE"));
58  insert(make_pair(YACS::SUSPENDED, "SUSPENDED"));
59  insert(make_pair(YACS::LOADFAILED, "LOADFAILED"));
60  insert(make_pair(YACS::EXECFAILED, "EXECFAILED"));
61  insert(make_pair(YACS::PAUSE, "PAUSE"));
62  insert(make_pair(YACS::INTERNALERR, "INTERNALERR"));
63  insert(make_pair(YACS::DISABLED, "DISABLED"));
64  insert(make_pair(YACS::FAILED, "FAILED"));
65  insert(make_pair(YACS::ERROR, "ERROR"));
66 }
67 
68 
69 Node::Node(const std::string& name):_name(name),_inGate(this),_outGate(this),_father(0),_state(YACS::READY),
70  _implementation(Runtime::RUNTIME_ENGINE_INTERACTION_IMPL_NAME),_modified(1)
71 {
72  // Should be protected by lock ??
74  _numId = _total++;
75  idMap[_numId]=this;
76 
77  // Every node has an InPropertyPort
78  _inPropertyPort = new InPropertyPort("__InPropertyPort__Node__YACS_", this, Runtime::_tc_propvec);
79 }
80 
81 Node::Node(const Node& other, ComposedNode *father):_inGate(this),_outGate(this),_name(other._name),_father(father),
82  _state(YACS::READY),_implementation(other._implementation),
83  _propertyMap(other._propertyMap),_modified(1)
84 {
85  _numId = _total++;
86  idMap[_numId]=this;
87 
88  // Every node has an InPropertyPort
89  _inPropertyPort = new InPropertyPort("__InPropertyPort__Node__YACS_", this, Runtime::_tc_propvec);
90  _eventReceiver=const_cast<Node *>(&other);
91 }
92 
94 {
95  delete _inPropertyPort;
96 }
97 
102 void Node::init(bool start)
103 {
104  _inGate.exReset();
105  _outGate.exReset();
106  if(_state == YACS::DISABLED)
107  {
108  exDisabledState(); // to refresh propagation of DISABLED state
109  return;
110  }
112 }
113 
131 Node *Node::clone(ComposedNode *father, bool editionOnly) const
132 {
133  Node *ret(simpleClone(father,editionOnly));
134  ret->performDuplicationOfPlacement(*this);
135  return ret;
136 }
137 
150 Node *Node::cloneWithoutCompAndContDeepCpy(ComposedNode *father, bool editionOnly) const
151 {
152  Node *ret(simpleClone(father,editionOnly));
154  return ret;
155 }
156 
158 
162 void Node::setName(const std::string& name)
163 {
165  if(_father)
166  {
167  if(_father->isNameAlreadyUsed(name))
168  {
169  if ( _father->getChildByName(name) != this )
170  {
171  std::string what("Name ");
172  what+=name;
173  what+=" already exists in the scope of "; what+=_father->getName();
174  throw Exception(what);
175  }
176  }
177  }
178  _name=name;
179 }
180 
185 list<Node *> Node::getOutNodes() const
186 {
187  list<Node *> ret;
188  list<InGate *> inGates=_outGate.edSetInGate();
189  for(list<InGate *>::iterator iter=inGates.begin();iter!=inGates.end();iter++)
190  ret.push_back((*iter)->getNode());
191  return ret;
192 }
193 
195 {
196  return _inGate.exIsReady();
197 }
198 
200 
207 {
208  if(_state==YACS::DISABLED)return;
209  if(_inGate.exIsReady())
211 }
212 
214 
220 {
221  DEBTRACE( "Node::exFailedState: " << getName() );
224 }
225 
227 
233 {
234  DEBTRACE( "Node::exDisabledState: " << getName() );
237 }
238 
239 InPort *Node::getInPort(const std::string& name) const
240 {
241  InPort *ret;
242  try
243  {
244  ret=getInputPort(name);
245  }
246  catch(Exception& e)
247  {
248  ret=getInputDataStreamPort(name);
249  }
250  return ret;
251 }
252 
255 {
256  return _inPropertyPort;
257 }
258 
259 InputPort *
260 Node::getInputPort(const std::string& name) const
261 {
262  if (name == "__InPropertyPort__Node__YACS_")
263  return _inPropertyPort;
264  else
265  {
266  std::string what("Node::getInputPort : the port with name "); what+=name; what+=" does not exist on the current level";
267  throw Exception(what);
268  }
269 }
270 
275 OutPort *Node::getOutPort(const std::string& name) const
276 {
277  OutPort *ret;
278  try
279  {
280  ret=getOutputPort(name);
281  }
282  catch(Exception& e)
283  {
284  ret=getOutputDataStreamPort(name);
285  }
286  return ret;
287 }
288 
289 std::list<InPort *> Node::getSetOfInPort() const
290 {
291  list<InPort *> ret;
292  list<InputPort *> data=getSetOfInputPort();
293  ret.insert(ret.end(),data.begin(),data.end());
294  list<InputDataStreamPort *> ds=getSetOfInputDataStreamPort();
295  ret.insert(ret.end(),ds.begin(),ds.end());
296  return ret;
297 }
298 
299 std::list<OutPort *> Node::getSetOfOutPort() const
300 {
301  list<OutPort *> ret;
302  list<OutputPort *> data=getSetOfOutputPort();
303  ret.insert(ret.end(),data.begin(),data.end());
304  list<OutputDataStreamPort *> ds=getSetOfOutputDataStreamPort();
305  ret.insert(ret.end(),ds.begin(),ds.end());
306  return ret;
307 }
308 
317 std::list<ComposedNode *> Node::getAllAscendanceOf(ComposedNode *levelToStop) const
318 {
319  list<ComposedNode *> ret;
320  if(this==levelToStop)
321  return ret;
322  for(ComposedNode *iter=_father;iter!=levelToStop && iter!=0; iter=iter->_father)
323  ret.push_back(iter);
324  return ret;
325 }
326 
327 bool Node::operator>(const Node& other) const
328 {
329  const ComposedNode *iter=other._father;
330  while(iter!=0 && iter!=this)
331  iter=iter->_father;
332  return iter==this;
333 }
334 
335 bool Node::operator<(const Node& other) const
336 {
337  const ComposedNode *iter=_father;
338  while(iter!=0 && iter!=(&other))
339  iter=iter->_father;
340  return iter==(&other);
341 }
342 
351 {
352  return _implementation;
353 }
354 
356 set<InputPort *> Node::edGetSetOfUnitializedInputPort() const
357 {
358  set<InputPort *> setOfUnitializedInputPort;
359  list<InputPort *> allOfInputPorts=getSetOfInputPort();
360  for(list<InputPort *>::const_iterator iter=allOfInputPorts.begin();iter!=allOfInputPorts.end();iter++)
361  {
362  if ( ! (*iter)->edIsInitialized() )
363  setOfUnitializedInputPort.insert(*iter);
364  }
365  return setOfUnitializedInputPort;
366 }
367 
370 {
371  set<InputPort *> setOfUnitializedInputPort = edGetSetOfUnitializedInputPort();
372  return ( setOfUnitializedInputPort.size() == 0);
373 }
374 
379 {
381 }
382 
387 {
388  DEBTRACE("Node::exForwardFinished");
390 }
391 
396 {
399 }
400 
402 {
403  if(!_father)
404  return 0;
405  return _father->getProc();
406 }
407 
408 const Proc * Node::getProc() const
409 {
410  if(!_father)
411  return 0;
412  return _father->getProc();
413 }
414 
416 {
417  if(!_father)
418  return NULL;
419  ComposedNode *iter(_father);
420  do
421  {
422  DynParaLoop *iter2(dynamic_cast<DynParaLoop *>(iter));
423  if(iter2)
424  return iter2;
425  iter=iter->_father;
426  }
427  while(iter);
428  return NULL;
429 }
430 
432 {
433  if(!_father)
434  throw Exception("No root node");
435  ComposedNode *iter=_father;
436  while(iter->_father)
437  iter=iter->_father;
438  return (ComposedNode *)iter;
439 }
440 
446 void Node::checkValidityOfPortName(const std::string& name)
447 {
448  if(name.find(SEP_CHAR_IN_PORT, 0 )!=string::npos)
449  {
450  string what("Port name "); what+=name; what+="not valid because it contains character "; what+=SEP_CHAR_IN_PORT;
451  throw Exception(what);
452  }
453 }
454 
455 void Node::checkValidityOfNodeName(const std::string& name)
456 {
457  if(name.find(ComposedNode::SEP_CHAR_BTW_LEVEL,0)!=string::npos)
458  {
459  string what("Node name "); what+=name; what+="not valid because it contains character "; what+=ComposedNode::SEP_CHAR_BTW_LEVEL;
460  throw Exception(what);
461  }
462 }
463 
469 {
470  if(node1!=0 && node2!=0)
471  {
472  if(node1->_father==node2->_father)
473  return node1->_father;
474  }
475  throw Exception("check failed : nodes have not the same father");
476 }
477 
478 const std::string Node::getId() const
479 {
480  std::string id=getRootNode()->getName();
481  if(getRootNode() != this)
482  id= id+'.'+ getRootNode()->getChildName(this);
483  string::size_type debut =id.find_first_of('.');
484  while(debut != std::string::npos){
485  id[debut]='_';
486  debut=id.find_first_of('.',debut);
487  }
488  return id;
489 }
490 
491 void Node::setProperty(const std::string& name, const std::string& value)
492 {
493  DEBTRACE("Node::setProperty " << name << " " << value);
494  _propertyMap[name]=value;
495 }
496 
497 std::string Node::getProperty(const std::string& name)
498 {
499  std::map<std::string,std::string>::iterator it=_propertyMap.find(name);
500 
501  if(it != _propertyMap.end())
502  return it->second;
503  else if(_father)
504  return _father->getProperty(name);
505  else
506  return "";
507 }
508 
509 std::map<std::string,std::string> Node::getProperties()
510 {
511  std::map<std::string,std::string> amap=_propertyMap;
512  if(_father)
513  {
514  std::map<std::string,std::string> fatherMap=_father->getProperties();
515  amap.insert(fatherMap.begin(),fatherMap.end());
516  }
517 
518  return amap;
519 }
520 
521 void Node::setProperties(std::map<std::string,std::string> properties)
522 {
523  _propertyMap.clear();
524  _propertyMap=properties;
525 }
526 
528 
539 {
540  if(!_father) //the root node
541  return _state;
543  return YACS::DISABLED;
544  return _father->getEffectiveState(this);
545 }
546 
548 
553 {
554  if(node->getState()==YACS::DISABLED)
555  return YACS::DISABLED;
556 
557  YACS::StatesForNode effectiveState=getEffectiveState();
558  switch(effectiveState)
559  {
560  case YACS::READY:
561  return YACS::READY;
562  case YACS::TOACTIVATE:
563  return YACS::READY;
564  case YACS::DISABLED:
565  return YACS::DISABLED;
566  case YACS::ERROR:
567  return YACS::FAILED;
568  default:
569  return node->getState();
570  }
571 }
572 
574 
579 {
580  switch(state)
581  {
582  case YACS::READY:
583  return "pink";
584  case YACS::TOLOAD:
585  return "magenta";
586  case YACS::LOADED:
587  return "magenta";
588  case YACS::TOACTIVATE:
589  return "purple";
590  case YACS::ACTIVATED:
591  return "blue";
592  case YACS::DONE:
593  return "green";
594  case YACS::ERROR:
595  return "red";
596  case YACS::FAILED:
597  return "orange";
598  case YACS::DISABLED:
599  return "grey";
600  case YACS::PAUSE:
601  return "white";
602  default:
603  return "white";
604  }
605 }
606 
608 
611 void Node::writeDot(std::ostream &os) const
612 {
613  os << getId() << "[fillcolor=\"" ;
615  os << getColorState(state);
616  os << "\" label=\"" << getImplementation() << "Node:" ;
617  os << getQualifiedName() <<"\"];\n";
618 }
619 
620 void Node::writeDotInFile(const std::string& fileName) const
621 {
622  std::ofstream f(fileName);
623  this->writeDot(f);
624 }
625 
627 
632 std::string Node::getQualifiedName() const
633 {
634  if(_father)
635  return _father->getMyQualifiedName(this);
636  return getName();
637 }
638 
640 
644 {
645  return _numId;
646 }
647 
649 
653 {
654  DEBTRACE("Node::setState: " << getName() << " " << theState);
655  _state = theState;
656  // emit notification to all observers registered with the dispatcher on any change of the node's state
657  sendEvent("status");
658 }
659 
660 std::vector<std::pair<std::string,int> > Node::getDPLScopeInfo(ComposedNode *gfn)
661 {
662  std::vector< std::pair<std::string,int> > ret;
663  Node *work2(this);
664  ComposedNode *work(getFather());
665  while(work!=gfn && work!=0)
666  {
667  DynParaLoop *workc(dynamic_cast<DynParaLoop *>(work));
668  if(workc)
669  {
670  std::pair<std::string,int> p(gfn->getChildName(workc),workc->getBranchIDOfNode(work2));
671  ret.push_back(p);
672  }
673  work2=work;
674  work=work->getFather();
675  }
676  return ret;
677 }
678 
684 {
685 }
686 
688 
691 void Node::sendEvent(const std::string& event)
692 {
693  DEBTRACE("Node::sendEvent " << event);
695  if(!_eventReceiver)
696  {
697  disp->dispatch(this,event);
698  }
699  else
700  {
701  disp->dispatchFromClone(_eventReceiver,event,this);
702  }
703 }
704 
706 
709 void Node::sendEvent2(const std::string& event, void *something)
710 {
712  disp->dispatch2(this,event,something);
713 }
714 
720 {
721  node->setState(state);
722 }
723 
725 
731 {
732  if(_modified)
733  edUpdateState();
734  if(_state > YACS::INVALID)
735  return 1;
736  else
737  return 0;
738 }
739 
741 
746 {
747  DEBTRACE("Node::edUpdateState(): " << _modified);
748  _modified=0;
749 }
750 
752 
755 std::string Node::getErrorReport()
756 {
757  if(getState()==YACS::DISABLED)
758  return "<error node= "+getName()+ "state= DISABLED/>\n";
759 
760  YACS::StatesForNode effectiveState=getEffectiveState();
761 
762  DEBTRACE("Node::getErrorReport: " << getName() << " " << effectiveState << " " << _errorDetails);
763  if(effectiveState != YACS::INVALID && effectiveState != YACS::ERROR &&
764  effectiveState != YACS::FAILED && effectiveState != YACS::INTERNALERR)
765  return "";
766 
767  std::string report="<error node= " ;
768  report=report + getName() ;
769  switch(effectiveState)
770  {
771  case YACS::INVALID:
772  report=report+" state= INVALID";
773  break;
774  case YACS::ERROR:
775  report=report+" state= ERROR";
776  break;
777  case YACS::FAILED:
778  report=report+" state= FAILED";
779  break;
780  case YACS::INTERNALERR:
781  report=report+" state= INTERNALERR";
782  break;
783  default:
784  break;
785  }
786  report=report + ">\n" ;
787  report=report+_errorDetails;
788  report=report+"\n</error>";
789  return report;
790 }
791 
793 
797 {
798  return "";
799 }
800 
802 
806 {
807  DEBTRACE("Node::modified() " << getName());
808  _modified=1;
809  if(_father)
810  _father->modified();
811 }
812 
814 
818 {
819  if(_state == YACS::READY)
821 }
822 
824 
828 {
829  static NodeStateNameMap nodeStateNameMap;
830  return nodeStateNameMap[state];
831 }
832 
834 
837 void Node::shutdown(int level)
838 {
839  if(level==0)return;
840 }
841 
843 
847 {
848 }
849 
851 void Node::resetState(int level)
852 {
853  DEBTRACE("Node::resetState " << getName() << "," << level << "," << _state);
855  {
857  InGate* inGate = getInGate();
858  std::list<OutGate*> backlinks = inGate->getBackLinks();
859  for (std::list<OutGate*>::iterator io = backlinks.begin(); io != backlinks.end(); io++)
860  {
861  Node* fromNode = (*io)->getNode();
862  if(fromNode->getState() == YACS::DONE)
863  {
864  inGate->setPrecursorDone(*io);
865  }
866  }
867  }
868 }
#define DEBTRACE(msg)
Definition: YacsTrace.hxx:31
Base class for all composed nodes.
std::string getChildName(const Node *node) const
Node * getChildByName(const std::string &name) const
virtual bool isNameAlreadyUsed(const std::string &name) const
std::string getName() const
static const char SEP_CHAR_BTW_LEVEL[]
std::string getProperty(const std::string &name) override
virtual std::string getMyQualifiedName(const Node *directSon) const
Base class for dispatcher in observer pattern.
Definition: Dispatcher.hxx:74
virtual void dispatchFromClone(Node *originalInstance, const std::string &event, Node *clonedInstanceGeneratingEvent)
Definition: Dispatcher.cxx:112
virtual void dispatch(Node *object, const std::string &event)
Definition: Dispatcher.cxx:85
static Dispatcher * getDispatcher()
Definition: Dispatcher.cxx:55
virtual void dispatch2(Node *object, const std::string &event, void *something)
Definition: Dispatcher.cxx:99
Base class for dynamically (fully or semifully) built graphs.
Definition: DynParaLoop.hxx:41
int getBranchIDOfNode(Node *node) const
void setPrecursorDone(OutGate *fromgate)
Definition: InGate.cxx:142
void edDisconnectAllLinksToMe()
Definition: InGate.cxx:46
std::list< OutGate * > getBackLinks()
Definition: InGate.cxx:134
bool exIsReady() const
Definition: InGate.cxx:126
class for Input Property Ports
Base class for Input Ports.
Definition: InputPort.hxx:44
Base class for all nodes.
Definition: Node.hxx:70
virtual void edUpdateState()
update the status of the node
Definition: Node.cxx:745
static std::map< int, Node * > idMap
Definition: Node.hxx:188
OutGate _outGate
Definition: Node.hxx:87
std::string _name
Definition: Node.hxx:89
static void checkValidityOfPortName(const std::string &name)
Definition: Node.cxx:446
virtual void sendEvent2(const std::string &event, void *something)
emit notification to all observers registered with the dispatcher
Definition: Node.cxx:709
virtual std::list< OutputPort * > getSetOfOutputPort() const =0
virtual void exForwardFinished()
Definition: Node.cxx:386
virtual Node * simpleClone(ComposedNode *father, bool editionOnly=true) const =0
InPropertyPort * getInPropertyPort() const
Definition: Node.cxx:254
virtual ComposedNode * getRootNode() const
Definition: Node.cxx:431
void writeDotInFile(const std::string &fileName) const
Definition: Node.cxx:620
static std::string getStateName(YACS::StatesForNode state)
Return the name of a state.
Definition: Node.cxx:827
virtual void shutdown(int level)
Stop all pending activities of the node.
Definition: Node.cxx:837
ComposedNode * _father
Definition: Node.hxx:90
std::string getImplementation() const
Definition: Node.cxx:350
static int _total
Definition: Node.hxx:95
virtual void setProperty(const std::string &name, const std::string &value)
Definition: Node.cxx:491
std::string getColorState(YACS::StatesForNode state) const
Return the color associated to a state.
Definition: Node.cxx:578
InGate _inGate
Definition: Node.hxx:86
std::vector< std::pair< std::string, int > > getDPLScopeInfo(ComposedNode *gfn)
Definition: Node.cxx:660
virtual InputDataStreamPort * getInputDataStreamPort(const std::string &name) const =0
virtual std::list< InputDataStreamPort * > getSetOfInputDataStreamPort() const =0
Node(const std::string &name)
Definition: Node.cxx:69
virtual void modified()
Sets Node in modified state and its father if it exists.
Definition: Node.cxx:805
std::string getQualifiedName() const
same as Node::getName() in most cases, but differs for children of switch
Definition: Node.cxx:632
void setName(const std::string &name)
Change the name of the node.
Definition: Node.cxx:162
virtual std::set< InputPort * > edGetSetOfUnitializedInputPort() const
Becomes deprecated soon. Replaced by ComposedNode::CheckConsistency.
Definition: Node.cxx:356
InPropertyPort * _inPropertyPort
Definition: Node.hxx:88
std::list< Node * > getOutNodes() const
Definition: Node.cxx:185
virtual void exUpdateState()
Update the node state.
Definition: Node.cxx:206
virtual void applyDPLScope(ComposedNode *gfn)
Definition: Node.cxx:683
Node * clone(ComposedNode *father, bool editionOnly=true) const
This method MUST NEVER BE VIRTUAL
Definition: Node.cxx:131
const std::string getId() const
Definition: Node.cxx:478
std::map< std::string, std::string > _propertyMap
Definition: Node.hxx:98
static ComposedNode * checkHavingCommonFather(Node *node1, Node *node2)
Definition: Node.cxx:468
virtual void performDuplicationOfPlacement(const Node &other)=0
performs a duplication of placement using clone method of containers and components....
virtual std::string getContainerLog()
returns a string that contains the name of the container log file if it exists
Definition: Node.cxx:796
virtual void init(bool start=true)
Definition: Node.cxx:102
friend class InPropertyPort
Definition: Node.hxx:76
virtual void cleanNodes()
Clean the node in case of not clean exit.
Definition: Node.cxx:846
virtual OutPort * getOutPort(const std::string &name) const
Definition: Node.cxx:275
ComposedNode * getFather() const
Definition: Node.hxx:127
virtual void writeDot(std::ostream &os) const
Dump to the input stream a dot representation of the node.
Definition: Node.cxx:611
static void checkValidityOfNodeName(const std::string &name)
Definition: Node.cxx:455
Node * _eventReceiver
Definition: Node.hxx:99
std::list< OutPort * > getSetOfOutPort() const
Definition: Node.cxx:299
std::list< ComposedNode * > getAllAscendanceOf(ComposedNode *levelToStop=0) const
Definition: Node.cxx:317
std::map< std::string, std::string > getProperties()
Definition: Node.cxx:509
virtual ~Node()
Definition: Node.cxx:93
virtual void resetState(int level)
Reset the node state depending on the parameter level.
Definition: Node.cxx:851
std::list< InPort * > getSetOfInPort() const
Definition: Node.cxx:289
void setState(YACS::StatesForNode theState)
Sets the given state for node.
Definition: Node.cxx:652
DynParaLoop * getClosestDPLAmongAncestors() const
Definition: Node.cxx:415
std::string _implementation
Definition: Node.hxx:97
virtual void exDisabledState()
Notify this node that it has been disabled.
Definition: Node.cxx:232
virtual std::string getErrorReport()
returns a string that contains an error report if the node is in error
Definition: Node.cxx:755
InGate * getInGate()
Definition: Node.hxx:123
bool operator<(const Node &other) const
Definition: Node.cxx:335
virtual YACS::StatesForNode getState() const
Definition: Node.hxx:118
virtual void sendEvent(const std::string &event)
emit notification to all observers registered with the dispatcher
Definition: Node.cxx:691
virtual void setProperties(std::map< std::string, std::string > properties)
Definition: Node.cxx:521
virtual void performShallowDuplicationOfPlacement(const Node &other)=0
performs a also duplication of placement but here containers and components are not copied at all wha...
bool operator>(const Node &other) const
Definition: Node.cxx:327
virtual std::list< InputPort * > getSetOfInputPort() const =0
Node * cloneWithoutCompAndContDeepCpy(ComposedNode *father, bool editionOnly=true) const
This method MUST NEVER BE VIRTUAL
Definition: Node.cxx:150
virtual int isValid()
indicates if the node is valid (returns 1) or not (returns 0)
Definition: Node.cxx:730
static const char SEP_CHAR_IN_PORT[]
Definition: Node.hxx:94
InPort * getInPort(const std::string &name) const
Definition: Node.cxx:239
const std::string & getName() const
Definition: Node.hxx:125
virtual InputPort * getInputPort(const std::string &name) const
Definition: Node.cxx:260
virtual void exForwardFailed()
Definition: Node.cxx:378
virtual OutputPort * getOutputPort(const std::string &name) const =0
virtual void ensureLoading()
Put this node into TOLOAD state when possible.
Definition: Node.cxx:817
std::string _errorDetails
Definition: Node.hxx:93
virtual YACS::StatesForNode getEffectiveState() const
Return the node state in the context of its father.
Definition: Node.cxx:538
YACS::StatesForNode _state
Definition: Node.hxx:91
virtual bool edAreAllInputPortInitialized() const
Becomes deprecated soon. Replaced by ComposedNode::CheckConsistency.
Definition: Node.cxx:369
int getNumId()
return node instance identifiant, unique for each node instance
Definition: Node.cxx:643
bool exIsControlReady() const
Definition: Node.cxx:194
virtual std::string getProperty(const std::string &name)
Definition: Node.cxx:497
virtual void exFailedState()
Notify this node that its execution has failed.
Definition: Node.cxx:219
virtual Proc * getProc()
Definition: Node.cxx:401
virtual OutputDataStreamPort * getOutputDataStreamPort(const std::string &name) const =0
virtual std::list< OutputDataStreamPort * > getSetOfOutputDataStreamPort() const =0
virtual void edDisconnectAllLinksWithMe()
Definition: Node.cxx:395
void edDisconnectAllLinksFromMe()
Definition: OutGate.cxx:82
std::list< InGate * > edSetInGate() const
Definition: OutGate.cxx:112
void exNotifyDone()
Notify this port that its node is finished.
Definition: OutGate.cxx:55
void exNotifyFailed()
Notify this port that its node has failed.
Definition: OutGate.cxx:66
void exNotifyDisabled()
Notify this port that its node has been disabled.
Definition: OutGate.cxx:76
Base class for all schema objects.
Definition: Proc.hxx:44
static YACS::ENGINE::TypeCode * _tc_propvec
Definition: Runtime.hxx:142
Proc * p
Definition: driver.cxx:216
void YACSLIBENGINE_EXPORT StateLoader(Node *node, YACS::StatesForNode state)
Definition: Node.cxx:719
StatesForNode
Definition: define.hxx:34
@ INVALID
Definition: define.hxx:36
@ FAILED
Definition: define.hxx:51
@ DESACTIVATED
Definition: define.hxx:42
@ EXECFAILED
Definition: define.hxx:46
@ TOLOAD
Definition: define.hxx:38
@ LOADED
Definition: define.hxx:39
@ READY
Definition: define.hxx:37
@ ACTIVATED
Definition: define.hxx:41
@ INTERNALERR
Definition: define.hxx:49
@ DONE
Definition: define.hxx:43
@ TOACTIVATE
Definition: define.hxx:40
@ SUSPENDED
Definition: define.hxx:44
@ PAUSE
Definition: define.hxx:47
@ DISABLED
Definition: define.hxx:50
@ LOADFAILED
Definition: define.hxx:45
@ ERROR
Definition: define.hxx:52