Refactor Request class equality check and optimize request removal in Sender class

This commit is contained in:
Jahongir Qurbonov 2025-06-01 20:00:42 +05:00
parent 1c2aafce2a
commit d590271ebd
No known key found for this signature in database
GPG Key ID: 256976CED13D5F2D

View File

@ -158,9 +158,6 @@ class Request(Generic[Return]):
state: RequestState
result: Future[Return]
def __eq__(self, value: object) -> bool:
return self is value
@dataclass
class Sender:
@ -441,17 +438,19 @@ class Sender:
)
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:
raise RuntimeError("got response for unsent request")
elif isinstance(req.state, Sent) and req.state.msg_id == msg_id:
self._requests.remove(req)
del self._requests[i]
return req
return None
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 (
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 (
req.state.msg_id == msg_id or req.state.container_msg_id == msg_id
):
self._requests.remove(req)
yield req
yield self._requests.pop(i)
@property
def auth_key(self) -> Optional[bytes]: