Skip to content

Commit d83dbb5

Browse files
christiansandberghardbyte
authored andcommitted
Store exception from Notifier thread
1 parent 63bc80a commit d83dbb5

1 file changed

Lines changed: 14 additions & 12 deletions

File tree

can/notifier.py

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,4 @@
11
import threading
2-
try:
3-
import queue
4-
except ImportError:
5-
import Queue as queue
62

73

84
class Notifier(object):
@@ -18,6 +14,8 @@ def __init__(self, bus, listeners, timeout=None):
1814
self.listeners = listeners
1915
self.bus = bus
2016
self.timeout = timeout
17+
#: Exception raised in thread
18+
self.exception = None
2119

2220
self.running = threading.Event()
2321
self.running.set()
@@ -35,11 +33,15 @@ def stop(self):
3533
self._reader.join(self.timeout + 0.1)
3634

3735
def rx_thread(self):
38-
while self.running.is_set():
39-
msg = self.bus.recv(self.timeout)
40-
if msg is not None:
41-
for callback in self.listeners:
42-
callback(msg)
43-
44-
for listener in self.listeners:
45-
listener.stop()
36+
try:
37+
while self.running.is_set():
38+
msg = self.bus.recv(self.timeout)
39+
if msg is not None:
40+
for callback in self.listeners:
41+
callback(msg)
42+
except Exception as exc:
43+
self.exception = exc
44+
raise
45+
finally:
46+
for listener in self.listeners:
47+
listener.stop()

0 commit comments

Comments
 (0)