Salome HOME
Merge from BR_KERNEL_REFACTORING
[modules/kernel.git] / bin / orbmodule.py
index ae474443250785a8960bcc933dad643ba5e78427..b8c15176a9fa8d42ee8ac394616a85b776db4f06 100755 (executable)
@@ -1,24 +1,30 @@
-#  Copyright (C) 2007-2008  CEA/DEN, EDF R&D, OPEN CASCADE
+#  -*- coding: iso-8859-1 -*-
+# Copyright (C) 2007-2013  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
+# Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
 #
-#  This library is free software; you can redistribute it and/or
-#  modify it under the terms of the GNU Lesser General Public
-#  License as published by the Free Software Foundation; either
-#  version 2.1 of the License.
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License.
 #
-#  This library is distributed in the hope that it will be useful,
-#  but WITHOUT ANY WARRANTY; without even the implied warranty of
-#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-#  Lesser General Public License for more details.
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# Lesser General Public License for more details.
 #
-#  You should have received a copy of the GNU Lesser General Public
-#  License along with this library; if not, write to the Free Software
-#  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
 #
-#  See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 #
+
+## @package orbmodule
+# \brief Module that provides a client for %SALOME
+#
+
 import sys,os,time
 import string
 from nameserver import *
@@ -27,17 +33,16 @@ from launchConfigureParser import verbose
 
 # Import the stubs for the Naming service
 import CosNaming
-#from runNS import *
 
 # -----------------------------------------------------------------------------
 
 class client:
+   """Client for SALOME"""
 
    def __init__(self,args=None):
-      #set GIOP message size for bug 10560: impossible to get field values in TUI mode
-      sys.argv.extend(["-ORBgiopMaxMsgSize", "104857600"]) ## = 100 * 1024 * 1024
       # Initialise the ORB
       self.orb=CORBA.ORB_init(sys.argv, CORBA.ORB_ID)
+
       # Initialise the Naming Service
       self.initNS(args or {})
 
@@ -52,13 +57,19 @@ class client:
       except (CORBA.TRANSIENT,CORBA.OBJECT_NOT_EXIST,CORBA.COMM_FAILURE):
           self.rootContext = None
           if verbose(): print "Launch Naming Service++",
-          
+
       # On lance le Naming Server (doit etre dans le PATH)
-      NamingServer(args).run()
+      test = True
+      if args['wake_up_session']:
+         test = False
+         pass
+      if test:
+         NamingServer(args).run()
+         pass
       print "Searching Naming Service ",
       ncount=0
       delta=0.1
-      while(ncount < 10):
+      while(ncount < 100):
           ncount += 1
           try:
               obj = self.orb.resolve_initial_references("NameService")
@@ -93,7 +104,7 @@ class client:
    # --------------------------------------------------------------------------
 
    def showNS(self):
-      """ Show the content of NS"""
+      """ Show the content of SALOME naming service """
       self.showNScontext(self.rootContext)
 
    # --------------------------------------------------------------------------
@@ -121,22 +132,22 @@ class client:
 
    # --------------------------------------------------------------------------
 
-   def waitNS(self,name,typobj=None,maxcount=60):
+   def waitNS(self,name,typobj=None,maxcount=240):
       count=0
       delta=0.5
       print "Searching %s in Naming Service " % name,
       while(1):
           count += 1
-          if count > maxcount : raise "Impossible de trouver %s" % name
+          if count > maxcount : raise RuntimeError, "Impossible de trouver %s" % name
           obj=self.Resolve(name)
-          if obj : 
+          if obj :
               print " found in %s seconds " % ((count-1)*delta)
               break
           else:
               sys.stdout.write('+')
               sys.stdout.flush()
               time.sleep(delta)
+
       if typobj is None:return obj
 
       nobj = obj._narrow(typobj)
@@ -154,10 +165,10 @@ class client:
          try:
            os.kill(thePID,0)
          except:
-           raise "Process %d for %s not found" % (thePID,theName)
+           raise RuntimeError, "Process %d for %s not found" % (thePID,theName)
          aCount += 1
          anObj = self.Resolve(theName)
-         if anObj: 
+         if anObj:
             print " found in %s seconds " % ((aCount-1)*aDelta)
             break
          else:
@@ -166,7 +177,7 @@ class client:
             time.sleep(aDelta)
             pass
          pass
-      
+
       if theTypObj is None:
          return anObj
 
@@ -193,7 +204,7 @@ class client:
       except (CORBA.TRANSIENT,CORBA.OBJECT_NOT_EXIST,CORBA.COMM_FAILURE):
           obj = None
       return obj
-   
+
    # --------------------------------------------------------------------------
 
    def waitLogger(self,name,typobj=None,maxcount=40):
@@ -202,20 +213,19 @@ class client:
       print "Searching %s in Naming Service " % name,
       while(1):
           count += 1
-          if count > maxcount : raise "Impossible de trouver %s" % name
+          if count > maxcount : raise RuntimeError, "Impossible de trouver %s" % name
           obj=self.ResolveLogger(name)
-          if obj : 
+          if obj :
               print " found in %s seconds " % ((count-1)*delta)
               break
           else:
               sys.stdout.write('+')
               sys.stdout.flush()
               time.sleep(delta)
+
       if typobj is None:return obj
 
       nobj = obj._narrow(typobj)
       if nobj is None:
             print "%s exists but is not a %s" % (name,typobj)
       return nobj
-