Salome HOME
Increment version: 7.6.0
[modules/kernel.git] / src / LifeCycleCORBA / SALOME_LifeCycleCORBA.cxx
index 1e4c010b707d20adf9151685ae51aba9e14a9f16..58d64b4b325cfb5b794fddd6355f5252df9f49da 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2014  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2015  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
 #include <ServiceUnreachable.hxx>
 
 #include "SALOME_LifeCycleCORBA.hxx"
+#include "SALOME_ResourcesManager.hxx"
+#include "SALOMESDS_DataServerManager.hxx"
+
 #include CORBA_CLIENT_HEADER(SALOME_ModuleCatalog)
 #include CORBA_CLIENT_HEADER(SALOME_Session)
 #include CORBA_CLIENT_HEADER(DSC_Engines)
 #include CORBA_CLIENT_HEADER(SALOME_Registry)
 #include CORBA_CLIENT_HEADER(SALOMEDS)
+#include CORBA_CLIENT_HEADER(SALOME_SDS)
 #include CORBA_CLIENT_HEADER(Logger)
 #include CORBA_CLIENT_HEADER(SALOME_Launcher)
 
+#include "SALOME_ResourcesManager.hxx"
 #include "SALOME_ContainerManager.hxx"
 #include "SALOME_Component_i.hxx"
 #include "SALOME_NamingService.hxx"
@@ -421,7 +426,7 @@ Engines::ResourcesManager_ptr SALOME_LifeCycleCORBA::getResourcesManager()
 }
 
 //=============================================================================
-/*! \brief shutdown all the SALOME servers except SALOME_Session_Server, omniNames and notifd
+/*! \brief shutdown all the SALOME servers except SALOME_Session_Server and omniNames
  */
 //=============================================================================
 
@@ -502,8 +507,20 @@ void SALOME_LifeCycleCORBA::shutdownServers()
 #ifndef WIN32
   nanosleep(&ts_req,0);
 #endif
+  // 4 ) Remote ScopeServer (the DataServer is hosted by SalomeLauncher shutdown right after)
+  try
+    {
+      CORBA::Object_var objDSM(_NS->Resolve(SALOMESDS::DataServerManager::NAME_IN_NS));
+      SALOME::DataServerManager_var dsm(SALOME::DataServerManager::_narrow(objDSM));
+      if ( !CORBA::is_nil(dsm) )
+        dsm->shutdownScopes();
+    }
+  catch(const CORBA::Exception& e)
+    {
+       // ignore and continue
+    }
 
-  // 4) SalomeLauncher
+  // 5) SalomeLauncher
   try
     {
       CORBA::Object_var objSL = _NS->Resolve("/SalomeLauncher");
@@ -521,7 +538,7 @@ void SALOME_LifeCycleCORBA::shutdownServers()
   nanosleep(&ts_req,0);
 #endif
 
-  // 5) Registry
+  // 6) Registry
   try
     {
       CORBA::Object_var objR = _NS->Resolve("/Registry");
@@ -534,20 +551,6 @@ void SALOME_LifeCycleCORBA::shutdownServers()
        // ignore and continue
     }
 
-  /*
-  // 6) Session
-  if ( !CORBA::is_nil( session ) ) {
-    try
-    {
-      session->Shutdown();
-    }
-    catch(const CORBA::Exception& e)
-    {
-      // ignore and continue
-    }
-  }
-  */
-
   // 7) Logger
   int argc = 0;
   char *xargv = (char*)"";
@@ -587,7 +590,7 @@ void SALOME_LifeCycleCORBA::shutdownServers()
 }
 
 //=============================================================================
-/*! \brief shutdown  omniNames and notifd
+/*! \brief shutdown  omniNames
  */
 //=============================================================================
 
@@ -611,8 +614,6 @@ void SALOME_LifeCycleCORBA::killOmniNames()
 #endif
   }
 
-  // NPAL 18309  (Kill Notifd)
-
   std::string python_exe;
 
   python_exe = std::string("python");
@@ -624,9 +625,10 @@ void SALOME_LifeCycleCORBA::killOmniNames()
 
   if ( !portNumber.empty() )
   {
-    std::string cmd = ("from killSalomeWithPort import killNotifdAndClean; ");
-    cmd += std::string("killNotifdAndClean(") + portNumber + "); ";
-    cmd  = python_exe + std::string(" -c \"") + cmd +"\" > /dev/null 2> /dev/null";
+    std::string cmd = ("from killSalomeWithPort import cleanApplication; ");
+    cmd += std::string("cleanApplication(") + portNumber + "); ";
+    //cmd  = python_exe + std::string(" -c \"") + cmd +"\" > /dev/null 2> /dev/null";
+    cmd  = python_exe + std::string(" -c \"") + cmd +"\"";
     MESSAGE(cmd);
     system( cmd.c_str() );
   }
@@ -637,7 +639,8 @@ void SALOME_LifeCycleCORBA::killOmniNames()
   {
     std::string cmd = ("from PortManager import releasePort; ");
     cmd += std::string("releasePort(") + portNumber + "); ";
-    cmd  = python_exe + std::string(" -c \"") + cmd +"\" > /dev/null 2> /dev/null";
+    //cmd  = python_exe + std::string(" -c \"") + cmd +"\" > /dev/null 2> /dev/null";
+    cmd  = python_exe + std::string(" -c \"") + cmd +"\"";
     MESSAGE(cmd);
     system( cmd.c_str() );
   }