]> SALOME platform Git repositories - modules/superv.git/commitdiff
Salome HOME
A special "Loading" state was implemented. It is returned to GUI if the correspondin...
authorasv <asv@opencascade.com>
Fri, 10 Dec 2004 09:53:57 +0000 (09:53 +0000)
committerasv <asv@opencascade.com>
Fri, 10 Dec 2004 09:53:57 +0000 (09:53 +0000)
So,
1) OutNode::State( char* aNodeName ) will return LoadingState in case InNode is Loading
2) InNode::IsLoading( bool b ) pushes to GUI "Executing" state if b == false -- loading is complete.

src/GraphExecutor/DataFlowExecutor_FiniteStateMachine.cxx
src/GraphExecutor/DataFlowExecutor_FiniteStateMachine.hxx
src/GraphExecutor/DataFlowExecutor_InNode.cxx
src/GraphExecutor/DataFlowExecutor_InNode.hxx
src/GraphExecutor/DataFlowExecutor_OutNode.cxx

index 363f373184e48cdfaee64d39158912b31e2ae0d9..e5d0f878cbba4c13b4156f84566ab25417be93cb 100644 (file)
@@ -80,6 +80,7 @@ void * start_function( void *p ) ;
 #define StoppedState            GraphExecutor::StoppedState
 #define ReRunnedState             GraphExecutor::ReRunnedState
 #define ReStartedState            GraphExecutor::ReStartedState
+#define LoadingState              GraphExecutor::LoadingState
 #define NumberOfAutomatonStates        GraphExecutor::NumberOfAutomatonStates
 #endif
 
@@ -168,6 +169,7 @@ GraphExecutor::FiniteStateMachine::FiniteStateMachine() {
   _StateName[ StoppedState ]            = "StoppedState" ;
   _StateName[ ReRunnedState ]             = "ReRunnedState" ;
   _StateName[ ReStartedState ]            = "ReStartedState" ;
+  _StateName[ LoadingState ]              = "LoadingState" ;
 
   _EventName[ UndefinedEvent ]          = "UndefinedEvent" ;
   _EventName[ NewThreadEvent ]          = "NewThreadEvent" ;
@@ -799,6 +801,9 @@ ostream & operator<< (ostream &f ,const GraphExecutor::AutomatonState & aState )
   case GraphExecutor::ReStartedState :
     f << "ReStartedState";
     break;
+  case GraphExecutor::LoadingState :
+    f << "LoadingState";
+    break;
   default :
     f << "GraphExecutor::AutomatonState_?";
     break;
index c6d316992ac6149b3a5af8c31dabf005d600f65a..84fcee3eeb059d1665a85ce00262b6393a5d88d8 100644 (file)
@@ -85,6 +85,7 @@ namespace GraphExecutor {
                         SuspendedErroredToReStartState ,
                         ReRunnedState ,
                         ReStartedState ,
+                       LoadingState,
                         NumberOfAutomatonStates } ;
 
   enum NodeEvent { UndefinedEvent , NewThreadEvent ,
index 32e7cd552cab74c8139e85cd14117598f5421cbb..6b318145790f77d6d59a27765c68a296da82faa7 100644 (file)
@@ -1602,3 +1602,13 @@ void GraphExecutor::InNode::SetPyCpuUsed() {
 //         << _PyCpuUsed << endl ;
 }
 
+void GraphExecutor::InNode::IsLoading( bool Loading ) {
+  _Loading = Loading ;
+  
+  // asv : 09.12.04 : "Bugs and Improvents" 2.19 : how it works: 
+  // LoadingState is returned by OutNode::State( NodeName ) if InNode->IsLoading()
+  // after Loading is finished (here below), ExecutingState must be pushed for GUI.  
+  if ( !Loading )
+    _OutNode->PushEvent( this, GraphExecutor::ExecuteEvent, GraphExecutor::ExecutingState );
+}
+     
index 174c4cd124012be20caeda01f1f221743d4c40e8..00448a4cb9590ee063b5ee26246fada574750720 100644 (file)
@@ -376,10 +376,8 @@ namespace GraphExecutor {
       bool IsSuspended() ;
       bool IsKilled() ;
       bool IsStopped() ;
-      void IsLoading( bool Loading ) {
-           _Loading = Loading ; } ;
-      bool IsLoading() {
-           return _Loading ; } ;
+      void IsLoading( bool Loading );
+      bool IsLoading() { return _Loading ; } ;
 
       bool StateWait( SUPERV::GraphState aState ) ;
       bool ReadyWait() ;
index 8d97e500e0f1787d215a73bf450368e63e71174f..45e3d1ebf6f4b480f29c94057e73e64153825a19 100644 (file)
@@ -1184,6 +1184,10 @@ SUPERV::GraphState GraphExecutor::OutNode::AutomatonGraphState(GraphExecutor::Au
     aGraphState = SUPERV::ReStartState ;
     break ;
   }
+  case GraphExecutor::LoadingState : {
+    aGraphState = SUPERV::LoadingState ;
+    break;
+  }
   default : {
     cdebug << " GraphExecutor::OutNode::AutomatonGraphState Error Undefined State : "
            << aGraphState << endl ;
@@ -1533,7 +1537,10 @@ SUPERV::GraphState GraphExecutor::OutNode::State( const char * NodeName ) {
   if ( aCNode ) {
     GraphExecutor::InNode *anInNode = (GraphExecutor::InNode *)aCNode->GetInNode() ;
     if ( anInNode ) {
-      aret = anInNode->State() ;
+      if ( anInNode->IsLoading() )
+       aret = GraphExecutor::LoadingState;
+      else
+       aret = anInNode->State() ;
 //      cdebug << "GraphExecutor::OutNode::State( " << NodeName << " ) "
 //             << theAutomaton->StateName( AutomatonGraphState( aret ) ) << endl ;
     }