From 2d17e6f1fa9c7a16d6cb7d535047b20e80edd306 Mon Sep 17 00:00:00 2001 From: NaruX Date: Mon, 19 Aug 2019 18:10:42 +0200 Subject: [PATCH] =?UTF-8?q?Disconnect=20bei=20ver=C3=A4nderter=20replace?= =?UTF-8?q?=5Fios=20Datei=20nur,=20wenn=20diese=20angefordert=20wrude?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- doc/revpimodio2.netio.html | 5 ++++- eric-revpimodio2.api | 2 +- revpimodio2/netio.py | 36 +++++++++++++++++++++++------------- 3 files changed, 28 insertions(+), 15 deletions(-) diff --git a/doc/revpimodio2.netio.html b/doc/revpimodio2.netio.html index c8ed847..98bea51 100644 --- a/doc/revpimodio2.netio.html +++ b/doc/revpimodio2.netio.html @@ -211,13 +211,16 @@ Static Methods

NetFH (Constructor)

-NetFH(address, timeout=500) +NetFH(address, check_replace_ios, timeout=500)

Init NetFH-class.

address
IP Adresse, Port des RevPi als +
check_replace_ios
+
+Prueft auf veraenderungen der Datei
timeout
Timeout in Millisekunden der Verbindung diff --git a/eric-revpimodio2.api b/eric-revpimodio2.api index cff22a8..3d2c2e1 100644 --- a/eric-revpimodio2.api +++ b/eric-revpimodio2.api @@ -208,7 +208,7 @@ revpimodio2.netio.NetFH.set_timeout?4(value) revpimodio2.netio.NetFH.tell?4() revpimodio2.netio.NetFH.timeout?7 revpimodio2.netio.NetFH.write?4(bytebuff) -revpimodio2.netio.NetFH?1(address, timeout=500) +revpimodio2.netio.NetFH?1(address, check_replace_ios, timeout=500) revpimodio2.netio.RevPiNetIO._create_myfh?5() revpimodio2.netio.RevPiNetIO._get_cpreplaceio?5() revpimodio2.netio.RevPiNetIO.disconnect?4() diff --git a/revpimodio2/netio.py b/revpimodio2/netio.py index cadb30c..db500ce 100644 --- a/revpimodio2/netio.py +++ b/revpimodio2/netio.py @@ -54,20 +54,25 @@ class NetFH(Thread): """ - __slots__ = "__by_buff", "__int_buff", "__dictdirty", "__flusherr", \ - "__position", "__sockact", "__sockerr", "__sockend", "__socklock", \ - "__timeout", "__trigger", "__waitsync", \ - "_address", "_slavesock", \ - "daemon" + __slots__ = "__by_buff", "__check_replace_ios", "__config_changed", \ + "__int_buff", "__dictdirty", "__flusherr", "__replace_ios_h", \ + "__pictory_h", "__position", "__sockact", "__sockerr", "__sockend", \ + "__socklock", "__timeout", "__trigger", "__waitsync", "_address", \ + "_slavesock", "daemon" - def __init__(self, address, timeout=500): + def __init__(self, address, check_replace_ios, timeout=500): """Init NetFH-class. + @param address IP Adresse, Port des RevPi als - @param timeout Timeout in Millisekunden der Verbindung""" + @param check_replace_ios Prueft auf veraenderungen der Datei + @param timeout Timeout in Millisekunden der Verbindung + + """ super().__init__() self.daemon = True self.__by_buff = b'' + self.__check_replace_ios = check_replace_ios self.__config_changed = False self.__int_buff = 0 self.__dictdirty = {} @@ -148,14 +153,18 @@ class NetFH(Thread): so.connect(self._address) # Hashwerte anfordern - so.sendall(_syspictoryh + _sysreplaceioh) + recv_len = 16 + so.sendall(_syspictoryh) + if self.__check_replace_ios: + so.sendall(_sysreplaceioh) + recv_len += 16 # Hashwerte empfangen byte_buff = bytearray() zero_byte = 0 while not self.__sockend.is_set() and zero_byte < 100 \ - and len(byte_buff) < 32: - data = so.recv(32) + and len(byte_buff) < recv_len: + data = so.recv(recv_len) if data == b'': zero_byte += 1 byte_buff += data @@ -170,7 +179,8 @@ class NetFH(Thread): self.__pictory_h = byte_buff[:16] # Änderung an replace_ios prüfen - if self.__replace_ios_h and byte_buff[16:] != self.__replace_ios_h: + if self.__check_replace_ios and self.__replace_ios_h \ + and byte_buff[16:] != self.__replace_ios_h: self.__config_changed = True self.close() raise ConfigChanged( @@ -710,7 +720,7 @@ class RevPiNetIO(_RevPiModIO): """Erstellt NetworkFileObject. return FileObject""" self._buffedwrite = True - return NetFH(self._address) + return NetFH(self._address, self._replace_io_file == ":network:") def _get_cpreplaceio(self): """Laed die replace_io Konfiguration ueber das Netzwerk. @@ -748,7 +758,7 @@ class RevPiNetIO(_RevPiModIO): def get_jconfigrsc(self): """Laedt die piCotry Konfiguration und erstellt ein . @return der piCtory Konfiguration""" - mynh = NetFH(self._address) + mynh = NetFH(self._address, False) byte_buff = mynh.readpictory() mynh.close() return jloads(byte_buff.decode("utf-8"))