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