summaryrefslogtreecommitdiff
path: root/backend/decky_loader/plugin/messages.py
diff options
context:
space:
mode:
authorLukas Senionis <warliukz@gmail.com>2026-07-14 05:02:13 +0300
committerGitHub <noreply@github.com>2026-07-13 22:02:13 -0400
commit91abff7811c6db3a80c9426c0c9a0a247a3ada37 (patch)
treeee5f4899214d6b1f618764f151385761421a8829 /backend/decky_loader/plugin/messages.py
parent69475d9a0fbd4cb4a4e1fb257dff13385f2827a7 (diff)
downloaddecky-loader-91abff7811c6db3a80c9426c0c9a0a247a3ada37.tar.gz
decky-loader-91abff7811c6db3a80c9426c0c9a0a247a3ada37.zip
fix(wsrouter): ensure no message reply is lost (#906)
Diffstat (limited to 'backend/decky_loader/plugin/messages.py')
-rw-r--r--backend/decky_loader/plugin/messages.py11
1 files changed, 10 insertions, 1 deletions
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