Salome HOME
updated copyright message
[modules/kernel.git] / bin / orbmodule.py
index 32c38280436ff81d653cdc0221240b937ec4c2a7..83d35eb902438c562fe8e9b33e1fe9deb9781bf3 100755 (executable)
@@ -1,5 +1,5 @@
 #  -*- coding: iso-8859-1 -*-
-# Copyright (C) 2007-2014  CEA/DEN, EDF R&D, OPEN CASCADE
+# Copyright (C) 2007-2023  CEA, EDF, OPEN CASCADE
 #
 # Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 # CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
@@ -27,7 +27,7 @@
 
 import sys,os,time
 import string
-from nameserver import *
+from nameserver import NamingServer
 from omniORB import CORBA
 from launchConfigureParser import verbose
 
@@ -37,36 +37,45 @@ import CosNaming
 # -----------------------------------------------------------------------------
 
 class client:
-   """Client for SALOME"""
+    """Client for SALOME"""
 
-   def __init__(self,args=None):
+    def __init__(self,args=None):
       # Initialise the ORB
+
+      if args is not None and 'launcher' in args:
+        pos = args['launcher'].find(":")
+        if pos != -1:
+          machine = args['launcher'][0:pos]
+          port = args['launcher'][pos+1:]
+          sys.argv.append('-ORBInitRef')
+          sys.argv.append("NameService=corbaname::" + machine + ":" + port)
+          print("Connect to naming service on machine: "+machine+" port: "+port)
       self.orb=CORBA.ORB_init(sys.argv, CORBA.ORB_ID)
 
       # Initialise the Naming Service
       self.initNS(args or {})
 
-   # --------------------------------------------------------------------------
+    # --------------------------------------------------------------------------
 
-   def initNS(self,args):
+    def initNS(self,args):
       # Obtain a reference to the root naming context
-      obj         = self.orb.resolve_initial_references("NameService")
+      obj = self.orb.resolve_initial_references("NameService")
       try:
           self.rootContext = obj._narrow(CosNaming.NamingContext)
           return
       except (CORBA.TRANSIENT,CORBA.OBJECT_NOT_EXIST,CORBA.COMM_FAILURE):
           self.rootContext = None
-          if verbose(): print "Launch Naming Service++",
+          if verbose(): print("Launch Naming Service++", end=' ')
 
       # On lance le Naming Server (doit etre dans le PATH)
       test = True
-      if args['wake_up_session']:
-         test = False
-         pass
+      if args != None and 'wake_up_session' in args and args['wake_up_session']:
+        test = False
+        pass
       if test:
-         NamingServer(args).run()
-         pass
-      print "Searching Naming Service ",
+        NamingServer(args).run()
+        pass
+      print("Searching Naming Service ", end=' ')
       ncount=0
       delta=0.1
       while(ncount < 100):
@@ -82,66 +91,72 @@ class client:
               time.sleep(delta)
 
       if self.rootContext is None:
-          print "Failed to narrow the root naming context"
+          print("Failed to narrow the root naming context")
           sys.exit(1)
-      print " found in %s seconds " % ((ncount-1)*delta)
+      print(" found in %s seconds " % ((ncount-1)*delta))
+
+    # --------------------------------------------------------------------------
 
-   # --------------------------------------------------------------------------
+    def showNScontext(self,context,dec=''):
+      if not context:
+        print("[NS] No context")
+        return
+      else:
+        print(context)
 
-   def showNScontext(self,context,dec=''):
-      bl,bi=context.list(0)
+      _,bi = context.list(0)
       if bi is not None:
-         ok,b=bi.next_one()
-         while(ok):
+        ok,b = bi.next_one()
+        while(ok):
             for s in b.binding_name :
-               print "%s%s.%s" %(dec,s.id,s.kind)
-               if s.kind == "dir":
-                  obj=context.resolve([s])
+              print("%s%s.%s" %(dec,s.id,s.kind))
+              if s.kind == "dir":
+                  obj = context.resolve([s])
                   scontext = obj._narrow(CosNaming.NamingContext)
                   self.showNScontext(scontext,dec=dec+'  ')
-            ok,b=bi.next_one()
+            ok,b = bi.next_one()
 
-   # --------------------------------------------------------------------------
+    # --------------------------------------------------------------------------
 
-   def showNS(self):
+    def showNS(self):
       """ Show the content of SALOME naming service """
       self.showNScontext(self.rootContext)
 
-   # --------------------------------------------------------------------------
+    # --------------------------------------------------------------------------
 
-   def Resolve(self, Path):
-      resolve_path=string.split(Path,'/')
+    def Resolve(self, Path):
+      resolve_path = Path.split('/')
       if resolve_path[0] == '': del resolve_path[0]
-      dir_path=resolve_path[:-1]
-      context_name=[]
+      dir_path = resolve_path[:-1]
+      context_name = []
       for e in dir_path:
-         context_name.append(CosNaming.NameComponent(e,"dir"))
+        context_name.append(CosNaming.NameComponent(e,"dir"))
       context_name.append(CosNaming.NameComponent(resolve_path[-1],"object"))
 
       try:
           obj = self.rootContext.resolve(context_name)
-      except CosNaming.NamingContext.NotFound, ex:
+      except CosNaming.NamingContext.NotFound as ex:
           obj = None
