diff --git a/src/revpi_middleware/daemon.py b/src/revpi_middleware/daemon.py index b05cb03..94c5bf7 100644 --- a/src/revpi_middleware/daemon.py +++ b/src/revpi_middleware/daemon.py @@ -6,7 +6,7 @@ from logging import getLogger from threading import Event from time import perf_counter -from typing import Union +from typing import Union, List from dbus import SystemBus, SessionBus @@ -65,17 +65,23 @@ class MiddlewareDaemon: log.debug("leave MiddlewareDaemon.dbus_start") - def dbus_stop(self): + def dbus_stop(self, bus_filter: List[object] = None): log.debug("enter MiddlewareDaemon.dbus_stop") - if self.bp_middleware1: + if bus_filter is None: + bus_filter = [ + self.bp_middleware1, + self.bp_ios1, + ] + + if self.bp_middleware1 and self.bp_middleware1 in bus_filter: self.bp_middleware1.stop() self.bp_middleware1.join(timeout=10.0) if self.bp_middleware1.is_alive(): log.warning("dbus middleware1 provider thread is still alive") self.bp_middleware1.bus.con.close() - if self.bp_ios1: + if self.bp_ios1 and self.bp_ios1 in bus_filter: self.bp_ios1.stop() self.bp_ios1.join(timeout=10.0) if self.bp_ios1.is_alive():