Bei Änderung von replace_ios nur Clients trennen, die Hashwert anforderten

This commit is contained in:
2019-08-19 18:09:27 +02:00
parent 6372188205
commit 5542f5d63b
4 changed files with 32 additions and 5 deletions

View File

@@ -69,6 +69,9 @@ Methods</h3>
<td><a style="color:#0000FF" href="#RevPiSlave.disconnect_all">disconnect_all</a></td>
<td>Close all device connection.</td>
</tr><tr>
<td><a style="color:#0000FF" href="#RevPiSlave.disconnect_replace_ios">disconnect_replace_ios</a></td>
<td>Close all device with loaded replace_ios file.</td>
</tr><tr>
<td><a style="color:#0000FF" href="#RevPiSlave.newlogfile">newlogfile</a></td>
<td>Konfiguriert die FileHandler auf neue Logdatei.</td>
</tr><tr>
@@ -113,6 +116,12 @@ RevPiSlave.disconnect_all</h3>
<b>disconnect_all</b>(<i></i>)
<p>
Close all device connection.
</p><a NAME="RevPiSlave.disconnect_replace_ios" ID="RevPiSlave.disconnect_replace_ios"></a>
<h3 style="background-color:#FFFFFF;color:#FF0000">
RevPiSlave.disconnect_replace_ios</h3>
<b>disconnect_replace_ios</b>(<i></i>)
<p>
Close all device with loaded replace_ios file.
</p><a NAME="RevPiSlave.newlogfile" ID="RevPiSlave.newlogfile"></a>
<h3 style="background-color:#FFFFFF;color:#FF0000">
RevPiSlave.newlogfile</h3>

View File

@@ -34,6 +34,7 @@ mqttserver.__copyright__?9
mqttserver.__license__?9
picontrolserver.RevPiSlave.check_connectedacl?4()
picontrolserver.RevPiSlave.disconnect_all?4()
picontrolserver.RevPiSlave.disconnect_replace_ios?4()
picontrolserver.RevPiSlave.newlogfile?4()
picontrolserver.RevPiSlave.run?4()
picontrolserver.RevPiSlave.stop?4()

View File

@@ -76,6 +76,13 @@ class RevPiSlave(Thread):
for th in self._th_dev:
th.stop()
def disconnect_replace_ios(self):
"""Close all device with loaded replace_ios file."""
# Alle Threads beenden die Replace_IOs emfpangen haben
for th in self._th_dev:
if th.got_replace_ios:
th.stop()
def newlogfile(self):
"""Konfiguriert die FileHandler auf neue Logdatei."""
pass
@@ -183,6 +190,7 @@ class RevPiSlaveDev(Thread):
self._deadtime = None
self._devcon, self._addr = devcon
self._evt_exit = Event()
self.got_replace_ios = False
self._writeerror = False
# Sicherheitsbytes
@@ -415,7 +423,7 @@ class RevPiSlaveDev(Thread):
continue
elif cmd == b'RP':
# piCtory Konfiguration senden
# Replace_IOs Konfiguration senden
proginit.logger.debug(
"transfair replace_io configuration: {0}"
"".format(proginit.pargs.configrsc)
@@ -439,6 +447,8 @@ class RevPiSlaveDev(Thread):
elif cmd == b'RH':
# Replace_IOs md5 Hashwert senden (16 Byte)
self.got_replace_ios = True
replace_ios = proginit.conf["DEFAULT"].get("replace_ios", "")
try:
if replace_ios:

View File

@@ -28,7 +28,7 @@ begrenzt werden!
__author__ = "Sven Sager"
__copyright__ = "Copyright (C) 2018 Sven Sager"
__license__ = "GPLv3"
__version__ = "0.7.6"
__version__ = "0.8.0"
import gzip
import logsystem
import picontrolserver
@@ -739,10 +739,20 @@ class RevPiPyLoad():
# Dateiveränderungen prüfen mit beiden Funktionen!
if self.check_pictory_changed():
file_changed = True
# Alle Verbindungen von ProcImgServer trennen
self.th_plcslave.disconnect_all()
proginit.logger.warning("piCtory configuration was changed")
if self.check_replace_ios_changed():
if not file_changed:
# Verbindungen von ProcImgServer trennen mit replace_ios
self.th_plcslave.disconnect_replace_ios()
file_changed = True
proginit.logger.warning("replace ios file was changed")
if file_changed:
# Auf Dateiveränderung reagieren
@@ -750,9 +760,6 @@ class RevPiPyLoad():
if self.mqtt and self.th_plcmqtt is not None:
self.th_plcmqtt.reload_revpimodio()
# Alle Verbindungen von ProcImgServer trennen
self.th_plcslave.disconnect_all()
# XML Prozessabbildserver neu laden
if self.xml_ps is not None:
self.xml_psstop()