From 91abff7811c6db3a80c9426c0c9a0a247a3ada37 Mon Sep 17 00:00:00 2001 From: Lukas Senionis Date: Tue, 14 Jul 2026 05:02:13 +0300 Subject: fix(wsrouter): ensure no message reply is lost (#906) --- backend/decky_loader/plugin/messages.py | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) (limited to 'backend/decky_loader/plugin/messages.py') diff --git a/backend/decky_loader/plugin/messages.py b/backend/decky_loader/plugin/messages.py index d53efbee..8e9bdf7a 100644 --- a/backend/decky_loader/plugin/messages.py +++ b/backend/decky_loader/plugin/messages.py @@ -19,18 +19,27 @@ class MethodCallResponse: self.success = success self.result = result +class PluginStopped(Exception): + pass + class MethodCallRequest: def __init__(self) -> None: self.id = str(uuid4()) self.event = Event() - self.response: MethodCallResponse + self.response: MethodCallResponse | PluginStopped def set_result(self, dc: SocketResponseDict): self.response = MethodCallResponse(dc["success"], dc["res"]) self.event.set() + + def cancel(self): + self.response = PluginStopped("Plugin has been stopped") + self.event.set() async def wait_for_result(self): await self.event.wait() + if isinstance(self.response, PluginStopped): + raise self.response if not self.response.success: raise Exception(self.response.result) return self.response.result \ No newline at end of file -- cgit v1.2.3