Make creating a new sender cleaner

This commit is contained in:
Lonami Exo 2017-09-30 12:08:06 +02:00
parent 5da300ca84
commit 0a567fcd7c
3 changed files with 12 additions and 8 deletions

View File

@ -130,6 +130,13 @@ class Connection:
def close(self):
self.conn.close()
def clone(self):
"""Creates a copy of this Connection"""
return Connection(self.ip, self.port,
mode=self._mode,
proxy=self.conn.proxy,
timeout=self.conn.timeout)
# region Receive message implementations
def recv(self):

View File

@ -54,6 +54,10 @@ class MtProtoSender:
self._need_confirmation.clear()
self._clear_all_pending()
def clone(self):
"""Creates a copy of this MtProtoSender as a new connection"""
return MtProtoSender(self.session, self.connection.clone())
# region Send and receive
def send(self, *requests):

View File

@ -388,18 +388,11 @@ class TelegramBareClient:
raise ValueError('You can only invoke requests, not types!')
# Determine the sender to be used (main or a new connection)
# TODO Polish this so it's nicer
on_main_thread = threading.get_ident() == self._main_thread_ident
if on_main_thread or self._on_read_thread():
sender = self._sender
else:
conn = Connection(
self.session.server_address, self.session.port,
mode=self._sender.connection._mode,
proxy=self._sender.connection.conn.proxy,
timeout=self._sender.connection.get_timeout()
)
sender = MtProtoSender(self.session, conn)
sender = self._sender.clone()
sender.connect()
# We should call receive from this thread if there's no background