diff --git a/src/Zirconium/Core/App.cs b/src/Zirconium/Core/App.cs index 349f9c6..472f3c1 100644 --- a/src/Zirconium/Core/App.cs +++ b/src/Zirconium/Core/App.cs @@ -1,5 +1,5 @@ -using Zirconium.Core.Modules; -using Zirconium.Core.Modules.Interfaces; +using Zirconium.Core.Plugins; +using Zirconium.Core.Plugins.Interfaces; using Zirconium.Core.Logging; using WebSocketSharp.Server; @@ -10,8 +10,8 @@ namespace Zirconium.Core public Config Config; public SessionManager SessionManager { get; } public Router Router { get; } - public ModuleManager ModuleManager { get; } - public IHostModuleAPI HostModuleAPI { get; } + public PluginManager PluginManager { get; } + public IPluginHostAPI PluginHostAPI { get; } public AuthManager AuthManager { get; } private WebSocketServer _websocketServer; @@ -22,10 +22,10 @@ namespace Zirconium.Core _websocketServer.AddWebSocketService(config.Websocket.Endpoint, () => new ConnectionHandler(this)); SessionManager = new SessionManager(); Router = new Router(this); - HostModuleAPI = new HostModuleAPI(this, Router); + PluginHostAPI = new PluginHostAPI(this, Router); AuthManager = new AuthManager(this); - ModuleManager = new ModuleManager(HostModuleAPI); - ModuleManager.LoadModules(config.PluginsDirPath, config.EnabledPlugins); + PluginManager = new PluginManager(PluginHostAPI); + PluginManager.LoadPlugins(config.PluginsDirPath, config.EnabledPlugins); Log.Info("Zirconium is initialized successfully"); } diff --git a/src/Zirconium/Core/Modules/Interfaces/IModuleAPI.cs b/src/Zirconium/Core/Modules/Interfaces/IModuleAPI.cs deleted file mode 100644 index a9f456e..0000000 --- a/src/Zirconium/Core/Modules/Interfaces/IModuleAPI.cs +++ /dev/null @@ -1,8 +0,0 @@ -namespace Zirconium.Core.Modules.Interfaces -{ - public interface IModuleAPI - { - void Initialize(IHostModuleAPI hostModuleAPI); - string GetModuleUniqueName(); - } -} \ No newline at end of file diff --git a/src/Zirconium/Core/Modules/Interfaces/IC2SMessageHandler.cs b/src/Zirconium/Core/Plugins/Interfaces/IC2SMessageHandler.cs similarity index 86% rename from src/Zirconium/Core/Modules/Interfaces/IC2SMessageHandler.cs rename to src/Zirconium/Core/Plugins/Interfaces/IC2SMessageHandler.cs index b40f5f9..b4a99d3 100644 --- a/src/Zirconium/Core/Modules/Interfaces/IC2SMessageHandler.cs +++ b/src/Zirconium/Core/Plugins/Interfaces/IC2SMessageHandler.cs @@ -1,6 +1,6 @@ using Zirconium.Core.Models; -namespace Zirconium.Core.Modules.Interfaces +namespace Zirconium.Core.Plugins.Interfaces { public interface IC2SMessageHandler { string GetHandlingMessageType(); diff --git a/src/Zirconium/Core/Modules/Interfaces/ICoreEventHandler.cs b/src/Zirconium/Core/Plugins/Interfaces/ICoreEventHandler.cs similarity index 82% rename from src/Zirconium/Core/Modules/Interfaces/ICoreEventHandler.cs rename to src/Zirconium/Core/Plugins/Interfaces/ICoreEventHandler.cs index baaefcc..6aa1ef3 100644 --- a/src/Zirconium/Core/Modules/Interfaces/ICoreEventHandler.cs +++ b/src/Zirconium/Core/Plugins/Interfaces/ICoreEventHandler.cs @@ -1,6 +1,6 @@ using Zirconium.Core.Models; -namespace Zirconium.Core.Modules.Interfaces +namespace Zirconium.Core.Plugins.Interfaces { public interface ICoreEventHandler { diff --git a/src/Zirconium/Core/Plugins/Interfaces/IPluginAPI.cs b/src/Zirconium/Core/Plugins/Interfaces/IPluginAPI.cs new file mode 100644 index 0000000..932a7f6 --- /dev/null +++ b/src/Zirconium/Core/Plugins/Interfaces/IPluginAPI.cs @@ -0,0 +1,8 @@ +namespace Zirconium.Core.Plugins.Interfaces +{ + public interface IPluginAPI + { + void Initialize(IPluginHostAPI hostModuleAPI); + string GetPluginUniqueName(); + } +} \ No newline at end of file diff --git a/src/Zirconium/Core/Modules/Interfaces/IHostModuleAPI.cs b/src/Zirconium/Core/Plugins/Interfaces/IPluginHostAPI.cs similarity index 81% rename from src/Zirconium/Core/Modules/Interfaces/IHostModuleAPI.cs rename to src/Zirconium/Core/Plugins/Interfaces/IPluginHostAPI.cs index 7657582..d99402f 100644 --- a/src/Zirconium/Core/Modules/Interfaces/IHostModuleAPI.cs +++ b/src/Zirconium/Core/Plugins/Interfaces/IPluginHostAPI.cs @@ -1,8 +1,8 @@ using Zirconium.Core.Models; -namespace Zirconium.Core.Modules.Interfaces +namespace Zirconium.Core.Plugins.Interfaces { - public interface IHostModuleAPI + public interface IPluginHostAPI { void Hook(IC2SMessageHandler handler); void HookCoreEvent(ICoreEventHandler handler); @@ -13,7 +13,7 @@ namespace Zirconium.Core.Modules.Interfaces string[] GetServerDomains(); string GetServerID(); void SendMessage(ConnectionInfo connInfo, BaseMessage message); - dynamic GetSettings(IModuleAPI plugin); + dynamic GetSettings(IPluginAPI plugin); dynamic GetSettings(string pluginName); } } \ No newline at end of file diff --git a/src/Zirconium/Core/Modules/HostModuleAPI.cs b/src/Zirconium/Core/Plugins/PluginHostAPI.cs similarity index 87% rename from src/Zirconium/Core/Modules/HostModuleAPI.cs rename to src/Zirconium/Core/Plugins/PluginHostAPI.cs index a28baee..4d26ea2 100644 --- a/src/Zirconium/Core/Modules/HostModuleAPI.cs +++ b/src/Zirconium/Core/Plugins/PluginHostAPI.cs @@ -2,16 +2,16 @@ using System.Collections.Generic; using System; using Newtonsoft.Json; using Zirconium.Core.Models; -using Zirconium.Core.Modules.Interfaces; +using Zirconium.Core.Plugins.Interfaces; -namespace Zirconium.Core.Modules +namespace Zirconium.Core.Plugins { - public class HostModuleAPI : IHostModuleAPI + public class PluginHostAPI : IPluginHostAPI { private App _app; private Router _router; - public HostModuleAPI(App app, Router router) + public PluginHostAPI(App app, Router router) { _router = router; _app = app; @@ -37,9 +37,9 @@ namespace Zirconium.Core.Modules return _app.Config.ServerID; } - public dynamic GetSettings(IModuleAPI plugin) + public dynamic GetSettings(IPluginAPI plugin) { - return _app.Config.Plugins.GetValueOrDefault(plugin.GetModuleUniqueName(), null); + return _app.Config.Plugins.GetValueOrDefault(plugin.GetPluginUniqueName(), null); } public dynamic GetSettings(string pluginName) diff --git a/src/Zirconium/Core/Modules/ModuleManager.cs b/src/Zirconium/Core/Plugins/PluginManager.cs similarity index 63% rename from src/Zirconium/Core/Modules/ModuleManager.cs rename to src/Zirconium/Core/Plugins/PluginManager.cs index 2fd15ca..8ada71e 100644 --- a/src/Zirconium/Core/Modules/ModuleManager.cs +++ b/src/Zirconium/Core/Plugins/PluginManager.cs @@ -5,25 +5,25 @@ using System.Linq; using System.Threading; using McMaster.NETCore.Plugins; using Zirconium.Core.Models; -using Zirconium.Core.Modules.Interfaces; +using Zirconium.Core.Plugins.Interfaces; -namespace Zirconium.Core.Modules +namespace Zirconium.Core.Plugins { - // Class which responsible for module managing (loading, initializing) and module lifetime cycle - public class ModuleManager + // Class which responsible for plugin managing (loading, initializing) and plugin lifetime cycle + public class PluginManager { - private IList _modules; - private IHostModuleAPI _hostModuleAPI; - private Mutex _moduleMutex; + private IList _plugins; + private IPluginHostAPI _pluginHostAPI; + private Mutex _pluginsMutex; - public ModuleManager(IHostModuleAPI hostModuleAPI) + public PluginManager(IPluginHostAPI hostModuleAPI) { - _hostModuleAPI = hostModuleAPI; - _modules = new List(); - _moduleMutex = new Mutex(); + _pluginHostAPI = hostModuleAPI; + _plugins = new List(); + _pluginsMutex = new Mutex(); } - public void LoadModules(string folderPath, string[] enabledModules) + public void LoadPlugins(string folderPath, string[] enabledPlugins) { var loaders = new List(); if (folderPath == "") @@ -36,7 +36,7 @@ namespace Zirconium.Core.Modules foreach (var dir in Directory.GetDirectories(folderPath)) { var dirName = Path.GetFileName(dir); - if (enabledModules.Where(x => x == dirName).FirstOrDefault() == null) { + if (enabledPlugins.Where(x => x == dirName).FirstOrDefault() == null) { continue; } var pluginDll = Path.Combine(dir, dirName + ".dll"); @@ -47,8 +47,8 @@ namespace Zirconium.Core.Modules var loader = PluginLoader.CreateFromAssemblyFile( pluginDll, sharedTypes: new[] { - typeof(IModuleAPI), - typeof(IHostModuleAPI), + typeof(IPluginAPI), + typeof(IPluginHostAPI), typeof(IC2SMessageHandler), typeof(ICoreEventHandler), typeof(BaseMessage), @@ -65,13 +65,13 @@ namespace Zirconium.Core.Modules foreach (var pluginType in loader .LoadDefaultAssembly() .GetTypes() - .Where(t => typeof(IModuleAPI).IsAssignableFrom(t) && !t.IsAbstract)) + .Where(t => typeof(IPluginAPI).IsAssignableFrom(t) && !t.IsAbstract)) { // This assumes the implementation of IPlugin has a parameterless constructor - IModuleAPI module = (IModuleAPI)Activator.CreateInstance(pluginType); - Logging.Log.Debug($"Created module instance '{module.GetModuleUniqueName()}'."); - module.Initialize(_hostModuleAPI); - _modules.Add(module); + IPluginAPI plugin = (IPluginAPI)Activator.CreateInstance(pluginType); + Logging.Log.Debug($"Created plugin instance '{plugin.GetPluginUniqueName()}'."); + plugin.Initialize(_pluginHostAPI); + _plugins.Add(plugin); } } } diff --git a/src/Zirconium/Core/Router.cs b/src/Zirconium/Core/Router.cs index 53c4a5a..c5958fb 100644 --- a/src/Zirconium/Core/Router.cs +++ b/src/Zirconium/Core/Router.cs @@ -2,7 +2,7 @@ using System.Threading.Tasks; using System; using System.Collections.Generic; using Zirconium.Core.Models; -using Zirconium.Core.Modules.Interfaces; +using Zirconium.Core.Plugins.Interfaces; using Zirconium.Utils; using Zirconium.Core.Logging; using Newtonsoft.Json; diff --git a/src/ZirconiumPluginExamples/HelloWorldPlugin/HelloWorldPlugin.cs b/src/ZirconiumPluginExamples/HelloWorldPlugin/HelloWorldPlugin.cs index 1edc36a..0fbe7e7 100644 --- a/src/ZirconiumPluginExamples/HelloWorldPlugin/HelloWorldPlugin.cs +++ b/src/ZirconiumPluginExamples/HelloWorldPlugin/HelloWorldPlugin.cs @@ -1,15 +1,15 @@ using Newtonsoft.Json; using Zirconium.Core.Logging; using Zirconium.Core.Models; -using Zirconium.Core.Modules.Interfaces; +using Zirconium.Core.Plugins.Interfaces; namespace HelloWorldPlugin { - internal class HelloWorldPlugin : IModuleAPI + internal class HelloWorldPlugin : IPluginAPI { - public string GetModuleUniqueName() => "HelloWorldPlugin"; + public string GetPluginUniqueName() => "HelloWorldPlugin"; - public void Initialize(IHostModuleAPI hostModuleAPI) + public void Initialize(IPluginHostAPI hostModuleAPI) { var handler = new C2SHandler(hostModuleAPI); hostModuleAPI.Hook(handler); @@ -19,9 +19,9 @@ namespace HelloWorldPlugin internal class C2SHandler : IC2SMessageHandler { - private IHostModuleAPI hostModuleAPI; + private IPluginHostAPI hostModuleAPI; - public C2SHandler(IHostModuleAPI hostModuleAPI) { + public C2SHandler(IPluginHostAPI hostModuleAPI) { this.hostModuleAPI = hostModuleAPI; }