if ( anInPort->GetOutPort() ) {
anInPort->GetOutPort()->RemoveInPort( anInPort ) ;
}
- _DataFlowNode->DelInPort( _DataFlowPort->PortName() ) ;
- if ( _DataFlowNode->IsLoopNode() ) {
- _DataFlowNode->DelOutPort( _DataFlowPort->PortName() ) ;
- _DataFlowNode->CoupledNode()->DelInPort( _DataFlowPort->PortName() ) ;
- _DataFlowNode->CoupledNode()->DelOutPort( _DataFlowPort->PortName() ) ;
+ if ( _DataFlowNode->IsOneOfInLineNodes() ) {
+ _DataFlowNode->DelInPort( _DataFlowPort->PortName() ) ;
+ if ( _DataFlowNode->IsLoopNode() ) {
+ _DataFlowNode->DelOutPort( _DataFlowPort->PortName() ) ;
+ _DataFlowNode->CoupledNode()->DelInPort( _DataFlowPort->PortName() ) ;
+ _DataFlowNode->CoupledNode()->DelOutPort( _DataFlowPort->PortName() ) ;
+ }
+ }
+ else {
}
destroyed = true ;
}
- else if ( !_DataFlowNode->IsLoopNode() ) {
+ else if ( _DataFlowNode->IsOneOfInLineNodes() && !_DataFlowNode->IsLoopNode() ) {
_DataFlowNode->DelOutPort( _DataFlowPort->PortName() ) ;
destroyed = true ;
}
+ else {
+ destroyed = true ;
+ }
if ( destroyed ) {
_DataFlowEditor->UnValid() ;
-// _DataFlowEditor->IsValid() ;
}
}
if ( destroyed ) {
endService( "Port_Impl::destroy" );
}
+void Port_Impl::Remove() {
+ beginService( "Port_Impl::Remove" );
+ _poa->deactivate_object(*_id) ;
+ CORBA::release(_poa) ;
+ delete(_id) ;
+ _thisObj->_remove_ref();
+ endService( "Port_Impl::Remove" );
+}
+
bool Port_Impl::Input( const SUPERV::Value_ptr aValue ) {
return Input( aValue->ToAny() ) ;
}
bool Port_Impl::Input( const CORBA::Any * anAny ) {
beginService( "Port_Impl::Input" );
bool RetVal = false ;
- if ( _InputPort && _DataFlowEditor->IsEditing() ) {
- RetVal = true ;
- Value_Impl::Input( anAny ) ;
- RetVal = _DataFlowEditor->AddInputData( _DataFlowNode->Name() ,
- _DataFlowPort->PortName() ,
- *anAny ) ;
- }
- else if ( _DataFlowEditor->IsExecuting() ) {
- GraphExecutor::DataFlow * _DataFlowExecutor = _DataFlowEditor->Executor() ;
-// if ( _DataFlowExecutor && ( _DataFlowExecutor->IsSuspended() ||
-// _DataFlowExecutor->IsSuspended( _DataFlowNode->Name() ) ) ) {
- if ( _DataFlowExecutor ) {
- RetVal = _DataFlowExecutor->ChangeInputData( _DataFlowNode->Name() ,
- _DataFlowPort->PortName() ,
- *anAny ) ;
+ if ( _DataFlowEditor->Graph()->GraphMacroLevel() == 0 ) {
+ if ( _InputPort && _DataFlowEditor->IsEditing() ) {
+ RetVal = true ;
+ Value_Impl::Input( anAny ) ;
+ RetVal = _DataFlowEditor->AddInputData( _DataFlowNode->Name() ,
+ _DataFlowPort->PortName() ,
+ *anAny ) ;
+ }
+ else if ( _DataFlowEditor->IsExecuting() ) {
+ GraphExecutor::DataFlow * _DataFlowExecutor = _DataFlowEditor->Executor() ;
+
+ /* commenting out the lines below because it seems to be never executed
+ Editor::_Executing flag is set OFF in Executor::OutNode on execution finished
+ and in CNode_Impl class (also not called probably)
+ // asv: turn off Editor::_Executing flag
+ if ( _DataFlowExecutor->IsDone() ) {
+ _DataFlowEditor->Executing( false );
+ }
+ else
+ */
+ if ( !_DataFlowExecutor->IsDone() ) {
+ RetVal = _DataFlowExecutor->ChangeInputData( _DataFlowNode->Name() ,
+ _DataFlowPort->PortName() ,
+ *anAny ) ;
+ }
}
}
if ( !RetVal ) {
SUPERV::ListOfLinks * Port_Impl::Links() {
beginService( "Port_Impl::Links" ) ;
SUPERV::ListOfLinks_var RetVal = new SUPERV::ListOfLinks ;
- RetVal = _DataFlowEditor->Graph()->ObjImpl()->Links( _DataFlowNode->ComputingNode() ,
- _DataFlowPort->PortName() ) ;
+ RetVal = _DataFlowEditor->Graph()->ObjImpl()->Links( /*_DataFlowNode->ComputingNode() ,
+ _DataFlowPort->PortName()*/ ) ;
MESSAGE( "Links of Node " << _DataFlowNode->ComputingNode()->Name()
<< " and of Port " << _DataFlowPort->PortName()
<< " _InputPort " << _InputPort ) ;
SUPERV::ListOfLinks_var Links = new SUPERV::ListOfLinks ;
// cout << "Port_Impl::Link " << _DataFlowNode->Name() << " "
// << _DataFlowPort->PortName() << endl ;
- Links = _DataFlowEditor->Graph()->ObjImpl()->Links( _DataFlowNode->ComputingNode() ,
- _DataFlowPort->PortName() ) ;
+ Links = _DataFlowEditor->Graph()->ObjImpl()->Links( /*_DataFlowNode->ComputingNode() ,
+ _DataFlowPort->PortName()*/ ) ;
if ( Links->length() ) {
iobject = Links[ 0 ] ;
}
if ( _DataFlowEditor ) {
GraphExecutor::DataFlow * _DataFlowExecutor = _DataFlowEditor->Executor() ;
if ( _DataFlowExecutor ) {
- RetVal = _DataFlowExecutor->IsDone( _DataFlowPort->NodeName() ,
- _DataFlowPort->PortName() ) ;
+ RetVal = _DataFlowExecutor->PortDone( _DataFlowPort->NodeName() ,
+ _DataFlowPort->PortName() ) ;
}
}
// endService( "Port_Impl::IsDone" );