Don't ignore more possible updates on .receive_updates() (closes #117)

This commit is contained in:
Lonami Exo 2017-06-16 15:36:47 +02:00
parent c304ee903f
commit 2b85463ce6
2 changed files with 16 additions and 8 deletions

View File

@ -113,11 +113,13 @@ class MtProtoSender:
self._logger.info('Request result received')
self._logger.debug('receive() released the lock')
def receive_update(self, timeout=timedelta(seconds=5)):
"""Receives an update object and returns its result"""
def receive_updates(self, timeout=timedelta(seconds=5)):
"""Receives one or more update objects
and returns them as a list
"""
updates = []
self.receive(timeout=timeout, updates=updates)
return updates[0]
return updates
def cancel_receive(self):
"""Cancels any pending receive operation

View File

@ -798,14 +798,20 @@ class TelegramClient(TelegramBareClient):
self._logger.debug('Updates thread acquired the lock')
try:
self._updates_thread_receiving.set()
self._logger.debug('Trying to receive updates from the updates thread')
self._logger.debug(
'Trying to receive updates from the updates thread'
)
result = self.sender.receive_update(timeout=timeout)
updates = self.sender.receive_updates(timeout=timeout)
self._updates_thread_receiving.clear()
self._logger.info('Received update from the updates thread')
self._logger.info(
'Received {} update(s) from the updates thread'
.format(len(updates))
)
for update in updates:
for handler in self._update_handlers:
handler(result)
handler(update)
except ConnectionResetError:
self._logger.info('Server disconnected us. Reconnecting...')