1 // SUPERV GraphExecutor : contains classes that permit execution of graphs and particularly the execution automaton
3 // Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
4 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
6 // This library is free software; you can redistribute it and/or
7 // modify it under the terms of the GNU Lesser General Public
8 // License as published by the Free Software Foundation; either
9 // version 2.1 of the License.
11 // This library is distributed in the hope that it will be useful,
12 // but WITHOUT ANY WARRANTY; without even the implied warranty of
13 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 // Lesser General Public License for more details.
16 // You should have received a copy of the GNU Lesser General Public
17 // License along with this library; if not, write to the Free Software
18 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
20 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
24 // File : DataFlowExecutor_DataFlow.hxx
27 #ifndef _DATAFLOWEXECUTOR_DATAFLOW_HXX
28 #define _DATAFLOWEXECUTOR_DATAFLOW_HXX
30 #include "DataFlowExecutor_OutNode.hxx"
32 namespace GraphExecutor {
34 class DataFlow : public GraphExecutor::OutNode {
38 SALOME_NamingService* _theNamingService ;
43 DataFlow( CORBA::ORB_ptr ORB, SALOME_NamingService* ptrNamingService ,
44 const char * DataFlowName ,
45 const char * DebugFileName ,
46 const SUPERV::KindOfNode aKindOfNode );
47 DataFlow( CORBA::ORB_ptr ORB, SALOME_NamingService* ptrNamingService ,
48 const SALOME_ModuleCatalog::Service& DataFlowService ,
49 const char *DataFlowComponentName ,
50 const char *DataFlowInterfaceName ,
51 const char *DataFlowName ,
52 const SUPERV::KindOfNode DataFlowkind = SUPERV::ComputingNode ,
53 const SUPERV::SDate DataFlowFirstCreation = SUPERV::SDate() ,
54 const SUPERV::SDate DataFlowLastModification = SUPERV::SDate() ,
55 const char * DataFlowEditorRelease = NULLSTRING ,
56 const char * DataFlowAuthor = NULLSTRING ,
57 const char * DataFlowComputer = NULLSTRING ,
58 const char * DataFlowComment = NULLSTRING ,
59 const char * DebugFileName = NULLSTRING ) ;
62 bool LoadDataFlow( const GraphBase::SGraph * aDataFlow ) ;
63 // bool LoadXml( const char* myFileName ) ;
65 const SALOME_ModuleCatalog::Service * NodeService( const char * NodeName ) ;
67 bool AddInputData( const char * ToNodeName ,
68 const char * ToParameterName ,
69 const CORBA::Any aValue = CORBA::Any() ) ;
70 bool ChangeInputData( const char * ToNodeName ,
71 const char * ToParameterName ,
72 const CORBA::Any aValue = CORBA::Any() ) ;
73 bool InputOfAny( const char * ToServiceParameterName ,
74 const CORBA::Any & aValue ,
75 const bool SomeDataReady = true ) ;
77 bool OutputOfAny( const char * aNodeName ,
78 const char * ToServiceParameterName ,
79 const CORBA::Any & aValue ) ;
84 bool Run( const bool AndSuspend ) ;
86 long LastLevelDone() ;
88 void State(GraphExecutor::AutomatonState aState ) ;
89 SUPERV::GraphState State() ;
90 SUPERV::GraphState State(const char * aNodeName ) ;
91 SUPERV::GraphState State( const char * aNodeName ,
92 const char * anOutServiceParameterName ) ;
95 long Thread(const char * aNodeName ) ;
97 GraphExecutor::AutomatonState AutomatonState() ;
98 GraphExecutor::AutomatonState AutomatonState(const char * aNodeName ) ;
100 SUPERV::ControlState ControlState() ;
101 SUPERV::ControlState ControlState(const char * aNodeName ) ;
102 void ControlClear() ;
103 void ControlClear(const char * aNodeName ) ;
105 bool Event( char ** aNodeName ,
106 SUPERV::GraphEvent & anEvent ,
107 SUPERV::GraphState & aState ,
108 bool WithWait = true ) ;
109 bool EventW( char ** aNodeName ,
110 SUPERV::GraphEvent & anEvent ,
111 SUPERV::GraphState & aState ) ;
119 bool IsWaiting(const char * aNodeName ) ;
120 bool IsReady(const char * aNodeName ) ;
121 bool IsRunning(const char * aNodeName ) ;
122 bool IsDone(const char * aNodeName ) ;
123 bool IsSuspended(const char * aNodeName ) ;
124 bool PortDone( const char * aNodeName ,
125 const char * anOutServiceParameterName ) ;
127 //JR 30.03.2005 const CORBA::Any *GetInData( const char * ToNodeName ,
128 const CORBA::Any GetInData( const char * ToNodeName ,
129 const char * ToParameterName ) ;
130 //JR 30.03.2005 const CORBA::Any *GetOutData( const char * FromNodeName ,
131 const CORBA::Any GetOutData( const char * FromNodeName ,
132 const char * FromParameterName ) ;
139 bool SuspendedWait() ;
140 bool ReadyWait(const char * aNodeName ) ;
141 bool RunningWait(const char * aNodeName ) ;
142 bool DoneWait(const char * aNodeName ) ;
143 bool SuspendedWait(const char * aNodeName ) ;
145 bool Ping(const char * aNodeName ) ;
146 bool ContainerKill() ;
147 bool ContainerKill(const char * aNodeName ) ;
150 bool Kill(const char * aNodeName ) ;
151 bool KillDone(const char * aNodeName ) ;
153 bool Suspend(const char * aNodeName ) ;
155 bool SuspendDone(const char * aNodeName ) ;
157 bool Resume(const char * aNodeName ) ;
159 bool Stop(const char * aNodeName ) ;
165 #include "DataFlowExecutor_DataFlow.lxx"
167 ostream & operator << (ostream &,const GraphExecutor::DataFlow & G);
168 ostream & operator << (ostream &,const SUPERV::SDate &);