-      except CosNaming.NamingContext.InvalidName, ex:
+      except CosNaming.NamingContext.InvalidName as ex:
           obj = None
-      except CosNaming.NamingContext.CannotProceed, ex:
+      except CosNaming.NamingContext.CannotProceed as ex:
           obj = None
       except (CORBA.TRANSIENT,CORBA.OBJECT_NOT_EXIST,CORBA.COMM_FAILURE):
           obj = None
       return obj
 
-   # --------------------------------------------------------------------------
+    # --------------------------------------------------------------------------
 
-   def waitNS(self,name,typobj=None,maxcount=240):
-      count=0
-      delta=0.5
-      print "Searching %s in Naming Service " % name,
+    def waitNS(self,name,typobj=None,maxcount=240):
+      count = 0
+      delta = 0.5
+      print("Searching %s in Naming Service " % name, end=' ')
       while(1):
           count += 1
-          if count > maxcount : raise RuntimeError, "Impossible de trouver %s" % name
-          obj=self.Resolve(name)
+          if count > maxcount : raise RuntimeError("Impossible de trouver %s" % name)
+          obj = self.Resolve(name)
           if obj :
-              print " found in %s seconds " % ((count-1)*delta)
+              print(" found in %s seconds " % ((count-1)*delta))
               break
           else:
               sys.stdout.write('+')
@@ -152,71 +167,71 @@ class client:
 
       nobj = obj._narrow(typobj)
       if nobj is None:
-            print "%s exists but is not a %s" % (name,typobj)
+            print("%s exists but is not a %s" % (name,typobj))
       return nobj
 
-   if sys.platform != "win32":
-    def waitNSPID(self, theName, thePID, theTypObj = None):
-      aCount = 0
-      aDelta = 0.5
-      anObj = None
-      print "Searching %s in Naming Service " % theName,
-      while(1):
-         try:
-           os.kill(thePID,0)
-         except:
-           raise RuntimeError, "Process %d for %s not found" % (thePID,theName)
-         aCount += 1
-         anObj = self.Resolve(theName)
-         if anObj:
-            print " found in %s seconds " % ((aCount-1)*aDelta)
+    if sys.platform != "win32":
+      def waitNSPID(self, theName, thePID, theTypObj = None):
+        aCount = 0
+        aDelta = 0.5
+        anObj = None
+        print("Searching %s in Naming Service " % theName, end=' ')
+        while(1):
+          try:
+            os.kill(thePID,0)
+          except Exception:
+            raise RuntimeError("Process %d for %s not found" % (thePID,theName))
+          aCount += 1
+          anObj = self.Resolve(theName)
+          if anObj:
+            print(" found in %s seconds " % ((aCount-1)*aDelta))
             break
-         else:
+          else:
             sys.stdout.write('+')
             sys.stdout.flush()
             time.sleep(aDelta)
             pass
-         pass
-
-      if theTypObj is None:
-         return anObj
-
-      anObject = anObj._narrow(theTypObj)
-      if anObject is None:
-         print "%s exists but is not a %s" % (theName,theTypObj)
-      return anObject
+          pass
+  
+        if theTypObj is None:
+          return anObj
+  
+        anObject = anObj._narrow(theTypObj)
+        if anObject is None:
+          print("%s exists but is not a %s" % (theName,theTypObj))
+        return anObject
 
 
-   # --------------------------------------------------------------------------
+    # --------------------------------------------------------------------------
 
-   def ResolveLogger(self, name):
-      context_name=[]
+    def ResolveLogger(self, name):
+      context_name = []
       context_name.append(CosNaming.NameComponent(name,""))
 
       try:
           obj = self.rootContext.resolve(context_name)
-      except CosNaming.NamingContext.NotFound, ex:
+      except CosNaming.NamingContext.NotFound as ex:
           obj = None
-      except CosNaming.NamingContext.InvalidName, ex:
+      except CosNaming.NamingContext.InvalidName as ex:
           obj = None
-      except CosNaming.NamingContext.CannotProceed, ex:
+      except CosNaming.NamingContext.CannotProceed as ex:
           obj = None
       except (CORBA.TRANSIENT,CORBA.OBJECT_NOT_EXIST,CORBA.COMM_FAILURE):
           obj = None
       return obj
 
-   # --------------------------------------------------------------------------
+    # --------------------------------------------------------------------------
 
-   def waitLogger(self,name,typobj=None,maxcount=40):
-      count=0
-      delta=0.5
-      print "Searching %s in Naming Service " % name,
+    def waitLogger(self,name,typobj=None,maxcount=40):
+      count = 0
+      delta = 0.5
+      print("Searching %s in Naming Service " % name, end=' ')
       while(1):
           count += 1
-          if count > maxcount : raise RuntimeError, "Impossible de trouver %s" % name
-          obj=self.ResolveLogger(name)
+          if count > maxcount : raise RuntimeError("Impossible de trouver %s" % name)
+          obj = self.ResolveLogger(name)
           if obj :
-              print " found in %s seconds " % ((count-1)*delta)
+              print(" found in %s seconds " % ((count-1)*delta))
               break
           else:
               sys.stdout.write('+')
@@ -227,5 +242,5 @@ class client:
 
       nobj = obj._narrow(typobj)
       if nobj is None:
-            print "%s exists but is not a %s" % (name,typobj)
+            print("%s exists but is not a %s" % (name,typobj))
       return nobj