From de61cba83993d41b8efc678e63e7bf13b0097079 Mon Sep 17 00:00:00 2001 From: mkr Date: Fri, 20 Jan 2006 07:44:21 +0000 Subject: [PATCH] 1) Fix for bug PAL8060 : Supervisor: Edit ports - existing links are deleted. 2) Fix for bug PAL11273 : How to set the name of the container in a Factory Node. --- src/Supervision/CNode_Impl.cxx | 33 ++++++++++++++++++++++++++------- src/Supervision/CNode_Impl.hxx | 6 ++++-- src/Supervision/FNode_Impl.cxx | 5 +++-- src/Supervision/FNode_Impl.hxx | 6 +++++- src/Supervision/Graph_Impl.cxx | 11 ++++++++--- src/Supervision/Graph_Impl.hxx | 3 ++- src/Supervision/Port_Impl.cxx | 2 +- 7 files changed, 49 insertions(+), 17 deletions(-) diff --git a/src/Supervision/CNode_Impl.cxx b/src/Supervision/CNode_Impl.cxx index 9dd23bb..7f3cf4c 100644 --- a/src/Supervision/CNode_Impl.cxx +++ b/src/Supervision/CNode_Impl.cxx @@ -23,6 +23,8 @@ using namespace std; #include "StreamPort_Impl.hxx" +char *FACTORYSERVERPY = "localhost/FactoryServerPy" ; + CNode_Impl::CNode_Impl( CORBA::ORB_ptr orb , PortableServer::POA_ptr poa , PortableServer::ObjectId * contId , @@ -65,7 +67,8 @@ CNode_Impl::CNode_Impl( CORBA::ORB_ptr orb , const char * NodeName , const SUPERV::KindOfNode NodeKindOfNode , const char * FuncName , - const SUPERV::ListOfStrings & PythonFunction ) : + const SUPERV::ListOfStrings & PythonFunction , + bool isCimpl ) : Engines_Component_i(orb, poa, contId, instanceName, interfaceName, false, false) { // beginService( "CNode_Impl::CNode_Impl" ); // cout << "CNode_Impl::CNode_Impl -->" << endl ; @@ -92,10 +95,25 @@ CNode_Impl::CNode_Impl( CORBA::ORB_ptr orb , aPythonFunction.resize(1) ; aPythonFunction[0] = &PythonFunction ; } - _DataFlowNode = DataFlowEditor()->AddNode( NodeService , "" , "" , NodeName , - NodeKindOfNode , - aFuncName , - aPythonFunction ) ; + + // mkr : PAL11273 --> + if ( isCimpl ) // C++ implementation + _DataFlowNode = DataFlowEditor()->AddNode( NodeService , "" , "" , NodeName , + NodeKindOfNode , + aFuncName , + aPythonFunction ) ; + else // Python implementation + _DataFlowNode = DataFlowEditor()->AddNode( NodeService , "" , "" , NodeName , + NodeKindOfNode , + aFuncName , + aPythonFunction , + SUPERV::SDate() , + SUPERV::SDate() , + NULLSTRING , + NULLSTRING , + FACTORYSERVERPY ) ; + // mkr : PAL11273 <-- + _IsNode = true ; // endService( "CNode_Impl::CNode_Impl" ); // cout << "<-- CNode_Impl::CNode_Impl" << endl ; @@ -1490,13 +1508,14 @@ long CNode_Impl::SubStreamGraph() { return RetVal ; } -bool CNode_Impl::IsLinked(const char * ServiceParameterName ) { +// mkr : PAL8060 : this method is not used +/*bool CNode_Impl::IsLinked(const char * ServiceParameterName ) { beginService( "CNode_Impl::IsLinked" ); bool RetVal = DataFlowNode()->IsLinked( ServiceParameterName ) ; MESSAGE( Name() << "->IsLinked( '" << ServiceParameterName << "' )" ) ; endService( "CNode_Impl::IsLinked" ); return RetVal ; -} + }*/ bool CNode_Impl::HasInput(const char * ServiceParameterName ) { // beginService( "CNode_Impl::HasInput" ); diff --git a/src/Supervision/CNode_Impl.hxx b/src/Supervision/CNode_Impl.hxx index 78c085c..19ca441 100644 --- a/src/Supervision/CNode_Impl.hxx +++ b/src/Supervision/CNode_Impl.hxx @@ -54,7 +54,8 @@ class CNode_Impl : public POA_SUPERV::CNode , const char * NodeName = NULLSTRING , const SUPERV::KindOfNode NodeKindOfNode = SUPERV::ComputingNode , const char * aFuncName = NULLSTRING , - const SUPERV::ListOfStrings & aPythonFunction = SUPERV::ListOfStrings() ) ; + const SUPERV::ListOfStrings & aPythonFunction = SUPERV::ListOfStrings() , + bool isCimpl = true ) ; // mkr : PAL11273 : C++ implementation by default CNode_Impl( CORBA::ORB_ptr orb , PortableServer::POA_ptr poa , PortableServer::ObjectId * contId , @@ -214,7 +215,8 @@ class CNode_Impl : public POA_SUPERV::CNode , virtual long SubGraph() ; virtual long SubStreamGraph() ; - virtual bool IsLinked(const char * ToServiceParameterName ) ; + // mkr : PAL8060 : this method is not used + //virtual bool IsLinked(const char * ToServiceParameterName ) ; virtual bool HasInput(const char * ToServiceParameterName ) ; // virtual SUPERV::Link_ptr GetLink(const char * ToServiceParameterName ) ; diff --git a/src/Supervision/FNode_Impl.cxx b/src/Supervision/FNode_Impl.cxx index 99a4311..15e7b62 100644 --- a/src/Supervision/FNode_Impl.cxx +++ b/src/Supervision/FNode_Impl.cxx @@ -32,9 +32,10 @@ FNode_Impl::FNode_Impl( CORBA::ORB_ptr orb , const char * NodeComponentName , const char * NodeInterfaceName , const char * NodeName , - const SUPERV::KindOfNode NodeKindOfNode ) : + const SUPERV::KindOfNode NodeKindOfNode , + bool isCimpl ) : // Engines_Component_i(orb, poa, contId, instanceName, interfaceName, false, false) { - CNode_Impl( orb , poa , contId , instanceName , interfaceName , aDataFlowEditor , NodeService , NodeName , NodeKindOfNode , NULLSTRING ) { + CNode_Impl( orb , poa , contId , instanceName , interfaceName , aDataFlowEditor , NodeService , NodeName , NodeKindOfNode , NULLSTRING , SUPERV::ListOfStrings() , isCimpl ) { // MESSAGE( NodeName << " " ); beginService( "FNode_Impl::FNode_Impl" ); // cout << "FNode_Impl::FNode_Impl -->" << endl ; diff --git a/src/Supervision/FNode_Impl.hxx b/src/Supervision/FNode_Impl.hxx index 0b9105e..3fd4057 100644 --- a/src/Supervision/FNode_Impl.hxx +++ b/src/Supervision/FNode_Impl.hxx @@ -34,6 +34,7 @@ class FNode_Impl : public CNode_Impl , CORBA::ORB_ptr _Orb ; PortableServer::POA_ptr _Poa ; PortableServer::ObjectId * _ContId ; + bool _isCimpl; public: FNode_Impl(); @@ -53,7 +54,8 @@ class FNode_Impl : public CNode_Impl , const char * NodeComponentName , const char * NodeInterfaceName , const char * NodeName = NULLSTRING , - const SUPERV::KindOfNode NodeKindOfNode = SUPERV::FactoryNode ) ; + const SUPERV::KindOfNode NodeKindOfNode = SUPERV::FactoryNode , + bool isCimpl = true ) ; // mkr : PAL11273 : C++ implementation by default FNode_Impl( CORBA::ORB_ptr orb , PortableServer::POA_ptr poa , PortableServer::ObjectId * contId , @@ -75,6 +77,8 @@ class FNode_Impl : public CNode_Impl , virtual GraphBase::FactoryNode * BaseNode() { return DataFlowNode()->FactoryNode() ; } ; + virtual bool IsCimpl() { return _isCimpl; } ; // mkr : PAL11273 + } ; #endif diff --git a/src/Supervision/Graph_Impl.cxx b/src/Supervision/Graph_Impl.cxx index 9be1703..266ec26 100644 --- a/src/Supervision/Graph_Impl.cxx +++ b/src/Supervision/Graph_Impl.cxx @@ -400,7 +400,8 @@ SUPERV::CNode_ptr Graph_Impl::CNode( const SALOME_ModuleCatalog::Service &NodeSe SUPERV::FNode_ptr Graph_Impl::FNode( const char * NodeComponentName , const char * NodeInterfaceName , - const SALOME_ModuleCatalog::Service &NodeService ) { + const SALOME_ModuleCatalog::Service &NodeService , + bool isCimpl ) { beginService( "Graph_Impl::FNode" ); SUPERV::FNode_var iobject = SUPERV::FNode::_nil() ; if ( DataFlowEditor()->IsEditing() && !DataFlowEditor()->IsReadOnly() && !IsMacro() ) { @@ -409,7 +410,10 @@ SUPERV::FNode_ptr Graph_Impl::FNode( const char * NodeComponentName , DataFlowEditor() , NodeService , NodeComponentName , - NodeInterfaceName ) ; + NodeInterfaceName , + NULLSTRING , + SUPERV::FactoryNode , + isCimpl ) ; if ( myNode->DataFlowNode() ) { PortableServer::ObjectId * id = myNode->getId() ; CORBA::Object_var obj = _poa->id_to_reference(*id); @@ -2178,7 +2182,8 @@ bool Graph_Impl::Merge(const SUPERV::Graph_ptr aGraph , map< string , int > & aM SUPERV::FNode_var aNode = (aGraphNodes->FNodes)[ i ] ; SUPERV::FNode_ptr myNode = FNode( aNode->GetComponentName() , aNode->GetInterfaceName() , - *(aNode->Service()) ) ; + *(aNode->Service()) , + aNode->IsCimpl() ) ; // mkr : PAL11273 if ( !CORBA::is_nil( myNode ) ) { myNode->SetName( aNode->Name() ) ; myNode->SetAuthor( aNode->Author() ) ; diff --git a/src/Supervision/Graph_Impl.hxx b/src/Supervision/Graph_Impl.hxx index e15f095..b8515c7 100644 --- a/src/Supervision/Graph_Impl.hxx +++ b/src/Supervision/Graph_Impl.hxx @@ -114,7 +114,8 @@ class Graph_Impl : public POA_SUPERV::Graph , virtual SUPERV::FNode_ptr FNode( const char * NodeComponentName , const char * InterfaceName , - const SALOME_ModuleCatalog::Service &NodeService ) ; + const SALOME_ModuleCatalog::Service &NodeService , + bool isCimpl ) ; // mkr : PAL11273 : C++ implementation by default virtual SUPERV::INode_ptr INode( const char * FuncName , const SUPERV::ListOfStrings & PythonFunction ) ; diff --git a/src/Supervision/Port_Impl.cxx b/src/Supervision/Port_Impl.cxx index 60d11ac..f791aa2 100644 --- a/src/Supervision/Port_Impl.cxx +++ b/src/Supervision/Port_Impl.cxx @@ -465,7 +465,7 @@ bool Port_Impl::IsLinked() { // << anInPort->PortName() << ")" << " ignored" ) ; } else { - RetVal = _DataFlowNode->IsLinked( _DataFlowPort->PortName() ) ; + RetVal = _DataFlowNode->IsLinked( _DataFlowPort->PortName(), IsInput() ) ; // mkr : PAL8060 } } // endService( "Port_Impl::IsLinked" ) ; -- 2.39.2