diff --git a/doc/picontrolserver.html b/doc/picontrolserver.html index f00c03f..62b049c 100644 --- a/doc/picontrolserver.html +++ b/doc/picontrolserver.html @@ -66,6 +66,9 @@ Methods check_connectedacl Prueft bei neuen ACLs bestehende Verbindungen. +disconnect_all +Close all device connection. + newlogfile Konfiguriert die FileHandler auf neue Logdatei. @@ -104,6 +107,12 @@ RevPiSlave.check_connectedacl check_connectedacl()

Prueft bei neuen ACLs bestehende Verbindungen. +

+

+RevPiSlave.disconnect_all

+disconnect_all() +

+Close all device connection.

RevPiSlave.newlogfile

diff --git a/eric-revpipyload.api b/eric-revpipyload.api index 2d43877..87afb45 100644 --- a/eric-revpipyload.api +++ b/eric-revpipyload.api @@ -33,6 +33,7 @@ mqttserver.__author__?9 mqttserver.__copyright__?9 mqttserver.__license__?9 picontrolserver.RevPiSlave.check_connectedacl?4() +picontrolserver.RevPiSlave.disconnect_all?4() picontrolserver.RevPiSlave.newlogfile?4() picontrolserver.RevPiSlave.run?4() picontrolserver.RevPiSlave.stop?4() diff --git a/revpipyload/picontrolserver.py b/revpipyload/picontrolserver.py index ee91af0..1a2caaa 100644 --- a/revpipyload/picontrolserver.py +++ b/revpipyload/picontrolserver.py @@ -70,6 +70,12 @@ class RevPiSlave(Thread): ) dev._acl = level + def disconnect_all(self): + """Close all device connection.""" + # Alle Threads beenden + for th in self._th_dev: + th.stop() + def newlogfile(self): """Konfiguriert die FileHandler auf neue Logdatei.""" pass @@ -80,6 +86,7 @@ class RevPiSlave(Thread): # Socket öffnen und konfigurieren bis Erfolg oder Ende self.so = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + self.so.settimeout(2) while not self._evt_exit.is_set(): try: self.so.bind((self._bindip, self._port)) @@ -97,9 +104,11 @@ class RevPiSlave(Thread): self.exitcode = -1 # Verbindung annehmen - proginit.logger.info("accept new connection for revpinetio") try: tup_sock = self.so.accept() + proginit.logger.info("accepted new connection for revpinetio") + except socket.timeout: + continue except Exception: if not self._evt_exit.is_set(): proginit.logger.exception("accept exception") diff --git a/revpipyload/revpipyload.py b/revpipyload/revpipyload.py index a6058a1..1966b34 100755 --- a/revpipyload/revpipyload.py +++ b/revpipyload/revpipyload.py @@ -750,8 +750,8 @@ class RevPiPyLoad(): if self.mqtt and self.th_plcmqtt is not None: self.th_plcmqtt.reload_revpimodio() - # ProcImgServer anhalten zum neu laden - self.stop_plcslave() + # Alle Verbindungen von ProcImgServer trennen + self.th_plcslave.disconnect_all() # XML Prozessabbildserver neu laden if self.xml_ps is not None: