mirror of
https://github.com/LonamiWebs/Telethon.git
synced 2025-06-18 11:06:39 +00:00
Refactor Request class equality check and optimize request removal in Sender class
This commit is contained in:
parent
1c2aafce2a
commit
d590271ebd
@ -158,9 +158,6 @@ class Request(Generic[Return]):
|
|||||||
state: RequestState
|
state: RequestState
|
||||||
result: Future[Return]
|
result: Future[Return]
|
||||||
|
|
||||||
def __eq__(self, value: object) -> bool:
|
|
||||||
return self is value
|
|
||||||
|
|
||||||
|
|
||||||
@dataclass
|
@dataclass
|
||||||
class Sender:
|
class Sender:
|
||||||
@ -441,17 +438,19 @@ class Sender:
|
|||||||
)
|
)
|
||||||
|
|
||||||
def _pop_request(self, msg_id: MsgId) -> Optional[Request[object]]:
|
def _pop_request(self, msg_id: MsgId) -> Optional[Request[object]]:
|
||||||
for req in self._requests:
|
for i, req in enumerate(self._requests):
|
||||||
if isinstance(req.state, Serialized) and req.state.msg_id == msg_id:
|
if isinstance(req.state, Serialized) and req.state.msg_id == msg_id:
|
||||||
raise RuntimeError("got response for unsent request")
|
raise RuntimeError("got response for unsent request")
|
||||||
elif isinstance(req.state, Sent) and req.state.msg_id == msg_id:
|
elif isinstance(req.state, Sent) and req.state.msg_id == msg_id:
|
||||||
self._requests.remove(req)
|
del self._requests[i]
|
||||||
return req
|
return req
|
||||||
|
|
||||||
return None
|
return None
|
||||||
|
|
||||||
def _drain_requests(self, msg_id: MsgId) -> Iterator[Request[object]]:
|
def _drain_requests(self, msg_id: MsgId) -> Iterator[Request[object]]:
|
||||||
for req in self._requests:
|
for i in reversed(range(len(self._requests))):
|
||||||
|
req = self._requests[i]
|
||||||
|
|
||||||
if isinstance(req.state, Serialized) and (
|
if isinstance(req.state, Serialized) and (
|
||||||
req.state.msg_id == msg_id or req.state.container_msg_id == msg_id
|
req.state.msg_id == msg_id or req.state.container_msg_id == msg_id
|
||||||
):
|
):
|
||||||
@ -459,8 +458,7 @@ class Sender:
|
|||||||
elif isinstance(req.state, Sent) and (
|
elif isinstance(req.state, Sent) and (
|
||||||
req.state.msg_id == msg_id or req.state.container_msg_id == msg_id
|
req.state.msg_id == msg_id or req.state.container_msg_id == msg_id
|
||||||
):
|
):
|
||||||
self._requests.remove(req)
|
yield self._requests.pop(i)
|
||||||
yield req
|
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def auth_key(self) -> Optional[bytes]:
|
def auth_key(self) -> Optional[bytes]:
|
||||||
|
Loading…
Reference in New Issue
Block a user