From 26af2ef18b5c87b48be64e858a8296b3a5441c92 Mon Sep 17 00:00:00 2001 From: Bastian Schroll Date: Sun, 23 Sep 2018 21:27:40 +0200 Subject: [PATCH] fix in runningState management --- boswatch/network/broadcast.py | 18 ++++++++++-------- bw_server.py | 4 ++++ 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/boswatch/network/broadcast.py b/boswatch/network/broadcast.py index b842008..27ab130 100644 --- a/boswatch/network/broadcast.py +++ b/boswatch/network/broadcast.py @@ -71,7 +71,6 @@ class BroadcastClient: sendPackages += 1 except: logging.exception("error on getting connection info") - return False @@ -99,7 +98,7 @@ class BroadcastServer: self._socket.settimeout(2) self._socket.bind(('', listenPort)) self._serverThread = None - self._serverIsRunning = False + self._serverShutdown = False self._servePort = servePort def start(self): @@ -107,12 +106,12 @@ class BroadcastServer: @return True or False""" try: - if not self._serverIsRunning: + if not self._serverThread: logging.debug("start udp broadcast server") self._serverThread = threading.Thread(target=self._listen) self._serverThread.name = "BroadServ" self._serverThread.daemon = True - self._serverIsRunning = True + self._serverShutdown = False self._serverThread.start() return True else: @@ -131,9 +130,9 @@ class BroadcastServer: @return True or False""" try: - if not self._serverIsRunning: + if self._serverThread: logging.debug("stop udp broadcast server") - self._serverIsRunning = False + self._serverShutdown = True return True else: logging.warning("udp broadcast server always stopped") @@ -151,7 +150,7 @@ class BroadcastServer: - listen for the magic packet - send connection info in an macig packet""" logging.debug("start listening for magic") - while self._serverIsRunning: + while not self._serverShutdown: try: payload, address = self._socket.recvfrom(1024) payload = str(payload, "UTF-8") @@ -163,9 +162,12 @@ class BroadcastServer: continue # timeout is accepted (not block at recvfrom()) except: logging.exception("error while listening for clients") + self._serverThread = None logging.debug("udp broadcast server stopped") @property def isRunning(self): """!Property of broadcast server running state""" - return self._serverIsRunning + if self._serverThread: + return True + return False diff --git a/bw_server.py b/bw_server.py index bc0eed5..4eee08d 100644 --- a/bw_server.py +++ b/bw_server.py @@ -63,9 +63,13 @@ except Exception as e: # pragma: no cover server = BroadcastServer() client = BroadcastClient() server.start() +print(server.isRunning) client.getConnInfo() print(client.serverIP, client.serverPort) server.stop() +print(server.isRunning) +time.sleep(2) +print(server.isRunning) try: header.logoToLog()