Salome HOME
Merge from V5_1_3_BR 07/12/2009
[modules/kernel.git] / src / LifeCycleCORBA / SALOME_LifeCycleCORBA.cxx
index a96f9fac7e7dfc17995390661c0282c14f353b84..53455360982754f42b8ebcf52db9da14789e35d7 100644 (file)
@@ -85,9 +85,11 @@ SALOME_LifeCycleCORBA::SALOME_LifeCycleCORBA(SALOME_NamingService *ns)
   char **argv = &xargv;
   CORBA::ORB_var orb = CORBA::ORB_init(argc, argv);
   //  LocalTraceCollector *myThreadTrace = SALOMETraceCollector::instance(orb);
+  _NSnew=0;
   if (!ns)
     {
       _NS = new SALOME_NamingService(orb);
+      _NSnew=_NS;
     }
   else _NS = ns;
   //add try catch
@@ -115,6 +117,7 @@ SALOME_LifeCycleCORBA::SALOME_LifeCycleCORBA(SALOME_NamingService *ns)
 
 SALOME_LifeCycleCORBA::~SALOME_LifeCycleCORBA()
 {
+  if(_NSnew)delete _NSnew;
 }
 
 //=============================================================================
@@ -134,13 +137,12 @@ SALOME_LifeCycleCORBA::FindComponent(const Engines::MachineParameters& params,
   if (! isKnownComponentClass(componentName))
     return Engines::Component::_nil();
 
-  Engines::CompoList clist;
-  clist.length(1);
-  clist[0] = componentName;
-  Engines::MachineList_var listOfMachines =
-    _ResManager->GetFittingResources(params, clist);
+  Engines::MachineParameters parms(params);
+  parms.componentList.length(1);
+  parms.componentList[0] = componentName;
+  Engines::MachineList_var listOfMachines = _ResManager->GetFittingResources(parms);
 
-  Engines::Component_var compo = _FindComponent(params,
+  Engines::Component_var compo = _FindComponent(parms,
                                                componentName,
                                                studyId,
                                                listOfMachines);
@@ -168,16 +170,16 @@ SALOME_LifeCycleCORBA::LoadComponent(const Engines::MachineParameters& params,
   if (! isKnownComponentClass(componentName))
     return Engines::Component::_nil();
 
-  Engines::CompoList clist;
-  clist.length(1);
-  clist[0] = componentName;
-  Engines::MachineList_var listOfMachines =
-    _ResManager->GetFittingResources(params, clist);
+  Engines::MachineParameters parms(params);
+  parms.componentList.length(1);
+  parms.componentList[0] = componentName;
 
-  Engines::Component_var compo = _LoadComponent(params,
+  Engines::MachineList_var listOfMachines = _ResManager->GetFittingResources(parms);
+  parms.computerList=listOfMachines;
+
+  Engines::Component_var compo = _LoadComponent(parms,
                                                componentName,
-                                               studyId,
-                                               listOfMachines);
+                                               studyId);
 
   return compo._retn();
 }
@@ -204,22 +206,23 @@ FindOrLoad_Component(const Engines::MachineParameters& params,
   if (! isKnownComponentClass(componentName))
     return Engines::Component::_nil();
 
-  Engines::CompoList clist;
-  clist.length(1);
-  clist[0] = componentName;
-  Engines::MachineList_var listOfMachines =
-    _ResManager->GetFittingResources(params,clist);
+  Engines::MachineParameters parms(params);
+  parms.componentList.length(1);
+  parms.componentList[0] = componentName;
+  Engines::MachineList_var listOfMachines = _ResManager->GetFittingResources(parms);
 
-  Engines::Component_var compo = _FindComponent(params,
+  Engines::Component_var compo = _FindComponent(parms,
                                                componentName,
                                                studyId,
                                                listOfMachines);
 
   if(CORBA::is_nil(compo))
-    compo = _LoadComponent(params,
+    {
+      parms.computerList=listOfMachines;
+      compo = _LoadComponent(parms,
                           componentName,
-                          studyId,
-                          listOfMachines);
+                          studyId);
+    }
 
   return compo._retn();
 }
@@ -274,7 +277,7 @@ SALOME_LifeCycleCORBA::FindOrLoad_Component(const char *containerName,
     {
       // containerName doesn't contain "/" => Local container
       params->container_name=CORBA::string_dup(stContainer);
-      params->hostname=CORBA::string_dup(Kernel_Utils::GetHostname().c_str());
+      params->hostname="";
     }
   else 
     {
@@ -369,10 +372,6 @@ void SALOME_LifeCycleCORBA::preSet( Engines::MachineParameters& params)
 {
   params.container_name = "";
   params.hostname = "";
-  params.alias = "";
-  params.protocol = "";
-  params.username = "";
-  params.applipath = "";
   //param.componentList = 0;
   //param.computerList = 0;
   params.OS = "";
@@ -381,8 +380,6 @@ void SALOME_LifeCycleCORBA::preSet( Engines::MachineParameters& params)
   params.nb_proc_per_node = 0;
   params.nb_node = 0;
   params.isMPI = false;
-  params.mpiImpl="";
-  params.batch="";
   params.workingdir = "";
   params.mode = "";
   params.policy = "";
@@ -540,6 +537,8 @@ void SALOME_LifeCycleCORBA::killOmniNames()
   string portNumber (::getenv ("NSPORT") );
   if ( !portNumber.empty() ) 
     {
+#ifdef WNT
+#else
       string cmd ;
       cmd = string( "ps -eo pid,command | grep -v grep | grep -E \"omniNames.*")
         + portNumber
@@ -550,6 +549,7 @@ void SALOME_LifeCycleCORBA::killOmniNames()
       }
       catch ( ... ) {
       }
+#endif
     }
   
   // NPAL 18309  (Kill Notifd)
@@ -634,7 +634,6 @@ _FindComponent(const Engines::MachineParameters& params,
  *  \param params         machine parameters like type or name...
  *  \param componentName  the name of component class
  *  \param studyId        default = 0  : multistudy instance
- *  \param listOfMachines list of machine address
  *  \return a CORBA reference of the component instance, or _nil if problem
  */
 //=============================================================================
@@ -643,15 +642,12 @@ Engines::Component_ptr
 SALOME_LifeCycleCORBA::
 _LoadComponent(const Engines::MachineParameters& params, 
              const char *componentName,
-             int studyId,
-             const Engines::MachineList& listOfMachines)
+             int studyId)
 {
   MESSAGE("_LoadComponent, required " << params.container_name <<
          " " << componentName << " " << NbProc(params));
 
-  Engines::Container_var cont =
-    _ContManager->FindOrStartContainer(params,
-                                      listOfMachines);
+  Engines::Container_var cont = _ContManager->FindOrStartContainer(params);
   if (CORBA::is_nil(cont)) return Engines::Component::_nil();
 
   bool isLoadable = cont->load_component_Library(componentName);
@@ -683,19 +679,12 @@ SALOME_LifeCycleCORBA::Load_ParallelComponent(const Engines::MachineParameters&
   MESSAGE("Number of component nodes : " << params.nb_component_nodes);
   MESSAGE("Component Name : " << componentName);*/
 
-  Engines::CompoList clist;
-  clist.length(1);
-  clist[0] = componentName;
-  MESSAGE("Building a list of machines");
-  Engines::MachineList_var listOfMachines = _ResManager->GetFittingResources(params, clist);
-  if (listOfMachines->length() == 0)
-  {
-    INFOS("No matching machines founded !");
-    return Engines::Component::_nil();
-  }
+  Engines::MachineParameters parms(params);
+  parms.componentList.length(1);
+  parms.componentList[0] = componentName;
 
   MESSAGE("Starting Parallel Container");
-  Engines::Container_var cont = _ContManager->FindOrStartParallelContainer(params, listOfMachines);
+  Engines::Container_var cont = _ContManager->StartParallelContainer(parms);
   if (CORBA::is_nil(cont)) {
     INFOS("FindOrStartParallelContainer() returns a NULL container !");
     return Engines::Component::_nil();
@@ -711,7 +700,7 @@ SALOME_LifeCycleCORBA::Load_ParallelComponent(const Engines::MachineParameters&
   MESSAGE("Creating component instance");
   // @PARALLEL@ permits to identify that the component requested
   // is a parallel component.
-  string name = string(componentName) + string("@PARALLEL@");
+  string name = string(componentName);
   Engines::Component_var myInstance = cont->create_component_instance(name.c_str(), studyId);
   if (CORBA::is_nil(myInstance))
     INFOS("create_component_instance returns a NULL component !");
@@ -739,17 +728,30 @@ void SALOME_LifeCycleCORBA::copyFile(const char* hostSrc, const char* fileSrc, c
   Engines::MachineParameters params;
   preSet(params);
 
-  Engines::MachineList listOfMachines;
-  listOfMachines.length(1);
-
   params.hostname = hostDest;
-  listOfMachines[0] = hostDest;
-  Engines::Container_var containerDest = contManager->FindOrStartContainer(params, listOfMachines);
+  Engines::Container_var containerDest = contManager->FindOrStartContainer(params);
 
   params.hostname = hostSrc;
-  listOfMachines[0] = hostSrc;
-  Engines::Container_var containerSrc = contManager->FindOrStartContainer(params, listOfMachines);
+  Engines::Container_var containerSrc = contManager->FindOrStartContainer(params);
 
   containerDest->copyFile(containerSrc,fileSrc,fileDest);
 }
 
+/*! \brief get the naming service used by the life cycle
+ *
+ *  \return the naming service
+ */
+SALOME_NamingService * SALOME_LifeCycleCORBA::namingService()
+{
+  return _NS;
+}
+
+/*! \brief get the orb used by the life cycle
+ *
+ *  \return the orb
+ */
+CORBA::ORB_ptr SALOME_LifeCycleCORBA::orb()
+{
+  return _NS->orb();
+}
+