Beremiz_service.py
changeset 3884 34da877021d5
parent 3843 832bcf1b5b60
--- a/Beremiz_service.py	Sat Dec 09 01:03:43 2023 +0100
+++ b/Beremiz_service.py	Wed Jan 17 22:09:32 2024 +0100
@@ -36,7 +36,7 @@
 from functools import partial
 
 import runtime
-from runtime.PyroServer import PyroServer
+from runtime.eRPCServer import eRPCServer as RPCServer
 from runtime.xenomai import TryPreloadXenomai
 from runtime import LogMessageAndException
 from runtime import PlcStatus
@@ -270,12 +270,12 @@
             TBMENU_CHANGE_INTERFACE = wx.NewIdRef()
             TBMENU_LIVE_SHELL = wx.NewIdRef()
             TBMENU_WXINSPECTOR = wx.NewIdRef()
-            TBMENU_CHANGE_WD = wx.NewIdRef()
+            # TBMENU_CHANGE_WD = wx.NewIdRef()
             TBMENU_QUIT = wx.NewIdRef()
 
-            def __init__(self, pyroserver):
+            def __init__(self, rpc_server):
                 wx.adv.TaskBarIcon.__init__(self)
-                self.pyroserver = pyroserver
+                self.rpc_server = rpc_server
                 # Set the image
                 self.UpdateIcon(None)
 
@@ -287,7 +287,7 @@
                 self.Bind(wx.EVT_MENU, self.OnTaskBarLiveShell, id=self.TBMENU_LIVE_SHELL)
                 self.Bind(wx.EVT_MENU, self.OnTaskBarWXInspector, id=self.TBMENU_WXINSPECTOR)
                 self.Bind(wx.EVT_MENU, self.OnTaskBarChangePort, id=self.TBMENU_CHANGE_PORT)
-                self.Bind(wx.EVT_MENU, self.OnTaskBarChangeWorkingDir, id=self.TBMENU_CHANGE_WD)
+                # self.Bind(wx.EVT_MENU, self.OnTaskBarChangeWorkingDir, id=self.TBMENU_CHANGE_WD)
                 self.Bind(wx.EVT_MENU, self.OnTaskBarQuit, id=self.TBMENU_QUIT)
 
             def CreatePopupMenu(self):
@@ -304,7 +304,7 @@
                 menu.Append(self.TBMENU_CHANGE_NAME, _("Change Name"))
                 menu.Append(self.TBMENU_CHANGE_INTERFACE, _("Change IP of interface to bind"))
                 menu.Append(self.TBMENU_CHANGE_PORT, _("Change Port Number"))
-                menu.Append(self.TBMENU_CHANGE_WD, _("Change working directory"))
+                # menu.Append(self.TBMENU_CHANGE_WD, _("Change working directory"))
                 menu.AppendSeparator()
                 menu.Append(self.TBMENU_LIVE_SHELL, _("Launch a live Python shell"))
                 menu.Append(self.TBMENU_WXINSPECTOR, _("Launch WX GUI inspector"))
@@ -332,37 +332,37 @@
                 runtime.GetPLCObjectSingleton().StopPLC()
 
             def OnTaskBarChangeInterface(self, evt):
-                ip_addr = self.pyroserver.ip_addr
+                ip_addr = self.rpc_server.ip_addr
                 ip_addr = '' if ip_addr is None else ip_addr
                 dlg = ParamsEntryDialog(None, _("Enter the IP of the interface to bind"), defaultValue=ip_addr)
                 dlg.SetTests([(re.compile(r'\d{1,3}(?:\.\d{1,3}){3}$').match, _("IP is not valid!")),
                               (lambda x:len([x for x in x.split(".") if 0 <= int(x) <= 255]) == 4,
                                _("IP is not valid!"))])
                 if dlg.ShowModal() == wx.ID_OK:
-                    self.pyroserver.ip_addr = dlg.GetValue()
-                    self.pyroserver.Restart()
+                    self.rpc_server.ip_addr = dlg.GetValue()
+                    self.rpc_server.Restart()
 
             def OnTaskBarChangePort(self, evt):
-                dlg = ParamsEntryDialog(None, _("Enter a port number "), defaultValue=str(self.pyroserver.port))
+                dlg = ParamsEntryDialog(None, _("Enter a port number "), defaultValue=str(self.rpc_server.port))
                 dlg.SetTests([(str.isdigit, _("Port number must be an integer!")), (lambda port: 0 <= int(port) <= 65535, _("Port number must be 0 <= port <= 65535!"))])
                 if dlg.ShowModal() == wx.ID_OK:
