X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FParallelContainer%2FSALOME_ParallelContainerProxy_i.hxx;h=f6e5a15a207d20ece1121c50148b9fdfc8f0bdb5;hb=4d61f5b8863253a259cde301c39b60909a6b18fa;hp=c35cddd6ca96030590040ae9a82b875c87b939d2;hpb=7d2fe213bdf5bf962ce11e253020c9d3e0bc1cce;p=modules%2Fkernel.git diff --git a/src/ParallelContainer/SALOME_ParallelContainerProxy_i.hxx b/src/ParallelContainer/SALOME_ParallelContainerProxy_i.hxx index c35cddd6c..f6e5a15a2 100644 --- a/src/ParallelContainer/SALOME_ParallelContainerProxy_i.hxx +++ b/src/ParallelContainer/SALOME_ParallelContainerProxy_i.hxx @@ -1,45 +1,96 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2021 CEA/DEN, EDF R&D, OPEN CASCADE // -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, +// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS // -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. // -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. // -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// SALOME_ParallelContainerProxy : implementation of container and engine for Parallel Kernel // File : SALOME_ParallelContainerProxy_i.hxx // Author : André RIBES, EDF -// + #ifndef _SALOME_PARALLEL_CONTAINER_PROXY_I_HXX_ #define _SALOME_PARALLEL_CONTAINER_PROXY_I_HXX_ #include "utilities.h" -#include "SALOME_ComponentPaCO_Engines_Container_server.h" +#include "Basics_Utils.hxx" +#include "SALOME_PACOExtensionPaCO_Engines_PACO_Container_server.hxx" +#include "SALOME_ParallelGlobalProcessVar_i.hxx" +#include "SALOME_NamingService.hxx" +#include "RegistryConnexion.hxx" +#include +#include +#include + +#include +#include "Container_init_python.hxx" class Container_proxy_impl_final : - public Engines::Container_proxy_impl + virtual public Engines::PACO_Container_proxy_impl, + virtual public ParallelGlobalProcessVar_i { public: Container_proxy_impl_final(CORBA::ORB_ptr orb, - paco_fabrique_thread * fab_thread, - bool is_a_return_proxy = false); + paco_fabrique_thread * fab_thread, + PortableServer::POA_ptr poa, + std::string containerName, + bool is_a_return_proxy = false); virtual ~Container_proxy_impl_final(); virtual void Shutdown(); + + virtual ::CORBA::Boolean load_component_Library(const char* componentName,CORBA::String_out reason); + virtual Engines::EngineComponent_ptr create_component_instance (const char* componentName); + virtual Engines::EngineComponent_ptr create_component_instance_env (const char* componentName, + const Engines::FieldsDict& env, + CORBA::String_out reason); + + private: + std::map _libtype_map; // libname -> libtype (seq ou par) + + struct proxy_object + { + Engines::EngineComponent_var proxy_corba_ref; + PortableServer::ObjectId * proxy_id; + RegistryConnexion * proxy_regist; + }; + + // Cette liste contient les references vers les différentes + // instances d'objets parallèles. + std::list _par_obj_inst_list; + + // Fonction de test pour savoir si les objets de la bib sont + // parallèles ou sequentiels + typedef void (*PACO_TEST_FUNCTION) (); + typedef PortableServer::ObjectId * (*FACTORY_FUNCTION) (CORBA::ORB_ptr, + paco_fabrique_thread *, + PortableServer::POA_ptr, + PortableServer::ObjectId *, + RegistryConnexion **, + const char *, + int); + int _numInstance; + std::string _hostname; + std::string _containerName; + PortableServer::POA_var _poa; + PortableServer::ObjectId * _id; + SALOME_NamingService *_NS; + + paco_fabrique_thread * _fab_thread; }; #endif