#define StoppedState GraphExecutor::StoppedState
#define ReRunnedState GraphExecutor::ReRunnedState
#define ReStartedState GraphExecutor::ReStartedState
+#define LoadingState GraphExecutor::LoadingState
#define NumberOfAutomatonStates GraphExecutor::NumberOfAutomatonStates
#endif
_StateName[ StoppedState ] = "StoppedState" ;
_StateName[ ReRunnedState ] = "ReRunnedState" ;
_StateName[ ReStartedState ] = "ReStartedState" ;
+ _StateName[ LoadingState ] = "LoadingState" ;
_EventName[ UndefinedEvent ] = "UndefinedEvent" ;
_EventName[ NewThreadEvent ] = "NewThreadEvent" ;
case GraphExecutor::ReStartedState :
f << "ReStartedState";
break;
+ case GraphExecutor::LoadingState :
+ f << "LoadingState";
+ break;
default :
f << "GraphExecutor::AutomatonState_?";
break;
SuspendedErroredToReStartState ,
ReRunnedState ,
ReStartedState ,
+ LoadingState,
NumberOfAutomatonStates } ;
enum NodeEvent { UndefinedEvent , NewThreadEvent ,
// << _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 );
+}
+
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() ;
aGraphState = SUPERV::ReStartState ;
break ;
}
+ case GraphExecutor::LoadingState : {
+ aGraphState = SUPERV::LoadingState ;
+ break;
+ }
default : {
cdebug << " GraphExecutor::OutNode::AutomatonGraphState Error Undefined State : "
<< aGraphState << endl ;
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 ;
}