mirror of
https://github.com/kuitoi/kuitoi-Server.git
synced 2025-08-17 16:25:36 +00:00
Lau plugins now run in thread;
Remove unused event; Add event from to Lua;
This commit is contained in:
parent
2992c9cbab
commit
b3dffe74ec
@ -267,7 +267,7 @@ class Core:
|
|||||||
t = asyncio.wait(tasks, return_when=asyncio.FIRST_EXCEPTION)
|
t = asyncio.wait(tasks, return_when=asyncio.FIRST_EXCEPTION)
|
||||||
|
|
||||||
await ev.call_async_event("_plugins_start")
|
await ev.call_async_event("_plugins_start")
|
||||||
await ev.call_async_event("_lua_plugins_start")
|
# await ev.call_async_event("_lua_plugins_start")
|
||||||
|
|
||||||
self.run = True
|
self.run = True
|
||||||
self.log.info(i18n.start)
|
self.log.info(i18n.start)
|
||||||
@ -289,10 +289,11 @@ class Core:
|
|||||||
asyncio.run(self.main())
|
asyncio.run(self.main())
|
||||||
|
|
||||||
async def stop(self):
|
async def stop(self):
|
||||||
|
ev.call_lua_event("onShutdown")
|
||||||
ev.call_event("onServerStopped")
|
ev.call_event("onServerStopped")
|
||||||
await ev.call_async_event("onServerStopped")
|
await ev.call_async_event("onServerStopped")
|
||||||
await ev.call_async_event("_plugins_unload")
|
await ev.call_async_event("_plugins_unload")
|
||||||
await ev.call_async_event("_lua_plugins_unload")
|
ev.call_event("_lua_plugins_unload")
|
||||||
self.run = False
|
self.run = False
|
||||||
self.log.info(i18n.stop)
|
self.log.info(i18n.stop)
|
||||||
if config.WebAPI["enabled"]:
|
if config.WebAPI["enabled"]:
|
||||||
|
@ -4,8 +4,8 @@ import os
|
|||||||
import platform
|
import platform
|
||||||
import random
|
import random
|
||||||
import shutil
|
import shutil
|
||||||
|
from threading import Thread
|
||||||
|
|
||||||
import lupa
|
|
||||||
from lupa.lua53 import LuaRuntime
|
from lupa.lua53 import LuaRuntime
|
||||||
|
|
||||||
from core import get_logger
|
from core import get_logger
|
||||||
@ -510,12 +510,11 @@ class LuaPluginsLoader:
|
|||||||
self.log = get_logger("LuaPluginsLoader")
|
self.log = get_logger("LuaPluginsLoader")
|
||||||
self.loaded_str = "Lua plugins: "
|
self.loaded_str = "Lua plugins: "
|
||||||
ev.register_event("_lua_plugins_get", lambda x: self.lua_plugins)
|
ev.register_event("_lua_plugins_get", lambda x: self.lua_plugins)
|
||||||
ev.register_event("_lua_plugins_start", self.start)
|
|
||||||
ev.register_event("_lua_plugins_unload", self.unload)
|
ev.register_event("_lua_plugins_unload", self.unload)
|
||||||
console.add_command("lua_plugins", lambda x: self.loaded_str[:-2])
|
console.add_command("lua_plugins", lambda x: self.loaded_str[:-2])
|
||||||
console.add_command("lua_pl", lambda x: self.loaded_str[:-2])
|
console.add_command("lua_pl", lambda x: self.loaded_str[:-2])
|
||||||
|
|
||||||
async def load(self):
|
def load(self):
|
||||||
self.log.debug("Loading Lua plugins...")
|
self.log.debug("Loading Lua plugins...")
|
||||||
py_folders = ev.call_event("_plugins_get")[0]
|
py_folders = ev.call_event("_plugins_get")[0]
|
||||||
for obj in os.listdir(self.plugins_dir):
|
for obj in os.listdir(self.plugins_dir):
|
||||||
@ -544,16 +543,14 @@ class LuaPluginsLoader:
|
|||||||
with open(os.path.join(path, "main.lua"), 'r', encoding=config.enc) as f:
|
with open(os.path.join(path, "main.lua"), 'r', encoding=config.enc) as f:
|
||||||
code += f.read()
|
code += f.read()
|
||||||
try:
|
try:
|
||||||
lua.execute(code)
|
th = Thread(target=lua.execute, args=(code,), name=f"lua_plugin_{obj}-Thread")
|
||||||
|
th.start()
|
||||||
self.loaded_str += f"{obj}:ok, "
|
self.loaded_str += f"{obj}:ok, "
|
||||||
self.lua_plugins.update({obj: {"mp": mp, "lua": lua}})
|
self.lua_plugins.update({obj: {"mp": mp, "lua": lua, "thread": th}})
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
self.log.error(f"Cannot load lua plugin from `{obj}/main.lua`")
|
self.log.error(f"Cannot load lua plugin from `{obj}/main.lua`")
|
||||||
self.log.exception(e)
|
self.log.exception(e)
|
||||||
self.loaded_str += f"{obj}:no, "
|
self.loaded_str += f"{obj}:no, "
|
||||||
|
|
||||||
async def start(self, _):
|
def unload(self, _):
|
||||||
...
|
|
||||||
|
|
||||||
async def unload(self, _):
|
|
||||||
...
|
...
|
||||||
|
Loading…
x
Reference in New Issue
Block a user