Small listening fixes

- If an error is raised in fetch_sequence_id, don't swallow it!
This commit is contained in:
Mads Marquart
2020-02-05 13:50:01 +01:00
parent 9c03c1035b
commit ae2bb41509
2 changed files with 10 additions and 6 deletions

View File

@@ -111,7 +111,7 @@ from ._events import (
FriendRequest, FriendRequest,
Presence, Presence,
) )
from ._mqtt import Listener from ._listen import Listener
from ._client import Client from ._client import Client

View File

@@ -153,9 +153,7 @@ class Listener:
" events may have been lost" " events may have been lost"
) )
self._sync_token = None self._sync_token = None
self._sequence_id = fetch_sequence_id(self.session) self._sequence_id = None
self._messenger_queue_publish()
# TODO: Signal to the user that they should reload their data!
return False return False
log.error("MQTT error code %s received", error) log.error("MQTT error code %s received", error)
return False return False
@@ -312,7 +310,7 @@ class Listener:
>>> for event in listener.listen(): >>> for event in listener.listen():
... print(event) ... print(event)
""" """
if not self._sequence_id: if self._sequence_id is None:
self._sequence_id = fetch_sequence_id(self.session) self._sequence_id = fetch_sequence_id(self.session)
# Make sure we're connected # Make sure we're connected
@@ -326,6 +324,12 @@ class Listener:
while True: while True:
rc = self._mqtt.loop(timeout=1.0) rc = self._mqtt.loop(timeout=1.0)
# The sequence ID was reset in _handle_ms
# TODO: Signal to the user that they should reload their data!
if self._sequence_id is None:
self._sequence_id = fetch_sequence_id(self.session)
self._messenger_queue_publish()
# If disconnect() has been called # If disconnect() has been called
# Beware, internal API, may have to change this to something more stable! # Beware, internal API, may have to change this to something more stable!
if self._mqtt._state == paho.mqtt.client.mqtt_cs_disconnecting: if self._mqtt._state == paho.mqtt.client.mqtt_cs_disconnecting:
@@ -349,7 +353,7 @@ class Listener:
if self._tmp_events: if self._tmp_events:
yield from self._tmp_events yield from self._tmp_events
self._tmp_events = None self._tmp_events = []
def disconnect(self) -> None: def disconnect(self) -> None:
"""Disconnect the MQTT listener. """Disconnect the MQTT listener.