mirror of
https://github.com/naruxde/revpimodio2.git
synced 2025-11-08 13:53:53 +01:00
Disconnect bei veränderter replace_ios Datei nur, wenn diese angefordert wrude
This commit is contained in:
@@ -211,13 +211,16 @@ Static Methods</h3>
|
||||
<a NAME="NetFH.__init__" ID="NetFH.__init__"></a>
|
||||
<h3 style="background-color:#FFFFFF;color:#FF0000">
|
||||
NetFH (Constructor)</h3>
|
||||
<b>NetFH</b>(<i>address, timeout=500</i>)
|
||||
<b>NetFH</b>(<i>address, check_replace_ios, timeout=500</i>)
|
||||
<p>
|
||||
Init NetFH-class.
|
||||
</p><dl>
|
||||
<dt><i>address</i></dt>
|
||||
<dd>
|
||||
IP Adresse, Port des RevPi als <class 'tuple'>
|
||||
</dd><dt><i>check_replace_ios</i></dt>
|
||||
<dd>
|
||||
Prueft auf veraenderungen der Datei
|
||||
</dd><dt><i>timeout</i></dt>
|
||||
<dd>
|
||||
Timeout in Millisekunden der Verbindung
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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 <class 'tuple'>
|
||||
@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 <class 'dict'>.
|
||||
@return <class 'dict'> 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"))
|
||||
|
||||
Reference in New Issue
Block a user