Salome HOME
PR: merge from branch BR_UnitTests tag mergeto_trunk_17oct05
[modules/yacs.git] / src / MPIContainer / SALOME_MPIContainer.cxx
index f11dbb26de5c146920ba84a0d79eeca8d6a5f9dc..bf2322190a7e30cf16008458e622172568d32045 100644 (file)
@@ -1,53 +1,29 @@
-//  SALOME MPIContainer : implemenation of container based on MPI libraries
-//
-//  Copyright (C) 2003  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 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 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
-//  File   : SALOME_MPIContainer.cxx
-//  Module : SALOME
-
-using namespace std;
 #include <iostream>
 #include "MPIContainer_i.hxx"
+#include "Utils_ORB_INIT.hxx"
+#include "Utils_SINGLETON.hxx"
 #include "utilities.h"
 #include <mpi.h>
+#include "SALOMETraceCollector.hxx"
+using namespace std;
 
 int main(int argc, char* argv[])
 {
   int nbproc, numproc;
-  MPIContainer_i * myContainer;
-
-  BEGIN_OF(argv[0])
-  try {
-    
-    MESSAGE("Connection MPI");
+  Engines_MPIContainer_i * myContainer=NULL;
 
-    MPI_Init(&argc,&argv);
-    MPI_Comm_size(MPI_COMM_WORLD,&nbproc);
-    MPI_Comm_rank(MPI_COMM_WORLD,&numproc);
+  MPI_Init(&argc,&argv);
+  MPI_Comm_size(MPI_COMM_WORLD,&nbproc);
+  MPI_Comm_rank(MPI_COMM_WORLD,&numproc);
 
-    MESSAGE("Initialisation CORBA");
-    // Initialise the ORB.
-    CORBA::ORB_var orb = CORBA::ORB_init(argc, argv);
+  // Initialise the ORB.
+  ORB_INIT &init = *SINGLETON_<ORB_INIT>::Instance() ;
+  CORBA::ORB_var &orb = init( argc , argv ) ;
+  //  SALOMETraceCollector *myThreadTrace = SALOMETraceCollector::instance(orb);
  
+  BEGIN_OF("[" << numproc << "] " << argv[0])
+  try {
+    
     // Obtain a reference to the root POA.
     CORBA::Object_var obj = orb->resolve_initial_references("RootPOA");
     PortableServer::POA_var root_poa = PortableServer::POA::_narrow(obj);
@@ -86,35 +62,37 @@ int main(int argc, char* argv[])
        containerName = argv[1] ;
     }
 
-    MESSAGE("Chargement container sur proc: " << numproc);
-    myContainer = new MPIContainer_i(nbproc,numproc,orb,factory_poa, containerName);
-    MESSAGE("Fin chargement container");
+    MESSAGE("[" << numproc << "] MPIContainer: load MPIContainer servant");
+    myContainer = new Engines_MPIContainer_i(nbproc,numproc,orb,factory_poa, containerName,argc,argv);
 
     pman->activate();
 
     orb->run();
-    orb->destroy();
 
-    delete myContainer;
-    MPI_Finalize();
   }
-  catch(CORBA::SystemException&) {
-    INFOS("Caught CORBA::SystemException.")
+  catch(CORBA::SystemException&){
+    INFOS("Caught CORBA::SystemException.");
+  }
+  catch(PortableServer::POA::WrongPolicy&){
+    INFOS("Caught CORBA::WrongPolicyException.");
   }
-  catch(PortableServer::POA::WrongPolicy&)
-  {
-    INFOS("Caught CORBA::WrongPolicyException.")
+  catch(PortableServer::POA::ServantAlreadyActive&){
+    INFOS("Caught CORBA::ServantAlreadyActiveException");
   }
-  catch(PortableServer::POA::ServantAlreadyActive&)
-  {
-    INFOS("Caught CORBA::ServantAlreadyActiveException")
+  catch(CORBA::Exception&){
+    INFOS("Caught CORBA::Exception.");
   }
-  catch(CORBA::Exception&) {
-    INFOS("Caught CORBA::Exception.")
+  catch(...){
+    INFOS("Caught unknown exception.");
   }
-  catch(...) {
-    INFOS("Caught unknown exception.")
-   }
-  END_OF(argv[0]);
+
+  if(myContainer)
+    delete myContainer;
+
+  END_OF("[" << numproc << "] " << argv[0]);
+  //  delete myThreadTrace;
+
+  MPI_Finalize();
+
 }