mirror of
https://github.com/chatmail/core.git
synced 2026-04-23 08:26:30 +03:00
address link2xt feedback
This commit is contained in:
@@ -20,6 +20,10 @@ class JsonRpcError(Exception):
|
||||
"""JSON-RPC error."""
|
||||
|
||||
|
||||
class RpcShutdownError(JsonRpcError):
|
||||
"""Raised in RPC methods if the connection to server is closing."""
|
||||
|
||||
|
||||
class RpcMethod:
|
||||
"""RPC method."""
|
||||
|
||||
@@ -47,8 +51,8 @@ class RpcMethod:
|
||||
def rpc_future():
|
||||
"""Wait for the request to receive a result."""
|
||||
response = queue.get()
|
||||
if response is RpcShutdownError:
|
||||
raise RpcShutdownError(f"no response for {request_id}/{self.name} but rpc is shutting down")
|
||||
if response is None:
|
||||
raise RpcShutdownError(f"no response for {request_id}/{self.name} while rpc is shutting down")
|
||||
if "error" in response:
|
||||
raise JsonRpcError(response["error"])
|
||||
return response.get("result", None)
|
||||
@@ -56,10 +60,6 @@ class RpcMethod:
|
||||
return rpc_future
|
||||
|
||||
|
||||
class RpcShutdownError(Exception):
|
||||
"""Raised in RPC methods if the connection to server is closing."""
|
||||
|
||||
|
||||
class BaseRpc:
|
||||
"""Base Rpc class which requires 'connect_to_server' and 'disconnect_from_server' methods
|
||||
from subclasses to work concretely."""
|
||||
@@ -124,7 +124,7 @@ class BaseRpc:
|
||||
|
||||
# terminate pending rpc requests because no responses can arrive anymore
|
||||
for queue in self.request_results.values():
|
||||
queue.put(RpcShutdownError)
|
||||
queue.put(None)
|
||||
|
||||
def writer_loop(self) -> None:
|
||||
"""Writer loop ensuring only a single thread writes requests."""
|
||||
|
||||
Reference in New Issue
Block a user