Salome HOME
Merge with OCC_development_01
[modules/superv.git] / src / GraphExecutor / DataFlowExecutor_OutNode.hxx
index 2676c74b978d6f50e2cd6174163c7bef85cec6a9..a882cf32bcb8228736553f89453b4b747f828e18 100644 (file)
@@ -50,7 +50,7 @@ namespace GraphExecutor {
       bool                    _PyInitialized ;
       bool                    _Valid ;
       bool                    _Executable ;
-      SUPERV::AutomatonState  _State ;
+      GraphExecutor::AutomatonState  _State ;
       SUPERV::ControlState    _ControlState ;
       bool                    _Done ;
 
@@ -63,18 +63,22 @@ namespace GraphExecutor {
       int                              _SuspendedThreads ;
       list< char * >                   _EventNodes ;
       list< GraphExecutor::NodeEvent > _Events ;
-      list< SUPERV::AutomatonState >   _States ;
+      list< GraphExecutor::AutomatonState >   _States ;
 
       bool Valid() ;
       void UnValid() ;
       bool Executable() ;
 
-      bool LoadNodes( const GraphBase::ListOfNodes &aNodes ) ;
-      bool LoadLinks( const GraphBase::ListOfLinks &aLinks ) ;
-      bool LoadDatas( const GraphBase::ListOfLinks &aDatas ) ;
+      bool LoadNodes( const GraphBase::ListOfSNodes &aNodes ) ;
+      bool LoadLinks( const GraphBase::ListOfSLinks &aLinks ) ;
+      bool LoadDatas( const GraphBase::ListOfSLinks &aDatas ) ;
 
       CORBA::ORB_ptr _Orb ;
 
+      // scan (reverse) the _EventNodes queue and leave only 1 (the last one that came) 
+      // event for every node
+      void siftEvents();
+
     public :
   
       OutNode() ;
@@ -107,8 +111,8 @@ namespace GraphExecutor {
       GraphBase::Graph * Graph() const {
                          return _Graph ; } ;
 
-      bool LoadDataFlow( const GraphBase::SGraph &aDataFlow ) ;
-      bool LoadXml( const char* myFileName ) ;
+      bool LoadDataFlow( const GraphBase::SGraph aDataFlow ) ;
+//      bool LoadXml( const char* myFileName ) ;
       bool LoadInfo( const GraphBase::SNode &aDataFlowInfo ) ;
 
       GraphExecutor::InNode * AddNode(
@@ -128,11 +132,6 @@ namespace GraphExecutor {
                         const int NodeX = 0 ,
                         const int NodeY = 0 ) ;
 
-      bool AddInputData( const char* ToNodeName1 ,
-                         const char* ToParameterName1 ,
-                         const char* ToNodeName2 ,
-                         const char* ToParameterName2 ) ;
-
       bool IsValid() { if ( !_Valid )
                          return Valid() ;
                        return _Valid ; } ;
@@ -157,7 +156,7 @@ namespace GraphExecutor {
       void PyThreadUnLock() ;
 
       void NewThread() ;
-      void ExitThread() ;
+      void ExitThread( pthread_t ThreadNumber = 0 ) ;
       void SuspendThread() ;
       void ResumeThread() ;
       long Threads() { return _Threads ; } ;
@@ -170,7 +169,7 @@ namespace GraphExecutor {
 
       bool PushEvent( GraphExecutor::InNode * aNode ,
                       GraphExecutor::NodeEvent anEvent ,
-                      SUPERV::AutomatonState aState ) ;
+                      GraphExecutor::AutomatonState aState ) ;
       int GetListSize();
       bool StateWait( SUPERV::GraphState aState ) ;
       bool Event( char ** aNodeName ,
@@ -186,8 +185,10 @@ namespace GraphExecutor {
       long EventQSize() ;
       void EventList() ;
 
-      void State(SUPERV::AutomatonState aState ) ;
-      const char * StateName(SUPERV::AutomatonState aState ) {
+      void SendSomeDataReady( const char * aNodeName ) ;
+
+      void State(GraphExecutor::AutomatonState aState ) ;
+      const char * StateName(GraphExecutor::AutomatonState aState ) {
              return theAutomaton->StateName( aState ) ; }
 
       SUPERV::GraphState State() ;
@@ -196,10 +197,10 @@ namespace GraphExecutor {
                                 const char * ServiceParameterName ) ;
 
       SUPERV::GraphEvent AutomatonGraphEvent(GraphExecutor::NodeEvent anEvent) ;
-      SUPERV::GraphState AutomatonGraphState(SUPERV::AutomatonState anAutomatonState) ;
+      SUPERV::GraphState AutomatonGraphState(GraphExecutor::AutomatonState anAutomatonState) ;
 
-      SUPERV::AutomatonState AutomatonState() ;
-      SUPERV::AutomatonState AutomatonState( const char * NodeName ) ;
+      GraphExecutor::AutomatonState AutomatonState() ;
+      GraphExecutor::AutomatonState AutomatonState( const char * NodeName ) ;
 
       SUPERV::ControlState ControlState() ;
       SUPERV::ControlState ControlState( const char * aNodeName ) ;