Version: 9.16.0
Node.cxx
Go to the documentation of this file.
1// Copyright (C) 2006-2026 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"
29#include <iostream>
30#include <fstream>
31
32//#define _DEVDEBUG_
33#include "YacsTrace.hxx"
34
35using namespace YACS::ENGINE;
36using namespace std;
37
44const char Node::SEP_CHAR_IN_PORT[]=".";
45
46int Node::_total = 0;
47std::map<int,Node*> Node::idMap;
48
49NodeStateNameMap::NodeStateNameMap()
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
69Node::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
81Node::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
102void Node::init(bool start)
103{
107 {
108 exDisabledState(); // to refresh propagation of DISABLED state
109 return;
110 }
112}
113
131Node *Node::clone(ComposedNode *father, bool editionOnly) const
132{
133 Node *ret(simpleClone(father,editionOnly));
135 return ret;
136}
137
151{
152 Node *ret(simpleClone(father,editionOnly));
154 return ret;
155}
156
158
162void 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
185list<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
239InPort *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
259InputPort *
260Node::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
275OutPort *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
289std::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
299std::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
317std::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
327bool 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
335bool 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
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
408const 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
446void 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
455void 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
478const 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
491void Node::setProperty(const std::string& name, const std::string& value)
492{
493 DEBTRACE("Node::setProperty " << name << " " << value);
494 _propertyMap[name]=value;
495}
496
497std::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
509std::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
521void 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
611void 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
620void Node::writeDotInFile(const std::string& fileName) const
621{
622 std::ofstream f(fileName);
623 this->writeDot(f);
624}
625
627
632std::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
660std::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
691void 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
709void 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)
735 return 1;
736 else
737 return 0;
738}
739
741
746{
747 DEBTRACE("Node::edUpdateState(): " << _modified);
748 _modified=0;
749}
750
752
756{
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;
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
837void Node::shutdown(int level)
838{
839 if(level==0)return;
840}
841
843
847{
848}
849
851void 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 void exForwardFinished()
Definition: Node.cxx:386
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
const std::string & getName() const
Definition: Node.hxx:125
Node(const std::string &name)
Definition: Node.cxx:69
ComposedNode * getFather() const
Definition: Node.hxx:127
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
virtual std::list< OutputPort * > getSetOfOutputPort() const =0
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
virtual std::list< InputPort * > getSetOfInputPort() const =0
virtual std::list< InputDataStreamPort * > getSetOfInputDataStreamPort() const =0
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
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
virtual Node * simpleClone(ComposedNode *father, bool editionOnly=true) const =0
Node * _eventReceiver
Definition: Node.hxx:99
virtual OutputPort * getOutputPort(const std::string &name) const =0
InGate * getInGate()
Definition: Node.hxx:123
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
virtual OutputDataStreamPort * getOutputDataStreamPort(const std::string &name) const =0
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
virtual std::list< OutputDataStreamPort * > getSetOfOutputDataStreamPort() const =0
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
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
virtual InputPort * getInputPort(const std::string &name) const
Definition: Node.cxx:260
virtual void exForwardFailed()
Definition: Node.cxx:378
virtual void ensureLoading()
Put this node into TOLOAD state when possible.
Definition: Node.cxx:817
virtual InputDataStreamPort * getInputDataStreamPort(const std::string &name) const =0
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 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