diff --git a/briar_wrapper/models/socket_listener.py b/briar_wrapper/models/socket_listener.py index 8a4bacffd067f808c52ed8f64fa314278326574a..64ec519b51bf2768d89857f002fa7aa5de842833 100644 --- a/briar_wrapper/models/socket_listener.py +++ b/briar_wrapper/models/socket_listener.py @@ -16,19 +16,24 @@ class SocketListener(): # pylint: disable=too-few-public-methods def __init__(self, api): self._api = api - self._signals = list() + self._signals = dict() self._signals_lock = Lock() + self._highest_signal_id = -1 self._start_websocket_thread() def connect(self, event, callback): self._signals_lock.acquire() - # TODO: Signal ID should be stable after disconnects - signal_id = len(self._signals) - self._signals.append({ + signal_id = self._add_signal(event, callback) + self._signals_lock.release() + return signal_id + + def _add_signal(self, event, callback): + self._highest_signal_id += 1 + signal_id = self._highest_signal_id + self._signals[signal_id] = { "event": event, "callback": callback - }) - self._signals_lock.release() + } return signal_id def _start_websocket_thread(self):