mirror of
https://github.com/SteamDeckHomebrew/decky-loader.git
synced 2026-07-11 20:01:57 +00:00
fix emit_message mechanism
This commit is contained in:
@@ -22,6 +22,10 @@ from .plugin.plugin import PluginWrapper
|
|||||||
Plugins = dict[str, PluginWrapper]
|
Plugins = dict[str, PluginWrapper]
|
||||||
ReloadQueue = Queue[Tuple[str, str, bool | None] | Tuple[str, str]]
|
ReloadQueue = Queue[Tuple[str, str, bool | None] | Tuple[str, str]]
|
||||||
|
|
||||||
|
#TODO: Remove placeholder method
|
||||||
|
async def log_plugin_emitted_message(message: Any):
|
||||||
|
getLogger().debug(f"EMITTED MESSAGE: " + str(message))
|
||||||
|
|
||||||
class FileChangeHandler(RegexMatchingEventHandler):
|
class FileChangeHandler(RegexMatchingEventHandler):
|
||||||
def __init__(self, queue: ReloadQueue, plugin_path: str) -> None:
|
def __init__(self, queue: ReloadQueue, plugin_path: str) -> None:
|
||||||
super().__init__(regexes=[r'^.*?dist\/index\.js$', r'^.*?main\.py$']) # type: ignore
|
super().__init__(regexes=[r'^.*?dist\/index\.js$', r'^.*?main\.py$']) # type: ignore
|
||||||
@@ -143,6 +147,7 @@ class Loader:
|
|||||||
if plugin.passive:
|
if plugin.passive:
|
||||||
self.logger.info(f"Plugin {plugin.name} is passive")
|
self.logger.info(f"Plugin {plugin.name} is passive")
|
||||||
self.plugins[plugin.name] = plugin.start()
|
self.plugins[plugin.name] = plugin.start()
|
||||||
|
self.plugins[plugin.name].set_emitted_message_callback(log_plugin_emitted_message)
|
||||||
self.logger.info(f"Loaded {plugin.name}")
|
self.logger.info(f"Loaded {plugin.name}")
|
||||||
if not batch:
|
if not batch:
|
||||||
self.loop.create_task(self.dispatch_plugin(plugin.name, plugin.version))
|
self.loop.create_task(self.dispatch_plugin(plugin.name, plugin.version))
|
||||||
|
|||||||
@@ -18,6 +18,7 @@ class UnixSocket:
|
|||||||
self.socket = None
|
self.socket = None
|
||||||
self.reader = None
|
self.reader = None
|
||||||
self.writer = None
|
self.writer = None
|
||||||
|
self.server_writer = None
|
||||||
|
|
||||||
async def setup_server(self):
|
async def setup_server(self):
|
||||||
self.socket = await asyncio.start_unix_server(self._listen_for_method_call, path=self.socket_addr, limit=BUFFER_LIMIT)
|
self.socket = await asyncio.start_unix_server(self._listen_for_method_call, path=self.socket_addr, limit=BUFFER_LIMIT)
|
||||||
@@ -91,7 +92,13 @@ class UnixSocket:
|
|||||||
writer.write(message.encode("utf-8"))
|
writer.write(message.encode("utf-8"))
|
||||||
await writer.drain()
|
await writer.drain()
|
||||||
|
|
||||||
|
async def write_single_line_server(self, message: str):
|
||||||
|
if self.server_writer is None:
|
||||||
|
return
|
||||||
|
await self._write_single_line(self.server_writer, message)
|
||||||
|
|
||||||
async def _listen_for_method_call(self, reader: asyncio.StreamReader, writer: asyncio.StreamWriter):
|
async def _listen_for_method_call(self, reader: asyncio.StreamReader, writer: asyncio.StreamWriter):
|
||||||
|
self.server_writer = writer
|
||||||
while True:
|
while True:
|
||||||
|
|
||||||
def _(task: asyncio.Task[str|None]):
|
def _(task: asyncio.Task[str|None]):
|
||||||
|
|||||||
@@ -50,7 +50,7 @@ class PluginWrapper:
|
|||||||
res = loads(line)
|
res = loads(line)
|
||||||
if res["id"] == "0":
|
if res["id"] == "0":
|
||||||
create_task(self.emitted_message_callback(res["payload"]))
|
create_task(self.emitted_message_callback(res["payload"]))
|
||||||
return
|
else:
|
||||||
self._method_call_requests.pop(res["id"]).set_result(res)
|
self._method_call_requests.pop(res["id"]).set_result(res)
|
||||||
except:
|
except:
|
||||||
pass
|
pass
|
||||||
|
|||||||
@@ -127,7 +127,7 @@ class SandboxedPlugin:
|
|||||||
return dumps(d, ensure_ascii=False)
|
return dumps(d, ensure_ascii=False)
|
||||||
|
|
||||||
async def emit_message(self, message: Dict[Any, Any]):
|
async def emit_message(self, message: Dict[Any, Any]):
|
||||||
await self._socket.write_single_line(dumps({
|
await self._socket.write_single_line_server(dumps({
|
||||||
"id": "0",
|
"id": "0",
|
||||||
"payload": message
|
"payload": message
|
||||||
}))
|
}))
|
||||||
Reference in New Issue
Block a user