Back to index

salome-kernel  6.5.0
MPIObject_i.hxx
Go to the documentation of this file.
00001 // Copyright (C) 2007-2012  CEA/DEN, EDF R&D, OPEN CASCADE
00002 //
00003 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
00004 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
00005 //
00006 // This library is free software; you can redistribute it and/or
00007 // modify it under the terms of the GNU Lesser General Public
00008 // License as published by the Free Software Foundation; either
00009 // version 2.1 of the License.
00010 //
00011 // This library is distributed in the hope that it will be useful,
00012 // but WITHOUT ANY WARRANTY; without even the implied warranty of
00013 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00014 // Lesser General Public License for more details.
00015 //
00016 // You should have received a copy of the GNU Lesser General Public
00017 // License along with this library; if not, write to the Free Software
00018 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
00019 //
00020 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
00021 //
00022 
00023 //  SALOME MPIContainer : implemenation of container based on MPI libraries
00024 //  File   : MPIObject_i.hxx
00025 //  Module : SALOME
00026 //
00027 #ifndef _SALOME_POBJECT_I_H_
00028 #define _SALOME_POBJECT_I_H_ 
00029 
00030 #include <mpi.h>
00031 #include <string>
00032 #include <map>
00033 #include <SALOMEconfig.h>
00034 #include CORBA_SERVER_HEADER(SALOME_MPIObject)
00035 
00036 class MPIObject_i: public virtual POA_Engines::MPIObject
00037 {
00038  public:
00039   MPIObject_i();
00040   ~MPIObject_i();
00041     
00042   Engines::IORTab* tior();
00043   void tior(const Engines::IORTab& ior);
00044 
00045  protected:
00046   // Numero du processus
00047   int _numproc;
00048   // Nombre de processus
00049   int _nbproc;
00050   // IOR des objets paralleles sur tous les process mpi
00051   Engines::IORTab* _tior;
00052   // Echange des IOR de l'objet entre process
00053   void BCastIOR(CORBA::ORB_ptr orb,Engines::MPIObject_ptr pobj,bool amiCont);
00054 #ifdef HAVE_MPI2
00055   // MPI2 connection
00056   void remoteMPI2Connect(std::string service);
00057   // MPI2 disconnection
00058   void remoteMPI2Disconnect(std::string service);
00059 #endif
00060 
00061 protected:
00062   std::map<std::string, MPI_Comm> _gcom;
00063 
00064 private:
00065   std::map<std::string, MPI_Comm> _icom;
00066   std::map<std::string, bool> _srv;
00067   std::map<std::string, std::string> _port_name;
00068 
00069 } ;
00070 
00071 #endif