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,
Presence,
)
from ._mqtt import Listener
from ._listen import Listener
from ._client import Client

View File

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