Version: 8.3.0
SALOME_ParallelContainerProxy_i.hxx
Go to the documentation of this file.
1 // Copyright (C) 2007-2016 CEA/DEN, EDF R&D, OPEN CASCADE
2 //
3 // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
4 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
5 //
6 // This library is free software; you can redistribute it and/or
7 // modify it under the terms of the GNU Lesser General Public
8 // License as published by the Free Software Foundation; either
9 // version 2.1 of the License, or (at your option) any later version.
10 //
11 // This library is distributed in the hope that it will be useful,
12 // but WITHOUT ANY WARRANTY; without even the implied warranty of
13 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 // Lesser General Public License for more details.
15 //
16 // You should have received a copy of the GNU Lesser General Public
17 // License along with this library; if not, write to the Free Software
18 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19 //
20 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
21 //
22 // File : SALOME_ParallelContainerProxy_i.hxx
23 // Author : André RIBES, EDF
24 
25 #ifndef _SALOME_PARALLEL_CONTAINER_PROXY_I_HXX_
26 #define _SALOME_PARALLEL_CONTAINER_PROXY_I_HXX_
27 
28 #include "utilities.h"
29 #include "Basics_Utils.hxx"
30 #include "SALOME_PACOExtensionPaCO_Engines_PACO_Container_server.hxx"
32 #include "SALOME_NamingService.hxx"
33 #include "RegistryConnexion.hxx"
34 #include <map>
35 #include <dlfcn.h>
36 #include <paco_omni.h>
37 
38 #include <Python.h>
40 
42  virtual public Engines::PACO_Container_proxy_impl,
43  virtual public ParallelGlobalProcessVar_i
44 {
45  public:
46  Container_proxy_impl_final(CORBA::ORB_ptr orb,
47  paco_fabrique_thread * fab_thread,
48  PortableServer::POA_ptr poa,
49  std::string containerName,
50  bool is_a_return_proxy = false);
51 
53 
54  virtual void Shutdown();
55 
56  virtual ::CORBA::Boolean load_component_Library(const char* componentName,CORBA::String_out reason);
57  virtual Engines::EngineComponent_ptr create_component_instance (const char* componentName,
58  ::CORBA::Long studyId);
59  virtual Engines::EngineComponent_ptr create_component_instance_env (const char* componentName,
60  CORBA::Long studyId, // 0 for multiStudy
61  const Engines::FieldsDict& env,
62  CORBA::String_out reason);
63 
64  private:
65  std::map<std::string, std::string> _libtype_map; // libname -> libtype (seq ou par)
66 
67  struct proxy_object
68  {
69  Engines::EngineComponent_var proxy_corba_ref;
70  PortableServer::ObjectId * proxy_id;
72  };
73 
74  // Cette liste contient les references vers les différentes
75  // instances d'objets parallèles.
76  std::list<Container_proxy_impl_final::proxy_object> _par_obj_inst_list;
77 
78  // Fonction de test pour savoir si les objets de la bib sont
79  // parallèles ou sequentiels
80  typedef void (*PACO_TEST_FUNCTION) ();
81  typedef PortableServer::ObjectId * (*FACTORY_FUNCTION) (CORBA::ORB_ptr,
82  paco_fabrique_thread *,
83  PortableServer::POA_ptr,
84  PortableServer::ObjectId *,
86  const char *,
87  int);
89  std::string _hostname;
90  std::string _containerName;
91  PortableServer::POA_var _poa;
92  PortableServer::ObjectId * _id;
94 
95  paco_fabrique_thread * _fab_thread;
96 };
97 
98 #endif