RevPiNetIO nur ._configure wenn nicht vererbt

Bugfix: prüfen auf self._myfh is not None statt hasattr
Socket in .close() beenden - nicht am Ende von .run() da als daemon=True
This commit is contained in:
2017-09-17 15:06:18 +02:00
parent f9685b6df6
commit 09b2859db0
5 changed files with 29 additions and 20 deletions

View File

@@ -25,7 +25,7 @@ __all__ = [
__author__ = "Sven Sager <akira@revpimodio.org>"
__name__ = "revpimodio2"
__package__ = "revpimodio2"
__version__ = "2.1.0"
__version__ = "2.1.1"
# Global package values
OFF = 0

View File

@@ -87,7 +87,7 @@ class RevPiModIO(object):
def __del__(self):
"""Zerstoert alle Klassen um aufzuraeumen."""
self.exit(full=True)
if hasattr(self, "_myfh"):
if self._myfh is not None:
self._myfh.close()
def __evt_exit(self, signum, sigframe):
@@ -116,7 +116,8 @@ class RevPiModIO(object):
if len(self._lst_devselect) > 0:
lst_found = []
if type(self) == RevPiModIODriver:
if type(self) == RevPiModIODriver \
or type(self) == RevPiNetIODriver:
_searchtype = "VIRTUAL"
else:
_searchtype = None
@@ -907,3 +908,7 @@ class RevPiModIODriver(RevPiModIOSelected):
super().__init__(
virtdev, autorefresh, False, syncoutputs, procimg, configrsc, True
)
# Nachträglicher Import
from .netio import RevPiNetIODriver

View File

@@ -128,6 +128,17 @@ class NetFH(Thread):
self.__sockend = True
self.__sockerr.set()
# Vom Socket sauber trennen
with self.__socklock:
try:
if self.__sockend:
self._slavesock.send(_sysexit)
else:
self._slavesock.shutdown(socket.SHUT_RDWR)
except:
pass
self._slavesock.close()
def flush(self):
"""Schreibpuffer senden."""
if self.__sockend:
@@ -247,17 +258,6 @@ class NetFH(Thread):
self.__trigger = False
# Vom Socket trennen
with self.__socklock:
try:
if self.__sockend:
self._slavesock.send(_sysexit)
else:
self._slavesock.shutdown(socket.SHUT_RDWR)
except:
pass
self._slavesock.close()
def seek(self, position):
"""Springt an angegebene Position.
@param position An diese Position springen"""
@@ -418,8 +418,9 @@ class RevPiNetIO(_RevPiModIO):
# Netzwerkfilehandler anlegen
self._myfh = self._create_myfh()
# Modul konfigurieren
self._configure(self.get_jconfigrsc())
# Nur Konfigurieren, wenn nicht vererbt
if type(self) == RevPiNetIO:
self._configure(self.get_jconfigrsc())
def _create_myfh(self):
"""Erstellt NetworkFileObject.