X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FParallelContainer%2FSALOME_ParallelContainerProxy_i.cxx;h=e7d44bfd90696ea1f700d9784c15cf2ac066cb00;hb=7cbb0b15185107493896b24ddfc00766433b169d;hp=5747ced181699ef98450ddca0560ed9927cb4cc9;hpb=703cf8ca778de35a6b463d4b4fca7c36697d717f;p=modules%2Fkernel.git diff --git a/src/ParallelContainer/SALOME_ParallelContainerProxy_i.cxx b/src/ParallelContainer/SALOME_ParallelContainerProxy_i.cxx index 5747ced18..e7d44bfd9 100644 --- a/src/ParallelContainer/SALOME_ParallelContainerProxy_i.cxx +++ b/src/ParallelContainer/SALOME_ParallelContainerProxy_i.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2015 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2024 CEA, EDF, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -57,10 +57,11 @@ Container_proxy_impl_final::Container_proxy_impl_final(CORBA::ORB_ptr orb, myCommand += _containerName + "','"; myCommand += sior; myCommand += "')\n"; - Py_ACQUIRE_NEW_THREAD; - PyRun_SimpleString("import SALOME_Container\n"); - PyRun_SimpleString((char*)myCommand.c_str()); - Py_RELEASE_NEW_THREAD; + { + AutoGIL agil; + PyRun_SimpleString("import SALOME_Container\n"); + PyRun_SimpleString((char*)myCommand.c_str()); + } } Container_proxy_impl_final:: ~Container_proxy_impl_final() { @@ -69,7 +70,7 @@ Container_proxy_impl_final:: ~Container_proxy_impl_final() { if (_NS) delete _NS; - // _fab_thread not deleted beacause fab_thread is managed + // _fab_thread not deleted because fab_thread is managed // by paco_fabrique_manager } @@ -158,13 +159,17 @@ Container_proxy_impl_final::load_component_Library(const char* componentName, CO MESSAGE("Try to load C++ component"); #ifndef WIN32 +#ifdef __APPLE__ + std::string impl_name = string ("lib") + aCompName + string("Engine.dylib"); +#else std::string impl_name = string ("lib") + aCompName + string("Engine.so"); +#endif #else std::string impl_name = aCompName + string("Engine.dll"); #endif void* handle; #ifndef WIN32 - handle = dlopen( impl_name.c_str() , RTLD_LAZY ) ; + handle = dlopen( impl_name.c_str() , RTLD_LAZY | RTLD_GLOBAL ) ; #else handle = dlopen( impl_name.c_str() , 0 ) ; #endif @@ -205,16 +210,17 @@ Container_proxy_impl_final::load_component_Library(const char* componentName, CO #endif MESSAGE("Try to import Python component "< création du proxy ici puis appel de la création de chaque objet participant // au composant parallèle Engines::EngineComponent_ptr -Container_proxy_impl_final::create_component_instance_env(const char* componentName, ::CORBA::Long studyId, +Container_proxy_impl_final::create_component_instance_env(const char* componentName, const Engines::FieldsDict& env, CORBA::String_out reason) { reason=CORBA::string_dup(""); @@ -305,7 +311,7 @@ Container_proxy_impl_final::create_component_instance_env(const char* componentN _numInstance++; _numInstanceMutex.unlock(); Engines::PACO_Container_proxy_impl::updateInstanceNumber(); - return Engines::Container_proxy_impl::create_component_instance(componentName, studyId); + return Engines::Container_proxy_impl::create_component_instance(componentName); } // Parallel Component ! @@ -313,7 +319,11 @@ Container_proxy_impl_final::create_component_instance_env(const char* componentN // On commence par créer le proxy #ifndef WIN32 +#ifdef __APPLE__ + std::string impl_name = string ("lib") + aCompName + string("Engine.dylib"); +#else std::string impl_name = string ("lib") + aCompName + string("Engine.so"); +#endif #else std::string impl_name = aCompName + string("Engine.dll"); #endif @@ -342,7 +352,7 @@ Container_proxy_impl_final::create_component_instance_env(const char* componentN string instanceName = aCompName + "_inst_" + aNumI ; string component_registerName = _containerName + "/" + instanceName; - // --- Instanciate required CORBA object + // --- Instantiate required CORBA object Container_proxy_impl_final::proxy_object * proxy = new Container_proxy_impl_final::proxy_object(); proxy->proxy_id = (component_proxy_factory) (_orb, @@ -353,7 +363,7 @@ Container_proxy_impl_final::create_component_instance_env(const char* componentN instanceName.c_str(), _parallel_object_topology.total); - // --- get reference & servant from id + // --- get reference from id CORBA::Object_var obj = _poa->id_to_reference(*(proxy->proxy_id)); component_proxy = Engines::EngineComponent::_narrow(obj); proxy->proxy_corba_ref = component_proxy; @@ -378,7 +388,7 @@ Container_proxy_impl_final::create_component_instance_env(const char* componentN } catch (...) { - INFOS( "Exception catched in Proxy creation" ); + INFOS( "Exception caught in Proxy creation" ); return Engines::EngineComponent::_nil(); } @@ -392,7 +402,7 @@ Container_proxy_impl_final::create_component_instance_env(const char* componentN { try { - node->create_paco_component_node_instance(componentName, _containerName.c_str(), studyId); + node->create_paco_component_node_instance(componentName, _containerName.c_str()); MESSAGE("Call create_paco_component_node_instance done on node : " << i); } catch (SALOME::SALOME_Exception & ex)