Salome HOME
Merge from V5_1_main 14/05/2010
[modules/kernel.git] / src / Container / SALOME_ContainerManager.hxx
index a0e7e19eb3961b3849395afd16ca6eaa7ad87219..59ceee4e833200fd8086b086896902328ca47a7d 100644 (file)
@@ -1,4 +1,4 @@
-//  Copyright (C) 2007-2008  CEA/DEN, EDF R&D, OPEN CASCADE
+//  Copyright (C) 2007-2010  CEA/DEN, EDF R&D, OPEN CASCADE
 //
 //  Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 //  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
@@ -19,6 +19,7 @@
 //
 //  See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+
 #ifndef __SALOME_CONTAINERMANAGER_HXX__
 #define __SALOME_CONTAINERMANAGER_HXX__
 
@@ -55,9 +56,6 @@ public:
 
 protected:
   // C++ methods
-  Engines::Container_ptr 
-  StartPaCOPPContainer(const Engines::ContainerParameters& params);
-
   Engines::Container_ptr
   FindContainer(const Engines::ContainerParameters& params,
                 const Engines::ResourceList& possibleResources);
@@ -71,6 +69,7 @@ protected:
                                                   const std::string& container_exe="SALOME_Container");
 
   std::string BuildCommandToLaunchLocalContainer(const Engines::ContainerParameters& params, 
+                                                 const std::string& machinesFile,
                                                  const std::string& container_exe="SALOME_Container");
 
   std::string BuildTempFileToLaunchRemoteContainer(const std::string& resource_name,
@@ -86,19 +85,10 @@ protected:
 
   std::string BuildTemporaryFileName() const;
 
-  std::string GetMPIZeroNode(std::string machine);
+  std::string GetMPIZeroNode(const std::string machine, const std::string machinesFile);
+
+  std::string machinesFile(const int nbproc);
 
-  // For PacO++ Parallel extension
-  typedef std::vector<std::string> actual_launch_machine_t;
-  std::string BuildCommandToLaunchParallelContainer(const std::string& exe_name, 
-                                                    const Engines::ContainerParameters& params,
-                                                    SALOME_ContainerManager::actual_launch_machine_t & vect_machine, 
-                                                    const std::string proxy_hostname = ""); 
-  CORBA::Object_ptr 
-  LaunchParallelContainer(const std::string& command, 
-                          const Engines::ContainerParameters& params,
-                          const std::string& name,
-                          SALOME_ContainerManager::actual_launch_machine_t & vect_machine);
   CORBA::ORB_var _orb;
   PortableServer::POA_var _poa;
 
@@ -115,5 +105,47 @@ protected:
   //! different behaviour if $APPLI exists (SALOME Application) 
   bool _isAppliSalomeDefined;
 
+  //! attribute that contains the number of processes used in batch mode by MPI containers
+  int _nbprocUsed;
+
+  static omni_mutex _numInstanceMutex ; // lib and instance protection
+
+  // Begin of PacO++ Parallel extension
+  typedef std::vector<std::string> actual_launch_machine_t;
+
+  bool checkPaCOParameters(Engines::ContainerParameters & params, std::string resource_selected);
+
+  Engines::Container_ptr 
+  StartPaCOPPContainer(const Engines::ContainerParameters& params, std::string resource_selected);
+
+
+
+  std::string BuildCommandToLaunchPaCOProxyContainer(const Engines::ContainerParameters& params,
+                                                     std::string machine_file_name,
+                                                     std::string & proxy_hostname);
+
+  std::string BuildCommandToLaunchPaCONodeContainer(const Engines::ContainerParameters& params,
+                                                    const std::string & machine_file_name,
+                                                    SALOME_ContainerManager::actual_launch_machine_t & vect_machine, 
+                                                    const std::string & proxy_hostname); 
+
+  void LogConfiguration(const std::string & log_type,
+                        const std::string & exe_type,
+                        const std::string & container_name,
+                        const std::string & hostname,
+                        std::string & begin, 
+                        std::string & end);
+
+  CORBA::Object_ptr 
+  LaunchPaCOProxyContainer(const std::string& command, 
+                           const Engines::ContainerParameters& params,
+                           const std::string& hostname);
+
+  bool 
+  LaunchPaCONodeContainer(const std::string& command, 
+                          const Engines::ContainerParameters& params,
+                          const std::string& name,
+                          SALOME_ContainerManager::actual_launch_machine_t & vect_machine);
+  // End of PaCO++ Parallel extension
 };
 #endif