Salome HOME
PR: merge from branch BR_UnitTests tag mergeto_trunk_17oct05
[modules/yacs.git] / src / MPIContainer / SALOME_MPIContainer.cxx
index 518849e26f574a0f120ab83d791db3db1b13ad24..bf2322190a7e30cf16008458e622172568d32045 100644 (file)
@@ -1,27 +1,29 @@
-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;
+  Engines_MPIContainer_i * myContainer=NULL;
 
-  BEGIN_OF(argv[0])
-  try {
-    
-    MESSAGE("Connection MPI");
+  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);
@@ -60,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();
+
 }