From 0cf2335aa7bec49c928cff4b7534d970f6aa546d Mon Sep 17 00:00:00 2001 From: Harrison Deng Date: Mon, 28 Dec 2020 00:43:02 -0600 Subject: [PATCH] Refactored naming and directory layout of project. --- .vscode/launch.json | 4 +- .vscode/tasks.json | 6 +- .../GameServiceWarden.Core.csproj} | 0 .../Games/GameServiceGateway.cs} | 11 +- .../Games/GameServiceInfo.cs} | 18 +- .../Games/GameServiceManager.cs} | 10 +- .../Modules/Exceptions/ModuleLoadException.cs | 16 ++ .../Games/Modules/GameModuleLoadContext.cs} | 6 +- .../Games/Modules/GameModuleLoader.cs} | 10 +- .../Logging/FileLogReceiver.cs | 2 +- .../Logging/ILogRecievable.cs | 2 +- .../Logging/LogLevel.cs | 2 +- .../Logging/Logger.cs | 2 +- .../Preferences/GeneralPreferences.cs | 2 +- .../Preferences/IPersistable.cs | 2 +- .../Program.cs | 2 +- .../UMLSketch.drawio | 237 +++++++++++++++--- .../CorruptedServiceInfoException.cs | 13 - .../Exceptions/NoServiceableFoundException.cs | 17 -- .../Exceptions/NotServiceableTypeException.cs | 15 -- ...{IConfigurable.cs => IGameConfigurable.cs} | 2 +- .../IGameService.cs | 2 +- .../GameServiceWarden.Core.Tests.csproj} | 2 +- .../Modules/Games/FakeGameConfigurable.cs} | 6 +- .../Modules/Games/FakeGameService.cs} | 12 +- .../Modules/Games}/FakeGameServiceModule.cs | 8 +- .../Modules/Games/GameServiceInfoTest.cs} | 58 ++--- .../Modules/Games/GameServiceManagerTest.cs} | 40 +-- 28 files changed, 324 insertions(+), 183 deletions(-) rename src/{GameServiceWarden.Host/GameServiceWarden.Host.csproj => GameServiceWarden.Core/GameServiceWarden.Core.csproj} (100%) rename src/{GameServiceWarden.Host/Modules/ServiceGateway.cs => GameServiceWarden.Core/Games/GameServiceGateway.cs} (88%) rename src/{GameServiceWarden.Host/Modules/ServiceInfo.cs => GameServiceWarden.Core/Games/GameServiceInfo.cs} (90%) rename src/{GameServiceWarden.Host/Modules/ServiceManager.cs => GameServiceWarden.Core/Games/GameServiceManager.cs} (92%) create mode 100644 src/GameServiceWarden.Core/Games/Modules/Exceptions/ModuleLoadException.cs rename src/{GameServiceWarden.Host/Modules/ModuleLoadContext.cs => GameServiceWarden.Core/Games/Modules/GameModuleLoadContext.cs} (85%) rename src/{GameServiceWarden.Host/Modules/ModuleLoader.cs => GameServiceWarden.Core/Games/Modules/GameModuleLoader.cs} (90%) rename src/{GameServiceWarden.Host => GameServiceWarden.Core}/Logging/FileLogReceiver.cs (90%) rename src/{GameServiceWarden.Host => GameServiceWarden.Core}/Logging/ILogRecievable.cs (95%) rename src/{GameServiceWarden.Host => GameServiceWarden.Core}/Logging/LogLevel.cs (71%) rename src/{GameServiceWarden.Host => GameServiceWarden.Core}/Logging/Logger.cs (97%) rename src/{GameServiceWarden.Host => GameServiceWarden.Core}/Preferences/GeneralPreferences.cs (96%) rename src/{GameServiceWarden.Host => GameServiceWarden.Core}/Preferences/IPersistable.cs (70%) rename src/{GameServiceWarden.Host => GameServiceWarden.Core}/Program.cs (82%) rename src/{GameServiceWarden.Host => GameServiceWarden.Core}/UMLSketch.drawio (78%) delete mode 100644 src/GameServiceWarden.Host/Modules/Exceptions/CorruptedServiceInfoException.cs delete mode 100644 src/GameServiceWarden.Host/Modules/Exceptions/NoServiceableFoundException.cs delete mode 100644 src/GameServiceWarden.Host/Modules/Exceptions/NotServiceableTypeException.cs rename src/GameServiceWarden.ModuleAPI/{IConfigurable.cs => IGameConfigurable.cs} (79%) rename tests/{GameServiceWarden.Host.Tests/GameServiceWarden.Host.Tests.csproj => GameServiceWarden.Core.Tests/GameServiceWarden.Core.Tests.csproj} (86%) rename tests/{GameServiceWarden.Host.Tests/Modules/FakeConfigurable.cs => GameServiceWarden.Core.Tests/Modules/Games/FakeGameConfigurable.cs} (70%) rename tests/{GameServiceWarden.Host.Tests/Modules/FakeService.cs => GameServiceWarden.Core.Tests/Modules/Games/FakeGameService.cs} (70%) rename tests/{GameServiceWarden.Host.Tests/Modules => GameServiceWarden.Core.Tests/Modules/Games}/FakeGameServiceModule.cs (68%) rename tests/{GameServiceWarden.Host.Tests/Modules/ServiceInfoTest.cs => GameServiceWarden.Core.Tests/Modules/Games/GameServiceInfoTest.cs} (62%) rename tests/{GameServiceWarden.Host.Tests/Modules/ServiceManagerTest.cs => GameServiceWarden.Core.Tests/Modules/Games/GameServiceManagerTest.cs} (87%) diff --git a/.vscode/launch.json b/.vscode/launch.json index d3f931c..56671df 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -10,9 +10,9 @@ "request": "launch", "preLaunchTask": "build", // If you have changed target frameworks, make sure to update the program path. - "program": "${workspaceFolder}/src/GameServiceWarden.Host/bin/Debug/netcoreapp3.1/GameServiceWarden.Host.dll", + "program": "${workspaceFolder}/src/GameServiceWarden.Core/bin/Debug/netcoreapp3.1/GameServiceWarden.Core.dll", "args": [], - "cwd": "${workspaceFolder}/src/GameServiceWarden.Host", + "cwd": "${workspaceFolder}/src/GameServiceWarden.Core", // For more information about the 'console' field, see https://aka.ms/VSCode-CS-LaunchJson-Console "console": "internalConsole", "stopAtEntry": false diff --git a/.vscode/tasks.json b/.vscode/tasks.json index 8fafe31..8915c5c 100644 --- a/.vscode/tasks.json +++ b/.vscode/tasks.json @@ -7,7 +7,7 @@ "type": "process", "args": [ "build", - "${workspaceFolder}/src/GameServiceWarden.Host/GameServiceWarden.Host.csproj", + "${workspaceFolder}/src/GameServiceWarden.Core/GameServiceWarden.Core.csproj", "/property:GenerateFullPaths=true", "/consoleloggerparameters:NoSummary" ], @@ -19,7 +19,7 @@ "type": "process", "args": [ "publish", - "${workspaceFolder}/src/GameServiceWarden.Host/GameServiceWarden.Host.csproj", + "${workspaceFolder}/src/GameServiceWarden.Core/GameServiceWarden.Core.csproj", "/property:GenerateFullPaths=true", "/consoleloggerparameters:NoSummary" ], @@ -32,7 +32,7 @@ "args": [ "watch", "run", - "${workspaceFolder}/src/GameServiceWarden.Host/GameServiceWarden.Host.csproj", + "${workspaceFolder}/src/GameServiceWarden.Core/GameServiceWarden.Core.csproj", "/property:GenerateFullPaths=true", "/consoleloggerparameters:NoSummary" ], diff --git a/src/GameServiceWarden.Host/GameServiceWarden.Host.csproj b/src/GameServiceWarden.Core/GameServiceWarden.Core.csproj similarity index 100% rename from src/GameServiceWarden.Host/GameServiceWarden.Host.csproj rename to src/GameServiceWarden.Core/GameServiceWarden.Core.csproj diff --git a/src/GameServiceWarden.Host/Modules/ServiceGateway.cs b/src/GameServiceWarden.Core/Games/GameServiceGateway.cs similarity index 88% rename from src/GameServiceWarden.Host/Modules/ServiceGateway.cs rename to src/GameServiceWarden.Core/Games/GameServiceGateway.cs index 7aaea34..5200f04 100644 --- a/src/GameServiceWarden.Host/Modules/ServiceGateway.cs +++ b/src/GameServiceWarden.Core/Games/GameServiceGateway.cs @@ -1,10 +1,10 @@ +using System; using System.Collections.Generic; using System.IO; -using GameServiceWarden.Host.Modules.Exceptions; -namespace GameServiceWarden.Host.Modules +namespace GameServiceWarden.Core.Games { - public class ServiceGateway + public class GameServiceGateway { private readonly string dataDirectory; private const string SERVICE_NAME = "Service Name"; @@ -12,7 +12,7 @@ namespace GameServiceWarden.Host.Modules private const string MODULE_NAME = "Module Name"; private const string EXTENSION = ".sin"; //Service info - public ServiceGateway(string dataDirectory) + public GameServiceGateway(string dataDirectory) { if (!Directory.Exists(dataDirectory)) Directory.CreateDirectory(dataDirectory); this.dataDirectory = dataDirectory; @@ -53,7 +53,8 @@ namespace GameServiceWarden.Host.Modules return line.Substring(key.Length + 2); } } - throw new CorruptedServiceInfoException($"\"{path}\" is corrupted. Could not find value for: {key}."); + + throw new FormatException($"\"{path}\" is corrupted. Could not find value for: {key}."); } diff --git a/src/GameServiceWarden.Host/Modules/ServiceInfo.cs b/src/GameServiceWarden.Core/Games/GameServiceInfo.cs similarity index 90% rename from src/GameServiceWarden.Host/Modules/ServiceInfo.cs rename to src/GameServiceWarden.Core/Games/GameServiceInfo.cs index a12bdd9..1bde81b 100644 --- a/src/GameServiceWarden.Host/Modules/ServiceInfo.cs +++ b/src/GameServiceWarden.Core/Games/GameServiceInfo.cs @@ -4,12 +4,12 @@ using System.Collections.ObjectModel; using System.Globalization; using System.IO; using System.Threading; -using GameServiceWarden.Host.Preferences; +using GameServiceWarden.Core.Preferences; using GameServiceWarden.ModuleAPI; -namespace GameServiceWarden.Host.Modules +namespace GameServiceWarden.Core.Games { - public class ServiceInfo : IDisposable //entity + public class GameServiceInfo : IDisposable //entity { /// @@ -27,22 +27,22 @@ namespace GameServiceWarden.Host.Modules private readonly IGameService service; private readonly string assemblyName; private readonly string moduleName; - private readonly IReadOnlyDictionary configurables; + private readonly IReadOnlyDictionary configurables; private bool disposed; - public ServiceInfo(IGameService service, string moduleName, string assemblyName) + public GameServiceInfo(IGameService service, string moduleName, string assemblyName) { this.service = service ?? throw new ArgumentNullException("service"); this.moduleName = moduleName ?? throw new ArgumentNullException("moduleName"); this.assemblyName = assemblyName ?? throw new ArgumentNullException("assemblyName"); this.service.StateChangeEvent += OnServiceStateChange; - Dictionary configurables = new Dictionary(); - foreach (IConfigurable configurable in service.Configurables) + Dictionary configurables = new Dictionary(); + foreach (IGameConfigurable configurable in service.Configurables) { configurables.Add(configurable.OptionName, configurable); } - this.configurables = new ReadOnlyDictionary(configurables); + this.configurables = new ReadOnlyDictionary(configurables); } /// @@ -93,7 +93,7 @@ namespace GameServiceWarden.Host.Modules } /// - /// Gets the possible 's names for this service. + /// Gets the possible 's names for this service. /// /// A returned where the string is the option's name. public ISet GetConfigurableOptions() diff --git a/src/GameServiceWarden.Host/Modules/ServiceManager.cs b/src/GameServiceWarden.Core/Games/GameServiceManager.cs similarity index 92% rename from src/GameServiceWarden.Host/Modules/ServiceManager.cs rename to src/GameServiceWarden.Core/Games/GameServiceManager.cs index c198493..4819061 100644 --- a/src/GameServiceWarden.Host/Modules/ServiceManager.cs +++ b/src/GameServiceWarden.Core/Games/GameServiceManager.cs @@ -3,11 +3,11 @@ using System.Collections.Generic; using System.IO; using GameServiceWarden.ModuleAPI; -namespace GameServiceWarden.Host.Modules +namespace GameServiceWarden.Core.Games { - public class ServiceManager + public class GameServiceManager { - private readonly Dictionary services = new Dictionary(); + private readonly Dictionary services = new Dictionary(); private readonly Dictionary> modules = new Dictionary>(); public void AddModule(string assemblyName, IGameServiceModule module) @@ -44,7 +44,7 @@ namespace GameServiceWarden.Host.Modules if (!modules.ContainsKey(assemblyName) || !modules[assemblyName].ContainsKey(moduleName)) throw new KeyNotFoundException($"No module registered from \"{assemblyName}\" named \"{moduleName}\"."); if (services.ContainsKey(serviceName)) throw new ArgumentException($"Service of Name \"{serviceName}\" already exists."); - services.Add(serviceName, new ServiceInfo(modules[assemblyName][moduleName].CreateGameService(), moduleName, assemblyName)); + services.Add(serviceName, new GameServiceInfo(modules[assemblyName][moduleName].CreateGameService(), moduleName, assemblyName)); } public void DeleteService(string serviceName) @@ -64,7 +64,7 @@ namespace GameServiceWarden.Host.Modules public IEnumerable GetServiceOptions(string serviceName) { if (!services.ContainsKey(serviceName)) throw new KeyNotFoundException($"Service under name \"{serviceName}\" not found."); - ServiceInfo serviceInfo = services[serviceName]; + GameServiceInfo serviceInfo = services[serviceName]; return serviceInfo.GetConfigurableOptions(); } diff --git a/src/GameServiceWarden.Core/Games/Modules/Exceptions/ModuleLoadException.cs b/src/GameServiceWarden.Core/Games/Modules/Exceptions/ModuleLoadException.cs new file mode 100644 index 0000000..f84e5a4 --- /dev/null +++ b/src/GameServiceWarden.Core/Games/Modules/Exceptions/ModuleLoadException.cs @@ -0,0 +1,16 @@ +using System; +using System.Runtime.Serialization; + +namespace GameServiceWarden.Core.Games.Modules.Exceptions +{ + [System.Serializable] + public class ModuleLoadException : Exception + { + public ModuleLoadException() { } + public ModuleLoadException(string message) : base(message) { } + public ModuleLoadException(string message, Exception inner) : base(message, inner) { } + protected ModuleLoadException( + SerializationInfo info, + StreamingContext context) : base(info, context) { } + } +} \ No newline at end of file diff --git a/src/GameServiceWarden.Host/Modules/ModuleLoadContext.cs b/src/GameServiceWarden.Core/Games/Modules/GameModuleLoadContext.cs similarity index 85% rename from src/GameServiceWarden.Host/Modules/ModuleLoadContext.cs rename to src/GameServiceWarden.Core/Games/Modules/GameModuleLoadContext.cs index 5bc2a28..29c07f5 100644 --- a/src/GameServiceWarden.Host/Modules/ModuleLoadContext.cs +++ b/src/GameServiceWarden.Core/Games/Modules/GameModuleLoadContext.cs @@ -2,13 +2,13 @@ using System; using System.Reflection; using System.Runtime.Loader; -namespace GameServiceWarden.Host.Modules +namespace GameServiceWarden.Core.Games.Modules { - class ModuleLoadContext : AssemblyLoadContext + class GameModuleLoadContext : AssemblyLoadContext { private readonly AssemblyDependencyResolver dependencyResolver; - public ModuleLoadContext(string path) { + public GameModuleLoadContext(string path) { dependencyResolver = new AssemblyDependencyResolver(path); } diff --git a/src/GameServiceWarden.Host/Modules/ModuleLoader.cs b/src/GameServiceWarden.Core/Games/Modules/GameModuleLoader.cs similarity index 90% rename from src/GameServiceWarden.Host/Modules/ModuleLoader.cs rename to src/GameServiceWarden.Core/Games/Modules/GameModuleLoader.cs index 0847d1b..f0cab17 100644 --- a/src/GameServiceWarden.Host/Modules/ModuleLoader.cs +++ b/src/GameServiceWarden.Core/Games/Modules/GameModuleLoader.cs @@ -1,12 +1,12 @@ using System; using System.Collections.Generic; using System.Reflection; -using GameServiceWarden.Host.Modules.Exceptions; +using GameServiceWarden.Core.Games.Modules.Exceptions; using GameServiceWarden.ModuleAPI; -namespace GameServiceWarden.Host.Modules +namespace GameServiceWarden.Core.Games.Modules { - public class ModuleLoader //Gateway + public class GameModuleLoader //Gateway { /// /// Loads an extension module. @@ -36,7 +36,7 @@ namespace GameServiceWarden.Host.Modules private Assembly loadAssembly(string path) { - ModuleLoadContext moduleLoadContext = new ModuleLoadContext(path); + GameModuleLoadContext moduleLoadContext = new GameModuleLoadContext(path); return moduleLoadContext.LoadFromAssemblyPath(path); } @@ -65,7 +65,7 @@ namespace GameServiceWarden.Host.Modules } string types = String.Join(',', typeNames); - throw new NoServiceableFoundException( + throw new ModuleLoadException( $"No public classes in {assembly} from {assembly.Location} implemented {typeof(IGameService).FullName}." + $"Detected types: {types}"); } diff --git a/src/GameServiceWarden.Host/Logging/FileLogReceiver.cs b/src/GameServiceWarden.Core/Logging/FileLogReceiver.cs similarity index 90% rename from src/GameServiceWarden.Host/Logging/FileLogReceiver.cs rename to src/GameServiceWarden.Core/Logging/FileLogReceiver.cs index f08a718..7fe7326 100644 --- a/src/GameServiceWarden.Host/Logging/FileLogReceiver.cs +++ b/src/GameServiceWarden.Core/Logging/FileLogReceiver.cs @@ -1,6 +1,6 @@ using System; -namespace GameServiceWarden.Host.Logging +namespace GameServiceWarden.Core.Logging { public class FileLogReceiver : ILogReceiver { diff --git a/src/GameServiceWarden.Host/Logging/ILogRecievable.cs b/src/GameServiceWarden.Core/Logging/ILogRecievable.cs similarity index 95% rename from src/GameServiceWarden.Host/Logging/ILogRecievable.cs rename to src/GameServiceWarden.Core/Logging/ILogRecievable.cs index 3f43eff..eca90cf 100644 --- a/src/GameServiceWarden.Host/Logging/ILogRecievable.cs +++ b/src/GameServiceWarden.Core/Logging/ILogRecievable.cs @@ -1,6 +1,6 @@ using System; -namespace GameServiceWarden.Host.Logging +namespace GameServiceWarden.Core.Logging { public interface ILogReceiver { diff --git a/src/GameServiceWarden.Host/Logging/LogLevel.cs b/src/GameServiceWarden.Core/Logging/LogLevel.cs similarity index 71% rename from src/GameServiceWarden.Host/Logging/LogLevel.cs rename to src/GameServiceWarden.Core/Logging/LogLevel.cs index 4e6ec2e..656a395 100644 --- a/src/GameServiceWarden.Host/Logging/LogLevel.cs +++ b/src/GameServiceWarden.Core/Logging/LogLevel.cs @@ -1,4 +1,4 @@ -namespace GameServiceWarden.Host.Logging +namespace GameServiceWarden.Core.Logging { public enum LogLevel { diff --git a/src/GameServiceWarden.Host/Logging/Logger.cs b/src/GameServiceWarden.Core/Logging/Logger.cs similarity index 97% rename from src/GameServiceWarden.Host/Logging/Logger.cs rename to src/GameServiceWarden.Core/Logging/Logger.cs index 1d10ff5..1baea25 100644 --- a/src/GameServiceWarden.Host/Logging/Logger.cs +++ b/src/GameServiceWarden.Core/Logging/Logger.cs @@ -1,7 +1,7 @@ using System; using System.Collections.Generic; -namespace GameServiceWarden.Host.Logging +namespace GameServiceWarden.Core.Logging { public class Logger { private readonly HashSet listeners = new HashSet(); diff --git a/src/GameServiceWarden.Host/Preferences/GeneralPreferences.cs b/src/GameServiceWarden.Core/Preferences/GeneralPreferences.cs similarity index 96% rename from src/GameServiceWarden.Host/Preferences/GeneralPreferences.cs rename to src/GameServiceWarden.Core/Preferences/GeneralPreferences.cs index 28f375b..051ea96 100644 --- a/src/GameServiceWarden.Host/Preferences/GeneralPreferences.cs +++ b/src/GameServiceWarden.Core/Preferences/GeneralPreferences.cs @@ -4,7 +4,7 @@ using System.Net; using System.Reflection; using System.Xml.Serialization; -namespace GameServiceWarden.Host.Preferences +namespace GameServiceWarden.Core.Preferences { [Serializable] public class GeneralPreferences : IPersistable diff --git a/src/GameServiceWarden.Host/Preferences/IPersistable.cs b/src/GameServiceWarden.Core/Preferences/IPersistable.cs similarity index 70% rename from src/GameServiceWarden.Host/Preferences/IPersistable.cs rename to src/GameServiceWarden.Core/Preferences/IPersistable.cs index 04804bc..0e660c5 100644 --- a/src/GameServiceWarden.Host/Preferences/IPersistable.cs +++ b/src/GameServiceWarden.Core/Preferences/IPersistable.cs @@ -1,4 +1,4 @@ -namespace GameServiceWarden.Host.Preferences +namespace GameServiceWarden.Core.Preferences { public interface IPersistable { diff --git a/src/GameServiceWarden.Host/Program.cs b/src/GameServiceWarden.Core/Program.cs similarity index 82% rename from src/GameServiceWarden.Host/Program.cs rename to src/GameServiceWarden.Core/Program.cs index c9f3241..5a0f906 100644 --- a/src/GameServiceWarden.Host/Program.cs +++ b/src/GameServiceWarden.Core/Program.cs @@ -1,6 +1,6 @@ using System; -namespace GameServiceWarden.Host +namespace GameServiceWarden.Core { class Program { diff --git a/src/GameServiceWarden.Host/UMLSketch.drawio b/src/GameServiceWarden.Core/UMLSketch.drawio similarity index 78% rename from src/GameServiceWarden.Host/UMLSketch.drawio rename to src/GameServiceWarden.Core/UMLSketch.drawio index b5305fc..239b4ba 100644 --- a/src/GameServiceWarden.Host/UMLSketch.drawio +++ b/src/GameServiceWarden.Core/UMLSketch.drawio @@ -1,13 +1,13 @@ - + - + - + @@ -40,7 +40,7 @@ - + @@ -54,7 +54,7 @@ - + @@ -66,8 +66,8 @@ - - + + @@ -79,7 +79,7 @@ - + @@ -88,7 +88,7 @@ - + @@ -104,11 +104,11 @@ - + - + @@ -125,8 +125,8 @@ - - + + @@ -137,8 +137,8 @@ - - + + @@ -149,20 +149,17 @@ - - + + - - + + - - - - + - + @@ -180,7 +177,7 @@ - + @@ -195,7 +192,7 @@ - + @@ -203,8 +200,8 @@ - - + + @@ -212,17 +209,17 @@ - - + + - + - + - - + + @@ -234,176 +231,348 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/GameServiceWarden.Host/Modules/Exceptions/CorruptedServiceInfoException.cs b/src/GameServiceWarden.Host/Modules/Exceptions/CorruptedServiceInfoException.cs deleted file mode 100644 index efff62c..0000000 --- a/src/GameServiceWarden.Host/Modules/Exceptions/CorruptedServiceInfoException.cs +++ /dev/null @@ -1,13 +0,0 @@ -namespace GameServiceWarden.Host.Modules.Exceptions -{ - [System.Serializable] - public class CorruptedServiceInfoException : System.Exception - { - public CorruptedServiceInfoException() { } - public CorruptedServiceInfoException(string message) : base(message) { } - public CorruptedServiceInfoException(string message, System.Exception inner) : base(message, inner) { } - protected CorruptedServiceInfoException( - System.Runtime.Serialization.SerializationInfo info, - System.Runtime.Serialization.StreamingContext context) : base(info, context) { } - } -} \ No newline at end of file diff --git a/src/GameServiceWarden.Host/Modules/Exceptions/NoServiceableFoundException.cs b/src/GameServiceWarden.Host/Modules/Exceptions/NoServiceableFoundException.cs deleted file mode 100644 index ab39402..0000000 --- a/src/GameServiceWarden.Host/Modules/Exceptions/NoServiceableFoundException.cs +++ /dev/null @@ -1,17 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Reflection; -using System.Runtime.Serialization; - -namespace GameServiceWarden.Host.Modules.Exceptions -{ - [Serializable] - public class NoServiceableFoundException : Exception - { - public NoServiceableFoundException(string message) : base(message) { } - public NoServiceableFoundException(string message, Exception inner) : base(message, inner) { } - protected NoServiceableFoundException( - SerializationInfo info, - StreamingContext context) : base(info, context) { } - } -} \ No newline at end of file diff --git a/src/GameServiceWarden.Host/Modules/Exceptions/NotServiceableTypeException.cs b/src/GameServiceWarden.Host/Modules/Exceptions/NotServiceableTypeException.cs deleted file mode 100644 index 59c4433..0000000 --- a/src/GameServiceWarden.Host/Modules/Exceptions/NotServiceableTypeException.cs +++ /dev/null @@ -1,15 +0,0 @@ -using System; - -namespace GameServiceWarden.Host.Modules.Exceptions -{ - [System.Serializable] - public class NotServiceableTypeException : Exception - { - public NotServiceableTypeException() { } - public NotServiceableTypeException(string message) : base(message) { } - public NotServiceableTypeException(string message, System.Exception inner) : base(message, inner) { } - protected NotServiceableTypeException( - System.Runtime.Serialization.SerializationInfo info, - System.Runtime.Serialization.StreamingContext context) : base(info, context) { } - } -} \ No newline at end of file diff --git a/src/GameServiceWarden.ModuleAPI/IConfigurable.cs b/src/GameServiceWarden.ModuleAPI/IGameConfigurable.cs similarity index 79% rename from src/GameServiceWarden.ModuleAPI/IConfigurable.cs rename to src/GameServiceWarden.ModuleAPI/IGameConfigurable.cs index 7081f48..2b23121 100644 --- a/src/GameServiceWarden.ModuleAPI/IConfigurable.cs +++ b/src/GameServiceWarden.ModuleAPI/IGameConfigurable.cs @@ -1,6 +1,6 @@ namespace GameServiceWarden.ModuleAPI { - public interface IConfigurable + public interface IGameConfigurable { string OptionName { get; } bool SetValue(string value); diff --git a/src/GameServiceWarden.ModuleAPI/IGameService.cs b/src/GameServiceWarden.ModuleAPI/IGameService.cs index 2859b10..a22e27e 100644 --- a/src/GameServiceWarden.ModuleAPI/IGameService.cs +++ b/src/GameServiceWarden.ModuleAPI/IGameService.cs @@ -7,7 +7,7 @@ namespace GameServiceWarden.ModuleAPI public interface IGameService { event EventHandler StateChangeEvent; - IReadOnlyCollection Configurables{ get; } + IReadOnlyCollection Configurables{ get; } void InitializeService(TextWriter stream); void ElegantShutdown(); void ExecuteCommand(string command); diff --git a/tests/GameServiceWarden.Host.Tests/GameServiceWarden.Host.Tests.csproj b/tests/GameServiceWarden.Core.Tests/GameServiceWarden.Core.Tests.csproj similarity index 86% rename from tests/GameServiceWarden.Host.Tests/GameServiceWarden.Host.Tests.csproj rename to tests/GameServiceWarden.Core.Tests/GameServiceWarden.Core.Tests.csproj index deb112d..174c360 100644 --- a/tests/GameServiceWarden.Host.Tests/GameServiceWarden.Host.Tests.csproj +++ b/tests/GameServiceWarden.Core.Tests/GameServiceWarden.Core.Tests.csproj @@ -14,7 +14,7 @@ - + diff --git a/tests/GameServiceWarden.Host.Tests/Modules/FakeConfigurable.cs b/tests/GameServiceWarden.Core.Tests/Modules/Games/FakeGameConfigurable.cs similarity index 70% rename from tests/GameServiceWarden.Host.Tests/Modules/FakeConfigurable.cs rename to tests/GameServiceWarden.Core.Tests/Modules/Games/FakeGameConfigurable.cs index feecd65..778692a 100644 --- a/tests/GameServiceWarden.Host.Tests/Modules/FakeConfigurable.cs +++ b/tests/GameServiceWarden.Core.Tests/Modules/Games/FakeGameConfigurable.cs @@ -1,13 +1,13 @@ using GameServiceWarden.ModuleAPI; -namespace GameServiceWarden.Host.Tests.Modules +namespace GameServiceWarden.Core.Tests.Modules.Games { - public class FakeConfigurable : IConfigurable + public class FakeGameConfigurable : IGameConfigurable { private string value; public string OptionName { get; private set; } - public FakeConfigurable(string optionName) + public FakeGameConfigurable(string optionName) { this.OptionName = optionName; } diff --git a/tests/GameServiceWarden.Host.Tests/Modules/FakeService.cs b/tests/GameServiceWarden.Core.Tests/Modules/Games/FakeGameService.cs similarity index 70% rename from tests/GameServiceWarden.Host.Tests/Modules/FakeService.cs rename to tests/GameServiceWarden.Core.Tests/Modules/Games/FakeGameService.cs index 51fc2a8..7e98811 100644 --- a/tests/GameServiceWarden.Host.Tests/Modules/FakeService.cs +++ b/tests/GameServiceWarden.Core.Tests/Modules/Games/FakeGameService.cs @@ -3,11 +3,11 @@ using System.Collections.Generic; using System.IO; using GameServiceWarden.ModuleAPI; -namespace GameServiceWarden.Host.Tests.Modules +namespace GameServiceWarden.Core.Tests.Modules.Games { - public class FakeService : IGameService + public class FakeGameService : IGameService { - public IReadOnlyCollection Configurables { get; set; } + public IReadOnlyCollection Configurables { get; set; } public event EventHandler StateChangeEvent; @@ -15,10 +15,10 @@ namespace GameServiceWarden.Host.Tests.Modules private TextWriter consoleStream; - public FakeService(params IConfigurable[] configurables) + public FakeGameService(params IGameConfigurable[] configurables) { - HashSet modifiable = new HashSet(); - foreach (IConfigurable configurable in configurables) + HashSet modifiable = new HashSet(); + foreach (IGameConfigurable configurable in configurables) { modifiable.Add(configurable); } diff --git a/tests/GameServiceWarden.Host.Tests/Modules/FakeGameServiceModule.cs b/tests/GameServiceWarden.Core.Tests/Modules/Games/FakeGameServiceModule.cs similarity index 68% rename from tests/GameServiceWarden.Host.Tests/Modules/FakeGameServiceModule.cs rename to tests/GameServiceWarden.Core.Tests/Modules/Games/FakeGameServiceModule.cs index c3a32a1..689f9b2 100644 --- a/tests/GameServiceWarden.Host.Tests/Modules/FakeGameServiceModule.cs +++ b/tests/GameServiceWarden.Core.Tests/Modules/Games/FakeGameServiceModule.cs @@ -1,7 +1,7 @@ using System.Collections.Generic; using GameServiceWarden.ModuleAPI; -namespace GameServiceWarden.Host.Tests.Modules +namespace GameServiceWarden.Core.Tests.Modules.Games { public class FakeGameServiceModule : IGameServiceModule { @@ -9,8 +9,8 @@ namespace GameServiceWarden.Host.Tests.Modules public string Description => "A fake module for testing."; - private IConfigurable[] configurables; - public FakeGameServiceModule(params IConfigurable[] configurables) + private IGameConfigurable[] configurables; + public FakeGameServiceModule(params IGameConfigurable[] configurables) { this.configurables = configurables; } @@ -19,7 +19,7 @@ namespace GameServiceWarden.Host.Tests.Modules public IGameService CreateGameService() { - return new FakeService(configurables); + return new FakeGameService(configurables); } } } \ No newline at end of file diff --git a/tests/GameServiceWarden.Host.Tests/Modules/ServiceInfoTest.cs b/tests/GameServiceWarden.Core.Tests/Modules/Games/GameServiceInfoTest.cs similarity index 62% rename from tests/GameServiceWarden.Host.Tests/Modules/ServiceInfoTest.cs rename to tests/GameServiceWarden.Core.Tests/Modules/Games/GameServiceInfoTest.cs index 443831e..0f5a75a 100644 --- a/tests/GameServiceWarden.Host.Tests/Modules/ServiceInfoTest.cs +++ b/tests/GameServiceWarden.Core.Tests/Modules/Games/GameServiceInfoTest.cs @@ -1,24 +1,24 @@ using System.Collections.Generic; using System.IO; -using GameServiceWarden.Host.Modules; +using GameServiceWarden.Core.Games; using GameServiceWarden.ModuleAPI; using Xunit; -namespace GameServiceWarden.Host.Tests.Modules +namespace GameServiceWarden.Core.Tests.Modules.Games { // Testing convention from: https://docs.microsoft.com/en-us/dotnet/core/testing/unit-testing-best-practices // Fakes are generic test objects, // mocks are the objects being asserted upon, // stubs are objects used as part of the test. - public class ServiceInfoTest + public class GameServiceInfoTest { //MethodTested_ScenarioTested_ExpectedBehavior [Fact] public void Start_FromStopped_StateIsRunning() { //Arrange, Act, Assert - IGameService stubGameService = new FakeService(); - ServiceInfo serviceInfo = new ServiceInfo(stubGameService, "FakeModule", "FakeAssembly"); + IGameService stubGameService = new FakeGameService(); + GameServiceInfo serviceInfo = new GameServiceInfo(stubGameService, "FakeModule", "FakeAssembly"); serviceInfo.Start(); Assert.Equal(ServiceState.Running, serviceInfo.GetServiceState()); serviceInfo.Dispose(); @@ -27,8 +27,8 @@ namespace GameServiceWarden.Host.Tests.Modules [Fact] public void Stop_FromStart_Stopped() { - IGameService stubService = new FakeService(); - ServiceInfo serviceInfo = new ServiceInfo(stubService, "FakeModule", "FakeAssembly"); + IGameService stubService = new FakeGameService(); + GameServiceInfo serviceInfo = new GameServiceInfo(stubService, "FakeModule", "FakeAssembly"); serviceInfo.Start(); serviceInfo.Stop(); Assert.Equal(ServiceState.Stopped, serviceInfo.GetServiceState()); @@ -39,12 +39,12 @@ namespace GameServiceWarden.Host.Tests.Modules public void GetConfigurableOptions_ServiceStopped_ReturnsConfigurables() { //Given - FakeService stubService = new FakeService(); - FakeConfigurable stubConfigurable = new FakeConfigurable("Option"); - HashSet configurables = new HashSet(); + FakeGameService stubService = new FakeGameService(); + FakeGameConfigurable stubConfigurable = new FakeGameConfigurable("Option"); + HashSet configurables = new HashSet(); configurables.Add(stubConfigurable); stubService.Configurables = configurables; - ServiceInfo serviceInfo = new ServiceInfo(stubService, "FakeModule", "FakeAssembly"); + GameServiceInfo serviceInfo = new GameServiceInfo(stubService, "FakeModule", "FakeAssembly"); //Then Assert.Contains(stubConfigurable.OptionName, serviceInfo.GetConfigurableOptions()); serviceInfo.Dispose(); @@ -54,12 +54,12 @@ namespace GameServiceWarden.Host.Tests.Modules public void SetAndGetConfigurationValue_ServiceStopped_AppropriateValueReturned() { //Given - FakeService stubService = new FakeService(); - FakeConfigurable stubConfigurable = new FakeConfigurable("Option"); - HashSet configurables = new HashSet(); + FakeGameService stubService = new FakeGameService(); + FakeGameConfigurable stubConfigurable = new FakeGameConfigurable("Option"); + HashSet configurables = new HashSet(); configurables.Add(stubConfigurable); stubService.Configurables = configurables; - ServiceInfo serviceInfo = new ServiceInfo(stubService, "FakeModule", "FakeAssembly"); + GameServiceInfo serviceInfo = new GameServiceInfo(stubService, "FakeModule", "FakeAssembly"); //When serviceInfo.SetConfigurableValue(stubConfigurable.OptionName, "success"); //Then @@ -70,8 +70,8 @@ namespace GameServiceWarden.Host.Tests.Modules public void GetServiceState_ServiceNotStarted_ReturnsStoppedState() { //Given - IGameService stubService = new FakeService(); - ServiceInfo serviceInfo = new ServiceInfo(stubService, "FakeModule", "FakeAssembly"); + IGameService stubService = new FakeGameService(); + GameServiceInfo serviceInfo = new GameServiceInfo(stubService, "FakeModule", "FakeAssembly"); //Then Assert.Equal(ServiceState.Stopped, serviceInfo.GetServiceState()); serviceInfo.Dispose(); @@ -81,8 +81,8 @@ namespace GameServiceWarden.Host.Tests.Modules public void GetServiceState_ServiceStarted_ReturnsRunningState() { //Given - IGameService stubService = new FakeService(); - ServiceInfo serviceInfo = new ServiceInfo(stubService, "FakeModule", "FakeAssembly"); + IGameService stubService = new FakeGameService(); + GameServiceInfo serviceInfo = new GameServiceInfo(stubService, "FakeModule", "FakeAssembly"); //When serviceInfo.Start(); //Then @@ -95,8 +95,8 @@ namespace GameServiceWarden.Host.Tests.Modules { //Given const string MODULE_NAME = "FakeModule"; - IGameService stubService = new FakeService(); - ServiceInfo serviceInfo = new ServiceInfo(stubService, MODULE_NAME, "FakeAssembly"); + IGameService stubService = new FakeGameService(); + GameServiceInfo serviceInfo = new GameServiceInfo(stubService, MODULE_NAME, "FakeAssembly"); //Then Assert.Equal(MODULE_NAME, serviceInfo.GetModuleName()); serviceInfo.Dispose(); @@ -107,8 +107,8 @@ namespace GameServiceWarden.Host.Tests.Modules { //Given const string ASSEMBLY_NAME = "FakeAssembly"; - IGameService stubService = new FakeService(); - ServiceInfo serviceInfo = new ServiceInfo(stubService, "FakeModule", ASSEMBLY_NAME); + IGameService stubService = new FakeGameService(); + GameServiceInfo serviceInfo = new GameServiceInfo(stubService, "FakeModule", ASSEMBLY_NAME); //Then Assert.Equal(ASSEMBLY_NAME, serviceInfo.GetAssemblyName()); serviceInfo.Dispose(); @@ -119,8 +119,8 @@ namespace GameServiceWarden.Host.Tests.Modules { //Given const string SERVICE_NAME = "Service"; - IGameService stubService = new FakeService(); - ServiceInfo serviceInfo = new ServiceInfo(stubService, "FakeModule", "FakeAssemblyName"); + IGameService stubService = new FakeGameService(); + GameServiceInfo serviceInfo = new GameServiceInfo(stubService, "FakeModule", "FakeAssemblyName"); //When serviceInfo.ServiceName = SERVICE_NAME; //Then @@ -132,8 +132,8 @@ namespace GameServiceWarden.Host.Tests.Modules public void ServiceConsoleStream_ServiceNotStarted_NullReturned() { //Given - IGameService stubService = new FakeService(); - ServiceInfo serviceInfo = new ServiceInfo(stubService, "FakeModule", "FakeAssembly"); + IGameService stubService = new FakeGameService(); + GameServiceInfo serviceInfo = new GameServiceInfo(stubService, "FakeModule", "FakeAssembly"); //Then Assert.Null(serviceInfo.ServiceConsoleStream); serviceInfo.Dispose(); @@ -143,8 +143,8 @@ namespace GameServiceWarden.Host.Tests.Modules public void ServiceConsoleStream_ServiceStarted_StreamReturned() { //Given - IGameService stubService = new FakeService(); - ServiceInfo serviceInfo = new ServiceInfo(stubService, "FakeModule", "FakeAssembly"); + IGameService stubService = new FakeGameService(); + GameServiceInfo serviceInfo = new GameServiceInfo(stubService, "FakeModule", "FakeAssembly"); //When serviceInfo.Start(); //Then diff --git a/tests/GameServiceWarden.Host.Tests/Modules/ServiceManagerTest.cs b/tests/GameServiceWarden.Core.Tests/Modules/Games/GameServiceManagerTest.cs similarity index 87% rename from tests/GameServiceWarden.Host.Tests/Modules/ServiceManagerTest.cs rename to tests/GameServiceWarden.Core.Tests/Modules/Games/GameServiceManagerTest.cs index 30ada59..bae9e73 100644 --- a/tests/GameServiceWarden.Host.Tests/Modules/ServiceManagerTest.cs +++ b/tests/GameServiceWarden.Core.Tests/Modules/Games/GameServiceManagerTest.cs @@ -1,18 +1,18 @@ using System.IO; -using GameServiceWarden.Host.Modules; +using GameServiceWarden.Core.Games; using GameServiceWarden.ModuleAPI; using Xunit; -namespace GameServiceWarden.Host.Tests.Modules +namespace GameServiceWarden.Core.Tests.Modules.Games { - public class ServiceManagerTest + public class GameServiceManagerTest { [Fact] public void AddModule_NewManager_SuccessfulAddition() { //Given const string ASSEMBLY_NAME = "FakeAssembly"; - ServiceManager serviceManager = new ServiceManager(); + GameServiceManager serviceManager = new GameServiceManager(); IGameServiceModule stubGameServiceModule = new FakeGameServiceModule(); //When serviceManager.AddModule(ASSEMBLY_NAME, stubGameServiceModule); @@ -26,7 +26,7 @@ namespace GameServiceWarden.Host.Tests.Modules { //Given const string ASSEMBLY_NAME = "FakeAssembly"; - ServiceManager serviceManager = new ServiceManager(); + GameServiceManager serviceManager = new GameServiceManager(); IGameServiceModule stubGameServiceModule = new FakeGameServiceModule(); //When serviceManager.AddModule(ASSEMBLY_NAME, stubGameServiceModule); @@ -41,7 +41,7 @@ namespace GameServiceWarden.Host.Tests.Modules //Given const string ASSEMBLY_NAME = "FakeAssembly"; const string FAKE_SERVICE_NAME = "FakeService"; - ServiceManager serviceManager = new ServiceManager(); + GameServiceManager serviceManager = new GameServiceManager(); IGameServiceModule stubGameServiceModule = new FakeGameServiceModule(); serviceManager.AddModule(ASSEMBLY_NAME, stubGameServiceModule); //When @@ -56,7 +56,7 @@ namespace GameServiceWarden.Host.Tests.Modules //Given const string ASSEMBLY_NAME = "FakeAssembly"; const string FAKE_SERVICE_NAME = "FakeService"; - ServiceManager serviceManager = new ServiceManager(); + GameServiceManager serviceManager = new GameServiceManager(); IGameServiceModule stubGameServiceModule = new FakeGameServiceModule(); serviceManager.AddModule(ASSEMBLY_NAME, stubGameServiceModule); serviceManager.CreateService(FAKE_SERVICE_NAME, ASSEMBLY_NAME, stubGameServiceModule.Name); @@ -72,7 +72,7 @@ namespace GameServiceWarden.Host.Tests.Modules //Given const string ASSEMBLY_NAME = "FakeAssembly"; const string FAKE_SERVICE_PREFIX = "FakeService_"; - ServiceManager serviceManager = new ServiceManager(); + GameServiceManager serviceManager = new GameServiceManager(); IGameServiceModule stubGameServiceModule = new FakeGameServiceModule(); //When serviceManager.AddModule(ASSEMBLY_NAME, stubGameServiceModule); @@ -93,11 +93,11 @@ namespace GameServiceWarden.Host.Tests.Modules //Given const string ASSEMBLY_NAME = "FakeAssembly"; const string SERVICE_NAME = "FakeService"; - ServiceManager serviceManager = new ServiceManager(); + GameServiceManager serviceManager = new GameServiceManager(); IGameServiceModule stubGameServiceModule = new FakeGameServiceModule( - new FakeConfigurable("A"), - new FakeConfigurable("B"), - new FakeConfigurable("C") + new FakeGameConfigurable("A"), + new FakeGameConfigurable("B"), + new FakeGameConfigurable("C") ); //When serviceManager.AddModule(ASSEMBLY_NAME, stubGameServiceModule); @@ -114,9 +114,9 @@ namespace GameServiceWarden.Host.Tests.Modules //Given const string ASSEMBLY_NAME = "FakeAssembly"; const string SERVICE_NAME = "FakeService"; - ServiceManager serviceManager = new ServiceManager(); + GameServiceManager serviceManager = new GameServiceManager(); IGameServiceModule stubGameServiceModule = new FakeGameServiceModule( - new FakeConfigurable("A") + new FakeGameConfigurable("A") ); //When serviceManager.AddModule(ASSEMBLY_NAME, stubGameServiceModule); @@ -132,7 +132,7 @@ namespace GameServiceWarden.Host.Tests.Modules //Given const string ASSEMBLY_NAME = "FakeAssembly"; const string SERVICE_NAME = "FakeService"; - ServiceManager serviceManager = new ServiceManager(); + GameServiceManager serviceManager = new GameServiceManager(); IGameServiceModule stubGameServiceModule = new FakeGameServiceModule(); //When serviceManager.AddModule(ASSEMBLY_NAME, stubGameServiceModule); @@ -147,7 +147,7 @@ namespace GameServiceWarden.Host.Tests.Modules //Given const string ASSEMBLY_NAME = "FakeAssembly"; const string SERVICE_NAME = "FakeService"; - ServiceManager serviceManager = new ServiceManager(); + GameServiceManager serviceManager = new GameServiceManager(); IGameServiceModule stubGameServiceModule = new FakeGameServiceModule(); //When serviceManager.AddModule(ASSEMBLY_NAME, stubGameServiceModule); @@ -163,7 +163,7 @@ namespace GameServiceWarden.Host.Tests.Modules //Given const string ASSEMBLY_NAME = "FakeAssembly"; const string SERVICE_NAME = "FakeService"; - ServiceManager serviceManager = new ServiceManager(); + GameServiceManager serviceManager = new GameServiceManager(); IGameServiceModule stubGameServiceModule = new FakeGameServiceModule(); //When serviceManager.AddModule(ASSEMBLY_NAME, stubGameServiceModule); @@ -179,7 +179,7 @@ namespace GameServiceWarden.Host.Tests.Modules //Given const string ASSEMBLY_NAME = "FakeAssembly"; const string SERVICE_NAME = "FakeService"; - ServiceManager serviceManager = new ServiceManager(); + GameServiceManager serviceManager = new GameServiceManager(); IGameServiceModule stubGameServiceModule = new FakeGameServiceModule(); //When serviceManager.AddModule(ASSEMBLY_NAME, stubGameServiceModule); @@ -196,7 +196,7 @@ namespace GameServiceWarden.Host.Tests.Modules //Given const string ASSEMBLY_NAME = "FakeAssembly"; const string SERVICE_NAME = "FakeService"; - ServiceManager serviceManager = new ServiceManager(); + GameServiceManager serviceManager = new GameServiceManager(); IGameServiceModule stubGameServiceModule = new FakeGameServiceModule(); //When serviceManager.AddModule(ASSEMBLY_NAME, stubGameServiceModule); @@ -218,7 +218,7 @@ namespace GameServiceWarden.Host.Tests.Modules //Given const string ASSEMBLY_NAME = "FakeAssembly"; const string SERVICE_NAME = "FakeService"; - ServiceManager serviceManager = new ServiceManager(); + GameServiceManager serviceManager = new GameServiceManager(); IGameServiceModule stubGameServiceModule = new FakeGameServiceModule(); //When serviceManager.AddModule(ASSEMBLY_NAME, stubGameServiceModule);