-                    self.pyroserver.port = int(dlg.GetValue())
-                    self.pyroserver.Restart()
-
-            def OnTaskBarChangeWorkingDir(self, evt):
-                dlg = wx.DirDialog(None, _("Choose a working directory "), self.pyroserver.workdir, wx.DD_NEW_DIR_BUTTON)
-                if dlg.ShowModal() == wx.ID_OK:
-                    self.pyroserver.workdir = dlg.GetPath()
-                    self.pyroserver.Restart()
+                    self.rpc_server.port = int(dlg.GetValue())
+                    self.rpc_server.Restart()
+
+            # def OnTaskBarChangeWorkingDir(self, evt):
+            #     dlg = wx.DirDialog(None, _("Choose a working directory "), self.rpc_server.workdir, wx.DD_NEW_DIR_BUTTON)
+            #     if dlg.ShowModal() == wx.ID_OK:
+            #         self.rpc_server.workdir = dlg.GetPath()
+            #         self.rpc_server.Restart()
 
             def OnTaskBarChangeName(self, evt):
-                _servicename = self.pyroserver.servicename
+                _servicename = self.rpc_server.servicename
                 _servicename = '' if _servicename is None else _servicename
                 dlg = ParamsEntryDialog(None, _("Enter a name "), defaultValue=_servicename)
                 dlg.SetTests([(lambda name: len(name) != 0, _("Name must not be null!"))])
                 if dlg.ShowModal() == wx.ID_OK:
-                    self.pyroserver.servicename = dlg.GetValue()
-                    self.pyroserver.Restart()
+                    self.rpc_server.servicename = dlg.GetValue()
+                    self.rpc_server.Restart()
 
             def _LiveShellLocals(self):
                 return {"locals": runtime.GetPLCObjectSingleton().python_runtime_vars}
@@ -383,7 +383,7 @@
 
             def OnTaskBarQuit(self, evt):
                 if wx.Platform == '__WXMSW__':
-                    Thread(target=self.pyroserver.Quit).start()
+                    Thread(target=self.rpc_server.Quit).start()
                 self.RemoveIcon()
                 wx.CallAfter(wx.GetApp().ExitMainLoop)
 
@@ -513,10 +513,10 @@
 runtime.CreatePLCObjectSingleton(
     WorkingDir, argv, statuschange, evaluator, pyruntimevars)
 
-pyroserver = PyroServer(servicename, interface, port)
+rpc_server = RPCServer(servicename, interface, port)
 
 if havewx:
-    taskbar_instance = BeremizTaskBarIcon(pyroserver)
+    taskbar_instance = BeremizTaskBarIcon(rpc_server)
 
 if havetwisted:
     if webport is not None:
@@ -533,28 +533,28 @@
         except Exception:
             LogMessageAndException(_("WAMP client startup failed. "))
 
-pyro_thread = None
+rpc_server_thread = None
 
 def FirstWorkerJob():
     """
-    RPC through pyro/wamp/UI may lead to delegation to Worker,
+    RPC through rpc/wamp/UI may lead to delegation to Worker,
     then this function ensures that Worker is already
-    created when pyro starts
+    created when rpc starts
     """
-    global pyro_thread, pyroserver
-
-    pyro_thread_started = Lock()
-    pyro_thread_started.acquire()
-    pyro_thread = Thread(target=pyroserver.PyroLoop,
-                         kwargs=dict(when_ready=pyro_thread_started.release),
-                         name="PyroThread")
-
-    pyro_thread.start()
-
-    # Wait for pyro thread to be effective
-    pyro_thread_started.acquire()
-
-    pyroserver.PrintServerInfo()
+    global rpc_server_thread, rpc_server
+
+    rpc_thread_started = Lock()
+    rpc_thread_started.acquire()
+    rpc_server_thread = Thread(target=rpc_server.Loop,
+                         kwargs=dict(when_ready=rpc_thread_started.release),
+                         name="RPCThread")
+
+    rpc_server_thread.start()
+
+    # Wait for rpc thread to be effective
+    rpc_thread_started.acquire()
+
+    rpc_server.PrintServerInfo()
 
     # Beremiz IDE detects LOCAL:// runtime is ready by looking
     # for self.workdir in the daemon's stdout.
@@ -616,8 +616,8 @@
         pass
 
 
-pyroserver.Quit()
-pyro_thread.join()
+rpc_server.Quit()
+rpc_server_thread.join()
 
 plcobj = runtime.GetPLCObjectSingleton()
 try: