# HG changeset patch # User Edouard Tisserant # Date 1545396221 -3600 # Node ID 1881d0ff5ae2a89b9f072a512b8671cb0fc0f550 # Parent 39ba6a125a97978a2cd33f2651a3b6a0455a067f PyroServer: fixed naming of class, and reorganized methods in order to ease subclassing, in case of customization of service publication on the local network (i.e. zeroconf) diff -r 39ba6a125a97 -r 1881d0ff5ae2 Beremiz_service.py --- a/Beremiz_service.py Fri Dec 21 13:39:41 2018 +0100 +++ b/Beremiz_service.py Fri Dec 21 13:43:41 2018 +0100 @@ -37,7 +37,7 @@ from six.moves import builtins import runtime -from runtime.PyroServer import Server +from runtime.PyroServer import PyroServer from runtime.xenomai import TryPreloadXenomai from runtime import LogMessageAndException from runtime import PlcStatus @@ -504,7 +504,7 @@ runtime.CreatePLCObjectSingleton( WorkingDir, argv, statuschange, evaluator, pyruntimevars) -pyroserver = Server(servicename, interface, port) +pyroserver = PyroServer(servicename, interface, port) if havewx: taskbar_instance = BeremizTaskBarIcon(pyroserver) diff -r 39ba6a125a97 -r 1881d0ff5ae2 runtime/PyroServer.py --- a/runtime/PyroServer.py Fri Dec 21 13:39:41 2018 +0100 +++ b/runtime/PyroServer.py Fri Dec 21 13:43:41 2018 +0100 @@ -19,7 +19,7 @@ from runtime.ServicePublisher import ServicePublisher -class Server(object): +class PyroServer(object): def __init__(self, servicename, ip_addr, port): self.continueloop = True self.daemon = None @@ -41,6 +41,7 @@ sys.stdout.flush() def PyroLoop(self, when_ready): + if self._to_be_published(): self.Publish() while self.continueloop: Pyro.config.PYRO_MULTITHREADED = 0 pyro.initServer() @@ -56,23 +57,24 @@ self.daemon.connect(pyro_obj, "PLCObject") - if self._to_be_published(): - self.servicepublisher = ServicePublisher() - self.servicepublisher.RegisterService(self.servicename, self.ip_addr, self.port) - when_ready() self.daemon.requestLoop() self.daemon.sock.close() + self.Unpublish() def Restart(self): - self._stop() + self.daemon.shutdown(True) def Quit(self): self.continueloop = False - self._stop() + self.daemon.shutdown(True) - def _stop(self): + def Publish(self): + self.servicepublisher = ServicePublisher("PYRO") + self.servicepublisher.RegisterService(self.servicename, + self.ip_addr, self.port) + + def Unpublish(self): if self.servicepublisher is not None: self.servicepublisher.UnRegisterService() self.servicepublisher = None - self.daemon.shutdown(True)