Salome HOME
Change dot image format from jpg to png.
[modules/kernel.git] / bin / killSalomeWithPort.py
index bcc1480044247551491ab4c1dc1c668b3948643d..725ee246e4549766320fb0989069860ca7f544dc 100755 (executable)
@@ -1,6 +1,6 @@
 #! /usr/bin/env python
 #  -*- coding: iso-8859-1 -*-
-# Copyright (C) 2007-2011  CEA/DEN, EDF R&D, OPEN CASCADE
+# Copyright (C) 2007-2012  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
@@ -32,7 +32,7 @@
 #
 
 import os, sys, pickle, signal, commands,glob
-from launchConfigureParser import verbose
+from salome_utils import verbose
 import Utils_Identity
 import salome_utils
 
@@ -86,7 +86,7 @@ def appliCleanOmniOrbConfig(port):
     - ${HOME}/${APPLI}/USERS/.omniORB_${USER}_last.cfg
     the last is removed only if the link points to the first file.
     """
-    from salome_utils import generateFileName
+    from salome_utils import generateFileName, getUserName
     home  = os.getenv("HOME")
     appli = os.getenv("APPLI")
     if appli is None:
@@ -121,7 +121,7 @@ def appliCleanOmniOrbConfig(port):
 
         #try to relink last.cfg to an existing config file if any
         files = glob.glob(os.path.join(os.environ["HOME"],Utils_Identity.getapplipath(),
-                                       "USERS",".omniORB_"+salome_utils.getUserName()+"_*.cfg"))
+                                       "USERS",".omniORB_"+getUserName()+"_*.cfg"))
         current_config=None
         current=0
         for f in files:
@@ -137,6 +137,45 @@ def appliCleanOmniOrbConfig(port):
 
 ########## kills all salome processes with the given port ##########
 
+def shutdownMyPort(port):
+    """
+    Shutdown SALOME session running on the specified port.
+    Parameters:
+    - port - port number
+    """
+    from salome_utils import generateFileName
+
+    # set OMNIORB_CONFIG variable to the proper file
+    home  = os.getenv("HOME")
+    appli = os.getenv("APPLI")
+    kwargs = {}
+    if appli is not None: 
+        home = os.path.join(home, appli,"USERS")
+        kwargs["with_username"]=True
+        pass
+    omniorb_config = generateFileName(home, prefix="omniORB",
+                                      extension="cfg",
+                                      hidden=True,
+                                      with_hostname=True,
+                                      with_port=port,
+                                      **kwargs)
+    os.environ['OMNIORB_CONFIG'] = omniorb_config
+
+    # give the chance to the servers to shutdown properly
+    try:
+        import time
+        import salome_kernel
+        orb, lcc, naming_service, cm = salome_kernel.salome_kernel_init()
+        # shutdown all
+        lcc.shutdownServers()
+        # give some time to shutdown to complete
+        time.sleep(1)
+        # shutdown omniNames and notifd
+        salome_kernel.LifeCycleCORBA.killOmniNames()
+    except:
+        pass
+    pass
+    
 def killMyPort(port):
     """
     Kill SALOME session running on the specified port.
@@ -144,6 +183,12 @@ def killMyPort(port):
     - port - port number
     """
     from salome_utils import getShortHostName, getHostName
+    
+    # try to shutdown session nomally
+    import threading, time
+    threading.Thread(target=shutdownMyPort, args=(port,)).start()
+    time.sleep(3) # wait a little, then kill processes (should be done if shutdown procedure hangs up)
+    
     # new-style dot-prefixed pidict file
     filedict = getPiDict(port, hidden=True)
     # provide compatibility with old-style pidict file (not dot-prefixed)