summaryrefslogtreecommitdiff
path: root/backend/src/plugin/method_call_request.py
diff options
context:
space:
mode:
Diffstat (limited to 'backend/src/plugin/method_call_request.py')
-rw-r--r--backend/src/plugin/method_call_request.py29
1 files changed, 29 insertions, 0 deletions
diff --git a/backend/src/plugin/method_call_request.py b/backend/src/plugin/method_call_request.py
new file mode 100644
index 00000000..8d93a6cc
--- /dev/null
+++ b/backend/src/plugin/method_call_request.py
@@ -0,0 +1,29 @@
+from typing import Any, TypedDict
+from uuid import uuid4
+from asyncio import Event
+
+class SocketResponseDict(TypedDict):
+ id: str
+ success: bool
+ res: Any
+
+class MethodCallResponse:
+ def __init__(self, success: bool, result: Any) -> None:
+ self.success = success
+ self.result = result
+
+class MethodCallRequest:
+ def __init__(self) -> None:
+ self.id = str(uuid4())
+ self.event = Event()
+ self.response: MethodCallResponse
+
+ def set_result(self, dc: SocketResponseDict):
+ self.response = MethodCallResponse(dc["success"], dc["res"])
+ self.event.set()
+
+ async def wait_for_result(self):
+ await self.event.wait()
+ if not self.response.success:
+ raise Exception(self.response.result)
+ return self.response \ No newline at end of file