mirror of
https://github.com/cadmium-im/zirconium-sharp.git
synced 2024-11-22 10:22:23 +00:00
Enable loading plugins on server startup
This commit is contained in:
parent
394f9ab908
commit
5be00542b8
@ -24,6 +24,8 @@ namespace Zirconium.Core
|
|||||||
Router = new Router(this);
|
Router = new Router(this);
|
||||||
HostModuleAPI = new HostModuleAPI(this, Router);
|
HostModuleAPI = new HostModuleAPI(this, Router);
|
||||||
AuthManager = new AuthManager(this);
|
AuthManager = new AuthManager(this);
|
||||||
|
ModuleManager = new ModuleManager(HostModuleAPI);
|
||||||
|
ModuleManager.LoadModules(config.PluginsDirPath, config.EnabledPlugins);
|
||||||
Log.Info("Zirconium is initialized successfully");
|
Log.Info("Zirconium is initialized successfully");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -23,8 +23,13 @@ namespace Zirconium.Core.Modules
|
|||||||
_moduleMutex = new Mutex();
|
_moduleMutex = new Mutex();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void LoadModules(string folderPath) {
|
public void LoadModules(string folderPath, string[] enabledModules)
|
||||||
|
{
|
||||||
var loaders = new List<PluginLoader>();
|
var loaders = new List<PluginLoader>();
|
||||||
|
if (folderPath == "") {
|
||||||
|
Logging.Log.Warning("Plugins folder path is not specified!");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
// create module loaders
|
// create module loaders
|
||||||
foreach (var dir in Directory.GetDirectories(folderPath))
|
foreach (var dir in Directory.GetDirectories(folderPath))
|
||||||
@ -33,18 +38,21 @@ namespace Zirconium.Core.Modules
|
|||||||
var pluginDll = Path.Combine(dir, dirName + ".dll");
|
var pluginDll = Path.Combine(dir, dirName + ".dll");
|
||||||
if (File.Exists(pluginDll))
|
if (File.Exists(pluginDll))
|
||||||
{
|
{
|
||||||
var loader = PluginLoader.CreateFromAssemblyFile(
|
if (enabledModules.Where(x => x == pluginDll).FirstOrDefault() != null)
|
||||||
pluginDll,
|
{
|
||||||
sharedTypes: new[] {
|
var loader = PluginLoader.CreateFromAssemblyFile(
|
||||||
typeof(IModuleAPI),
|
pluginDll,
|
||||||
typeof(IHostModuleAPI),
|
sharedTypes: new[] {
|
||||||
typeof(IC2SMessageHandler),
|
typeof(IModuleAPI),
|
||||||
typeof(ICoreEventHandler),
|
typeof(IHostModuleAPI),
|
||||||
typeof(BaseMessage),
|
typeof(IC2SMessageHandler),
|
||||||
typeof(CoreEvent)
|
typeof(ICoreEventHandler),
|
||||||
}
|
typeof(BaseMessage),
|
||||||
);
|
typeof(CoreEvent)
|
||||||
loaders.Add(loader);
|
}
|
||||||
|
);
|
||||||
|
loaders.Add(loader);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user