Abstract the send queue off MTProtoSender

This commit is contained in:
Lonami Exo
2018-09-29 13:29:44 +02:00
parent b02ebcb69b
commit 105bd52eee
3 changed files with 53 additions and 28 deletions

View File

@@ -21,6 +21,7 @@ class Connection(abc.ABC):
self._writer = None
self._disconnected = asyncio.Event(loop=loop)
self._disconnected.set()
self._disconnected_future = None
self._send_task = None
self._recv_task = None
self._send_queue = asyncio.Queue(1)
@@ -34,6 +35,7 @@ class Connection(abc.ABC):
self._ip, self._port, loop=self._loop)
self._disconnected.clear()
self._disconnected_future = None
self._send_task = self._loop.create_task(self._send_loop())
self._recv_task = self._loop.create_task(self._recv_loop())
@@ -46,6 +48,13 @@ class Connection(abc.ABC):
self._recv_task.cancel()
self._writer.close()
@property
def disconnected(self):
if not self._disconnected_future:
self._disconnected_future = asyncio.ensure_future(
self._disconnected.wait(), loop=self._loop)
return self._disconnected_future
def clone(self):
"""
Creates a clone of the connection.