Salome HOME
mise a jour pour gestion des container MPI
[modules/kernel.git] / src / MPIContainer / MPIContainer_i.hxx
1 //  SALOME MPIContainer : implemenation of container based on MPI libraries
2 //
3 //  Copyright (C) 2003  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. 
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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
21 //
22 //
23 //
24 //  File   : MPIContainer_i.hxx
25 //  Module : SALOME
26
27 #ifndef _SALOME_PCONTAINER_
28 #define _SALOME_PCONTAINER_ 
29
30 #include <SALOMEconfig.h>
31 #include CORBA_SERVER_HEADER(SALOME_MPIContainer)
32 #include "SALOME_Container_i.hxx"
33 #include "MPIObject_i.hxx"
34
35 class Engines_MPIContainer_i : public POA_Engines::MPIContainer,
36                                public Engines_Container_i,
37                                public MPIObject_i
38 {
39
40  public:
41   // Constructor
42   Engines_MPIContainer_i( int nbproc, int numproc,
43                           CORBA::ORB_ptr orb,
44                           PortableServer::POA_ptr poa,
45                           char * containerName,
46                           int argc, char *argv[]);
47   // Destructor
48   ~Engines_MPIContainer_i();
49
50   // Start MPI Container
51   Engines::MPIContainer_ptr start_MPIimpl(const char* ContainerName,
52                                           CORBA::Short nbproc);
53
54   // Load a component
55   // synchronous version for process 0
56   Engines::Component_ptr load_impl(const char* nameToRegister,
57                                    const char* componentName);
58   // asynchronous version for other process
59   void SPload_impl(const char* nameToRegister, const char* componentName);
60
61   // Unload a component
62   // synchronous version for process 0
63   void remove_impl(Engines::Component_ptr component_i);
64   // asynchronous version for other process
65   void SPremove_impl(Engines::Component_ptr component_i);
66
67   // synchronous version for process 0
68   void finalize_removal();
69   // asynchronous version for other process
70   void SPfinalize_removal();
71
72  private:
73   // local version to not duplicate code 
74   // called by synchronous and asynchronous version
75   Engines::Component_ptr Lload_impl(const char* nameToRegister,
76                                     const char* componentName);
77   void Lremove_impl(Engines::Component_ptr component_i);
78   void Lfinalize_removal();
79
80 };
81 #endif