Salome HOME
merge from branch BR_V511_PR 15 12 2009
[modules/kernel.git] / src / NamingService / SALOME_NamingService.cxx
index ece4ca55a46f4f2b419a0f5ef4aaaa190325d8c3..8cf3c9268e9d20157cca622e869e2686b9e3739d 100644 (file)
@@ -626,6 +626,34 @@ SALOME_NamingService::ContainerName(const Engines::MachineParameters& params)
   return ret;
 }
 
+string 
+SALOME_NamingService::ContainerName(const Engines::ContainerParameters& params)
+{
+  int nbproc;
+
+  if ( !params.isMPI )
+    nbproc = 0;
+  else if ( (params.resource_params.nb_node <= 0) && (params.resource_params.nb_proc_per_node <= 0) )
+    nbproc = 1;
+  else if ( params.resource_params.nb_node == 0 )
+    nbproc = params.resource_params.nb_proc_per_node;
+  else if ( params.resource_params.nb_proc_per_node == 0 )
+    nbproc = params.resource_params.nb_node;
+  else
+    nbproc = params.resource_params.nb_node * params.resource_params.nb_proc_per_node;
+
+  string ret = ContainerName(params.container_name);
+
+  if ( nbproc >= 1 )
+    {
+      char *suffix = new char[8];
+      sprintf(suffix, "_%d", nbproc);
+      ret += suffix;
+    }
+
+  return ret;
+}
+
 // ============================================================================
 /*! \brief build a string representing a container in Naming Service.
  *
@@ -676,6 +704,19 @@ BuildContainerNameForNS(const Engines::MachineParameters& params,
   return ret;
 }
 
+string
+SALOME_NamingService::
+BuildContainerNameForNS(const Engines::ContainerParameters& params,
+                       const char *hostname)
+{
+  string ret = "/Containers/";
+  ret += hostname;
+  ret += "/";
+  ret += ContainerName(params);
+
+  return ret;
+}
+
 // ============================================================================
 /*! \brief search a name in current directory.
  *