From 247f1b27e7f9069bbfcb87b3f49b19c6d22f82e1 Mon Sep 17 00:00:00 2001 From: Alexandru Macocian Date: Fri, 6 Mar 2020 11:07:47 +0100 Subject: [PATCH] Renamed namespace for easier access Added tests for stopping the server properly --- MTSC-TestServer/Program.cs | 6 ++--- MTSC.UnitTests/E2ETests.cs | 6 ++--- MTSC.UnitTests/EchoModule.cs | 4 ++-- MTSC.UnitTests/ResourcesTests.cs | 4 ++-- MTSC.UnitTests/ServerTests.cs | 22 +++++++++++++++++++ MTSC.UnitTests/StringResource.cs | 2 +- MTSC.UnitTests/TestQueryModule.cs | 4 ++-- MTSC/{Client => ClientSide}/Client.cs | 0 .../Handlers/BroadcastHandler.cs | 0 .../Handlers/EncryptionHandler.cs | 0 .../Handlers/HttpHandler.cs | 0 .../Handlers/IHandler.cs | 0 .../Handlers/WebsocketHandler.cs | 0 .../Http/RoutingModules/Http200Module.cs | 4 ++-- .../Http/RoutingModules/HttpRouteBase.cs | 10 ++++----- .../Http/ServerModules/FileServerModule.cs | 8 +++---- .../Http/ServerModules/HelloWorldModule.cs | 8 +++---- .../Http/ServerModules/Http404Module.cs | 8 +++---- .../Http/ServerModules/HttpRoutingModule.cs | 18 +++++++-------- MTSC/Common/Http/ServerModules/IHttpModule.cs | 8 +++---- MTSC/Common/Http/ServerModules/PostModule.cs | 8 +++---- .../ServerModules/BroadcastModule.cs | 10 ++++----- .../WebSockets/ServerModules/EchoModule.cs | 10 ++++----- .../ServerModules/IWebsocketModule.cs | 10 ++++----- .../Handlers/BroadcastHandler.cs | 2 +- .../Handlers/EncryptionHandler.cs | 2 +- .../Handlers/HttpHandler.cs | 2 +- .../Handlers/IHandler.cs | 2 +- .../Handlers/WebsocketHandler.cs | 2 +- .../Resources/IResource.cs | 2 +- MTSC/{Server => ServerSide}/Server.cs | 12 +++++----- .../UsageMonitors/CPUUsageLimiter.cs | 2 +- .../UsageMonitors/IServerUsageMonitor.cs | 2 +- .../UsageMonitors/TickrateEnforcer.cs | 2 +- 34 files changed, 102 insertions(+), 78 deletions(-) create mode 100644 MTSC.UnitTests/ServerTests.cs rename MTSC/{Client => ClientSide}/Client.cs (100%) rename MTSC/{Client => ClientSide}/Handlers/BroadcastHandler.cs (100%) rename MTSC/{Client => ClientSide}/Handlers/EncryptionHandler.cs (100%) rename MTSC/{Client => ClientSide}/Handlers/HttpHandler.cs (100%) rename MTSC/{Client => ClientSide}/Handlers/IHandler.cs (100%) rename MTSC/{Client => ClientSide}/Handlers/WebsocketHandler.cs (100%) rename MTSC/{Server => ServerSide}/Handlers/BroadcastHandler.cs (97%) rename MTSC/{Server => ServerSide}/Handlers/EncryptionHandler.cs (99%) rename MTSC/{Server => ServerSide}/Handlers/HttpHandler.cs (99%) rename MTSC/{Server => ServerSide}/Handlers/IHandler.cs (98%) rename MTSC/{Server => ServerSide}/Handlers/WebsocketHandler.cs (99%) rename MTSC/{Server => ServerSide}/Resources/IResource.cs (54%) rename MTSC/{Server => ServerSide}/Server.cs (98%) rename MTSC/{Server => ServerSide}/UsageMonitors/CPUUsageLimiter.cs (98%) rename MTSC/{Server => ServerSide}/UsageMonitors/IServerUsageMonitor.cs (94%) rename MTSC/{Server => ServerSide}/UsageMonitors/TickrateEnforcer.cs (97%) diff --git a/MTSC-TestServer/Program.cs b/MTSC-TestServer/Program.cs index c7dbca9..28774b9 100644 --- a/MTSC-TestServer/Program.cs +++ b/MTSC-TestServer/Program.cs @@ -2,9 +2,9 @@ using MTSC.Common.WebSockets.ServerModules; using MTSC.Exceptions; using MTSC.Logging; -using MTSC.Server; -using MTSC.Server.Handlers; -using MTSC.Server.UsageMonitors; +using MTSC.ServerSide; +using MTSC.ServerSide.Handlers; +using MTSC.ServerSide.UsageMonitors; using System; using System.Numerics; using System.Security.Cryptography; diff --git a/MTSC.UnitTests/E2ETests.cs b/MTSC.UnitTests/E2ETests.cs index f9bda58..9165fb3 100644 --- a/MTSC.UnitTests/E2ETests.cs +++ b/MTSC.UnitTests/E2ETests.cs @@ -4,7 +4,7 @@ using MTSC.Common.Http.RoutingModules; using MTSC.Common.Http.ServerModules; using MTSC.Exceptions; using MTSC.Logging; -using MTSC.Server.Handlers; +using MTSC.ServerSide.Handlers; using System; using System.Diagnostics; using System.Linq; @@ -23,12 +23,12 @@ namespace MTSC.UnitTests private volatile byte[] receivedMessage = null; private static int stressIterations = 1000; public TestContext TestContext { get; set; } - static Server.Server Server { get; set; } + static ServerSide.Server Server { get; set; } [ClassInitialize] public static void InitializeServer(TestContext testContext) { - Server = new Server.Server(800) + Server = new ServerSide.Server(800) .AddHandler(new WebsocketHandler() .AddWebsocketHandler(new Common.WebSockets.ServerModules.EchoModule())) .AddHandler(new HttpHandler() diff --git a/MTSC.UnitTests/EchoModule.cs b/MTSC.UnitTests/EchoModule.cs index 6826c62..26a48f3 100644 --- a/MTSC.UnitTests/EchoModule.cs +++ b/MTSC.UnitTests/EchoModule.cs @@ -1,12 +1,12 @@ using MTSC.Common.Http; using MTSC.Common.Http.RoutingModules; -using MTSC.Server; +using MTSC.ServerSide; namespace MTSC.UnitTests { public class EchoModule : HttpRouteBase { - public override HttpResponse HandleRequest(HttpRequest request, ClientData client, Server.Server server) + public override HttpResponse HandleRequest(HttpRequest request, ClientData client, ServerSide.Server server) { return new HttpResponse { BodyString = request.BodyString, StatusCode = HttpMessage.StatusCodes.OK }; } diff --git a/MTSC.UnitTests/ResourcesTests.cs b/MTSC.UnitTests/ResourcesTests.cs index 98759c8..e87ad2d 100644 --- a/MTSC.UnitTests/ResourcesTests.cs +++ b/MTSC.UnitTests/ResourcesTests.cs @@ -5,11 +5,11 @@ namespace MTSC.UnitTests [TestClass] public class ResourcesTests { - public static Server.Server server; + public static ServerSide.Server server; [ClassInitialize] public static void InitializeServer(TestContext testContext) { - server = new Server.Server(); + server = new ServerSide.Server(); } [TestMethod] public void AddAndGetResource() diff --git a/MTSC.UnitTests/ServerTests.cs b/MTSC.UnitTests/ServerTests.cs new file mode 100644 index 0000000..696b90b --- /dev/null +++ b/MTSC.UnitTests/ServerTests.cs @@ -0,0 +1,22 @@ +using Microsoft.VisualStudio.TestTools.UnitTesting; +using MTSC.ServerSide; +using System.Threading; + +namespace MTSC.UnitTests +{ + [TestClass] + public class ServerTests + { + [TestMethod] + public void Stop() + { + Server server = new Server(); + server.RunAsync(); + Thread.Sleep(1000); + Assert.IsTrue(server.Running); + server.Stop(); + Thread.Sleep(1000); + Assert.IsFalse(server.Running); + } + } +} diff --git a/MTSC.UnitTests/StringResource.cs b/MTSC.UnitTests/StringResource.cs index 471a9c1..7822986 100644 --- a/MTSC.UnitTests/StringResource.cs +++ b/MTSC.UnitTests/StringResource.cs @@ -1,4 +1,4 @@ -using MTSC.Server.Resources; +using MTSC.ServerSide.Resources; namespace MTSC.UnitTests { diff --git a/MTSC.UnitTests/TestQueryModule.cs b/MTSC.UnitTests/TestQueryModule.cs index b9a38d0..be2f8aa 100644 --- a/MTSC.UnitTests/TestQueryModule.cs +++ b/MTSC.UnitTests/TestQueryModule.cs @@ -1,13 +1,13 @@ using MTSC.Common.Http; using MTSC.Common.Http.RoutingModules; -using MTSC.Server; +using MTSC.ServerSide; using System.Web; namespace MTSC.UnitTests { class TestQueryModule : HttpRouteBase { - public override HttpResponse HandleRequest(HttpRequest request, ClientData client, Server.Server server) + public override HttpResponse HandleRequest(HttpRequest request, ClientData client, ServerSide.Server server) { var query = HttpUtility.ParseQueryString(request.RequestQuery); if(query.Count == 2 && diff --git a/MTSC/Client/Client.cs b/MTSC/ClientSide/Client.cs similarity index 100% rename from MTSC/Client/Client.cs rename to MTSC/ClientSide/Client.cs diff --git a/MTSC/Client/Handlers/BroadcastHandler.cs b/MTSC/ClientSide/Handlers/BroadcastHandler.cs similarity index 100% rename from MTSC/Client/Handlers/BroadcastHandler.cs rename to MTSC/ClientSide/Handlers/BroadcastHandler.cs diff --git a/MTSC/Client/Handlers/EncryptionHandler.cs b/MTSC/ClientSide/Handlers/EncryptionHandler.cs similarity index 100% rename from MTSC/Client/Handlers/EncryptionHandler.cs rename to MTSC/ClientSide/Handlers/EncryptionHandler.cs diff --git a/MTSC/Client/Handlers/HttpHandler.cs b/MTSC/ClientSide/Handlers/HttpHandler.cs similarity index 100% rename from MTSC/Client/Handlers/HttpHandler.cs rename to MTSC/ClientSide/Handlers/HttpHandler.cs diff --git a/MTSC/Client/Handlers/IHandler.cs b/MTSC/ClientSide/Handlers/IHandler.cs similarity index 100% rename from MTSC/Client/Handlers/IHandler.cs rename to MTSC/ClientSide/Handlers/IHandler.cs diff --git a/MTSC/Client/Handlers/WebsocketHandler.cs b/MTSC/ClientSide/Handlers/WebsocketHandler.cs similarity index 100% rename from MTSC/Client/Handlers/WebsocketHandler.cs rename to MTSC/ClientSide/Handlers/WebsocketHandler.cs diff --git a/MTSC/Common/Http/RoutingModules/Http200Module.cs b/MTSC/Common/Http/RoutingModules/Http200Module.cs index 033d6f0..2d80e66 100644 --- a/MTSC/Common/Http/RoutingModules/Http200Module.cs +++ b/MTSC/Common/Http/RoutingModules/Http200Module.cs @@ -1,10 +1,10 @@ -using MTSC.Server; +using MTSC.ServerSide; namespace MTSC.Common.Http.RoutingModules { public sealed class Http200Module : HttpRouteBase { - public override HttpResponse HandleRequest(HttpRequest request, ClientData client, Server.Server server) + public override HttpResponse HandleRequest(HttpRequest request, ClientData client, ServerSide.Server server) { return new HttpResponse { StatusCode = HttpMessage.StatusCodes.OK }; } diff --git a/MTSC/Common/Http/RoutingModules/HttpRouteBase.cs b/MTSC/Common/Http/RoutingModules/HttpRouteBase.cs index fac116c..0ed1f5d 100644 --- a/MTSC/Common/Http/RoutingModules/HttpRouteBase.cs +++ b/MTSC/Common/Http/RoutingModules/HttpRouteBase.cs @@ -1,16 +1,16 @@ -using MTSC.Server; +using MTSC.ServerSide; using System; namespace MTSC.Common.Http.RoutingModules { public abstract class HttpRouteBase { - public HttpResponse CallHandleRequest(HttpRequest request, ClientData client, Server.Server server) + public HttpResponse CallHandleRequest(HttpRequest request, ClientData client, ServerSide.Server server) { return this.HandleRequest(request, client, server); } - public abstract HttpResponse HandleRequest(HttpRequest request, ClientData client, Server.Server server); + public abstract HttpResponse HandleRequest(HttpRequest request, ClientData client, ServerSide.Server server); } public abstract class HttpRouteBase : HttpRouteBase { @@ -32,11 +32,11 @@ namespace MTSC.Common.Http.RoutingModules return this; } - public override HttpResponse HandleRequest(HttpRequest request, ClientData client, Server.Server server) + public override HttpResponse HandleRequest(HttpRequest request, ClientData client, ServerSide.Server server) { return HandleRequest(template.Invoke(request), client, server); } - public abstract HttpResponse HandleRequest(T request, ClientData client, Server.Server server); + public abstract HttpResponse HandleRequest(T request, ClientData client, ServerSide.Server server); } } diff --git a/MTSC/Common/Http/ServerModules/FileServerModule.cs b/MTSC/Common/Http/ServerModules/FileServerModule.cs index 809b620..6e346cf 100644 --- a/MTSC/Common/Http/ServerModules/FileServerModule.cs +++ b/MTSC/Common/Http/ServerModules/FileServerModule.cs @@ -2,8 +2,8 @@ using System.Collections.Concurrent; using System.Collections.Generic; using System.IO; -using MTSC.Server; -using MTSC.Server.Handlers; +using MTSC.ServerSide; +using MTSC.ServerSide.Handlers; namespace MTSC.Common.Http.ServerModules { @@ -17,7 +17,7 @@ namespace MTSC.Common.Http.ServerModules this.rootFolder = Path.GetFullPath(rootFolder); } #region Interface Implementation - bool IHttpModule.HandleRequest(Server.Server server, HttpHandler handler, ClientData client, HttpRequest request, ref HttpResponse response) + bool IHttpModule.HandleRequest(ServerSide.Server server, HttpHandler handler, ClientData client, HttpRequest request, ref HttpResponse response) { if(request.Method == HttpMessage.HttpMethods.Get) { @@ -66,7 +66,7 @@ namespace MTSC.Common.Http.ServerModules return false; } - void IHttpModule.Tick(Server.Server server, HttpHandler handler) + void IHttpModule.Tick(ServerSide.Server server, HttpHandler handler) { foreach(KeyValuePair> keyValuePair in fileCache) { diff --git a/MTSC/Common/Http/ServerModules/HelloWorldModule.cs b/MTSC/Common/Http/ServerModules/HelloWorldModule.cs index 3c45f81..86090e9 100644 --- a/MTSC/Common/Http/ServerModules/HelloWorldModule.cs +++ b/MTSC/Common/Http/ServerModules/HelloWorldModule.cs @@ -1,14 +1,14 @@ using System; using System.Text; -using MTSC.Server; -using MTSC.Server.Handlers; +using MTSC.ServerSide; +using MTSC.ServerSide.Handlers; namespace MTSC.Common.Http.ServerModules { public sealed class HelloWorldModule : IHttpModule { byte[] response = Encoding.ASCII.GetBytes("Hello, World!"); - bool IHttpModule.HandleRequest(Server.Server server, HttpHandler handler, ClientData client, HttpRequest request, ref HttpResponse response) + bool IHttpModule.HandleRequest(ServerSide.Server server, HttpHandler handler, ClientData client, HttpRequest request, ref HttpResponse response) { if (request.Method == HttpMessage.HttpMethods.Get) { @@ -22,7 +22,7 @@ namespace MTSC.Common.Http.ServerModules return true; } - void IHttpModule.Tick(Server.Server server, HttpHandler handler) + void IHttpModule.Tick(ServerSide.Server server, HttpHandler handler) { } diff --git a/MTSC/Common/Http/ServerModules/Http404Module.cs b/MTSC/Common/Http/ServerModules/Http404Module.cs index b0c6fb6..f7e40f2 100644 --- a/MTSC/Common/Http/ServerModules/Http404Module.cs +++ b/MTSC/Common/Http/ServerModules/Http404Module.cs @@ -1,6 +1,6 @@ using System; -using MTSC.Server; -using MTSC.Server.Handlers; +using MTSC.ServerSide; +using MTSC.ServerSide.Handlers; namespace MTSC.Common.Http.ServerModules { @@ -17,7 +17,7 @@ namespace MTSC.Common.Http.ServerModules /// /// /// True so no other handler modifies the response, so the response contains the 404 return status code. - bool IHttpModule.HandleRequest(Server.Server server, HttpHandler handler, ClientData client, HttpRequest request, ref HttpResponse response) + bool IHttpModule.HandleRequest(ServerSide.Server server, HttpHandler handler, ClientData client, HttpRequest request, ref HttpResponse response) { if(request.Method == HttpMessage.HttpMethods.Get) { @@ -28,7 +28,7 @@ namespace MTSC.Common.Http.ServerModules return true; } - void IHttpModule.Tick(Server.Server server, HttpHandler handler) + void IHttpModule.Tick(ServerSide.Server server, HttpHandler handler) { } diff --git a/MTSC/Common/Http/ServerModules/HttpRoutingModule.cs b/MTSC/Common/Http/ServerModules/HttpRoutingModule.cs index 8cdf8e4..c334d0e 100644 --- a/MTSC/Common/Http/ServerModules/HttpRoutingModule.cs +++ b/MTSC/Common/Http/ServerModules/HttpRoutingModule.cs @@ -1,6 +1,6 @@ using MTSC.Common.Http.RoutingModules; -using MTSC.Server; -using MTSC.Server.Handlers; +using MTSC.ServerSide; +using MTSC.ServerSide.Handlers; using System; using System.Collections.Generic; using static MTSC.Common.Http.HttpMessage; @@ -9,19 +9,19 @@ namespace MTSC.Common.Http.ServerModules { public sealed class HttpRoutingModule : IHttpModule { - private static Func alwaysEnabled = (server, request, client) => RouteEnablerResponse.Accept; + private static Func alwaysEnabled = (server, request, client) => RouteEnablerResponse.Accept; private Dictionary)>> moduleDictionary = + Func)>> moduleDictionary = new Dictionary)>>(); + Func)>>(); public HttpRoutingModule() { foreach (HttpMethods method in (HttpMethods[])Enum.GetValues(typeof(HttpMethods))) { moduleDictionary[method] = new Dictionary)>(); + Func)>(); } } @@ -38,7 +38,7 @@ namespace MTSC.Common.Http.ServerModules HttpMethods method, string uri, HttpRouteBase routeModule, - Func routeEnabler) + Func routeEnabler) { moduleDictionary[method][uri] = (routeModule, routeEnabler); return this; @@ -52,7 +52,7 @@ namespace MTSC.Common.Http.ServerModules return this; } - bool IHttpModule.HandleRequest(Server.Server server, HttpHandler handler, ClientData client, HttpRequest request, ref HttpResponse response) + bool IHttpModule.HandleRequest(ServerSide.Server server, HttpHandler handler, ClientData client, HttpRequest request, ref HttpResponse response) { /* * Now find if a routing module exists. If not let other handlers try and handle the message. @@ -89,6 +89,6 @@ namespace MTSC.Common.Http.ServerModules return false; } - void IHttpModule.Tick(Server.Server server, HttpHandler handler) { } + void IHttpModule.Tick(ServerSide.Server server, HttpHandler handler) { } } } diff --git a/MTSC/Common/Http/ServerModules/IHttpModule.cs b/MTSC/Common/Http/ServerModules/IHttpModule.cs index 1670620..bade6d2 100644 --- a/MTSC/Common/Http/ServerModules/IHttpModule.cs +++ b/MTSC/Common/Http/ServerModules/IHttpModule.cs @@ -1,5 +1,5 @@ -using MTSC.Server; -using MTSC.Server.Handlers; +using MTSC.ServerSide; +using MTSC.ServerSide.Handlers; namespace MTSC.Common.Http.ServerModules { @@ -15,11 +15,11 @@ namespace MTSC.Common.Http.ServerModules /// Client data. /// Request message. /// True if no other module should handle the received request. - bool HandleRequest(Server.Server server, HttpHandler handler, ClientData client, HttpRequest request, ref HttpResponse response); + bool HandleRequest(ServerSide.Server server, HttpHandler handler, ClientData client, HttpRequest request, ref HttpResponse response); /// /// Perform periodic operations. /// /// - void Tick(Server.Server server, HttpHandler handler); + void Tick(ServerSide.Server server, HttpHandler handler); } } diff --git a/MTSC/Common/Http/ServerModules/PostModule.cs b/MTSC/Common/Http/ServerModules/PostModule.cs index fd2b18e..452695d 100644 --- a/MTSC/Common/Http/ServerModules/PostModule.cs +++ b/MTSC/Common/Http/ServerModules/PostModule.cs @@ -2,8 +2,8 @@ using System.Collections.Generic; using System.Text; using MTSC.Exceptions; -using MTSC.Server; -using MTSC.Server.Handlers; +using MTSC.ServerSide; +using MTSC.ServerSide.Handlers; namespace MTSC.Common.Http.ServerModules { @@ -81,7 +81,7 @@ namespace MTSC.Common.Http.ServerModules #endregion #region Interface Implementation - bool IHttpModule.HandleRequest(Server.Server server, HttpHandler handler, ClientData client, HttpRequest request, ref HttpResponse response) + bool IHttpModule.HandleRequest(ServerSide.Server server, HttpHandler handler, ClientData client, HttpRequest request, ref HttpResponse response) { if (request.Method == HttpMessage.HttpMethods.Post && request.Headers.ContainsHeader(HttpMessage.EntityHeaders.ContentType)) @@ -111,7 +111,7 @@ namespace MTSC.Common.Http.ServerModules } } - void IHttpModule.Tick(Server.Server server, HttpHandler handler) + void IHttpModule.Tick(ServerSide.Server server, HttpHandler handler) { } diff --git a/MTSC/Common/WebSockets/ServerModules/BroadcastModule.cs b/MTSC/Common/WebSockets/ServerModules/BroadcastModule.cs index 536220f..2c0f18b 100644 --- a/MTSC/Common/WebSockets/ServerModules/BroadcastModule.cs +++ b/MTSC/Common/WebSockets/ServerModules/BroadcastModule.cs @@ -1,21 +1,21 @@ -using MTSC.Server; -using MTSC.Server.Handlers; +using MTSC.ServerSide; +using MTSC.ServerSide.Handlers; namespace MTSC.Common.WebSockets.ServerModules { public sealed class BroadcastModule : IWebsocketModule { - void IWebsocketModule.ConnectionClosed(Server.Server server, WebsocketHandler handler, ClientData client) + void IWebsocketModule.ConnectionClosed(ServerSide.Server server, WebsocketHandler handler, ClientData client) { } - void IWebsocketModule.ConnectionInitialized(Server.Server server, WebsocketHandler handler, ClientData client) + void IWebsocketModule.ConnectionInitialized(ServerSide.Server server, WebsocketHandler handler, ClientData client) { } - bool IWebsocketModule.HandleReceivedMessage(Server.Server server, WebsocketHandler handler, ClientData client, WebsocketMessage receivedMessage) + bool IWebsocketModule.HandleReceivedMessage(ServerSide.Server server, WebsocketHandler handler, ClientData client, WebsocketMessage receivedMessage) { receivedMessage.Masked = false; //receivedMessage.Opcode = WebsocketMessage.Opcodes.Text; diff --git a/MTSC/Common/WebSockets/ServerModules/EchoModule.cs b/MTSC/Common/WebSockets/ServerModules/EchoModule.cs index 9e58bb0..1b78686 100644 --- a/MTSC/Common/WebSockets/ServerModules/EchoModule.cs +++ b/MTSC/Common/WebSockets/ServerModules/EchoModule.cs @@ -1,5 +1,5 @@ -using MTSC.Server; -using MTSC.Server.Handlers; +using MTSC.ServerSide; +using MTSC.ServerSide.Handlers; namespace MTSC.Common.WebSockets.ServerModules { @@ -12,18 +12,18 @@ namespace MTSC.Common.WebSockets.ServerModules } #endregion #region Interface Implementation - bool IWebsocketModule.HandleReceivedMessage(Server.Server server, WebsocketHandler handler, ClientData client, WebsocketMessage receivedMessage) + bool IWebsocketModule.HandleReceivedMessage(ServerSide.Server server, WebsocketHandler handler, ClientData client, WebsocketMessage receivedMessage) { SendMessage(handler, client, receivedMessage); return false; } - void IWebsocketModule.ConnectionClosed(Server.Server server, WebsocketHandler handler, ClientData client) + void IWebsocketModule.ConnectionClosed(ServerSide.Server server, WebsocketHandler handler, ClientData client) { } - void IWebsocketModule.ConnectionInitialized(Server.Server server, WebsocketHandler handler, ClientData client) + void IWebsocketModule.ConnectionInitialized(ServerSide.Server server, WebsocketHandler handler, ClientData client) { } diff --git a/MTSC/Common/WebSockets/ServerModules/IWebsocketModule.cs b/MTSC/Common/WebSockets/ServerModules/IWebsocketModule.cs index 384544d..46d6730 100644 --- a/MTSC/Common/WebSockets/ServerModules/IWebsocketModule.cs +++ b/MTSC/Common/WebSockets/ServerModules/IWebsocketModule.cs @@ -1,5 +1,5 @@ -using MTSC.Server; -using MTSC.Server.Handlers; +using MTSC.ServerSide; +using MTSC.ServerSide.Handlers; using System; using System.Collections.Generic; using System.Text; @@ -14,7 +14,7 @@ namespace MTSC.Common.WebSockets.ServerModules /// Server object. /// Handler currently processing. /// Client object. - void ConnectionInitialized(Server.Server server, WebsocketHandler handler, ClientData client); + void ConnectionInitialized(ServerSide.Server server, WebsocketHandler handler, ClientData client); /// /// Handle a received message. /// @@ -22,13 +22,13 @@ namespace MTSC.Common.WebSockets.ServerModules /// Bytes of the message. /// Client data. /// True if no other module should process the message. - bool HandleReceivedMessage(Server.Server server, WebsocketHandler handler, ClientData client, WebsocketMessage receivedMessage); + bool HandleReceivedMessage(ServerSide.Server server, WebsocketHandler handler, ClientData client, WebsocketMessage receivedMessage); /// /// Called when a connection has been closed. /// /// Server object. /// Handler currently processing. /// Client object. - void ConnectionClosed(Server.Server server, WebsocketHandler handler, ClientData client); + void ConnectionClosed(ServerSide.Server server, WebsocketHandler handler, ClientData client); } } diff --git a/MTSC/Server/Handlers/BroadcastHandler.cs b/MTSC/ServerSide/Handlers/BroadcastHandler.cs similarity index 97% rename from MTSC/Server/Handlers/BroadcastHandler.cs rename to MTSC/ServerSide/Handlers/BroadcastHandler.cs index 592c61f..257054f 100644 --- a/MTSC/Server/Handlers/BroadcastHandler.cs +++ b/MTSC/ServerSide/Handlers/BroadcastHandler.cs @@ -1,6 +1,6 @@ using System.Text; -namespace MTSC.Server.Handlers +namespace MTSC.ServerSide.Handlers { /// /// Broadcast handler. diff --git a/MTSC/Server/Handlers/EncryptionHandler.cs b/MTSC/ServerSide/Handlers/EncryptionHandler.cs similarity index 99% rename from MTSC/Server/Handlers/EncryptionHandler.cs rename to MTSC/ServerSide/Handlers/EncryptionHandler.cs index e70cb53..a3822d4 100644 --- a/MTSC/Server/Handlers/EncryptionHandler.cs +++ b/MTSC/ServerSide/Handlers/EncryptionHandler.cs @@ -4,7 +4,7 @@ using System.IO; using System.Security.Cryptography; using System.Text; -namespace MTSC.Server.Handlers +namespace MTSC.ServerSide.Handlers { /// /// Handler that encrypts the communication. diff --git a/MTSC/Server/Handlers/HttpHandler.cs b/MTSC/ServerSide/Handlers/HttpHandler.cs similarity index 99% rename from MTSC/Server/Handlers/HttpHandler.cs rename to MTSC/ServerSide/Handlers/HttpHandler.cs index a2cc85c..34c1c66 100644 --- a/MTSC/Server/Handlers/HttpHandler.cs +++ b/MTSC/ServerSide/Handlers/HttpHandler.cs @@ -5,7 +5,7 @@ using System; using System.Collections.Concurrent; using System.Collections.Generic; -namespace MTSC.Server.Handlers +namespace MTSC.ServerSide.Handlers { /// /// Handler for handling server http requests. diff --git a/MTSC/Server/Handlers/IHandler.cs b/MTSC/ServerSide/Handlers/IHandler.cs similarity index 98% rename from MTSC/Server/Handlers/IHandler.cs rename to MTSC/ServerSide/Handlers/IHandler.cs index c6802e0..79e27d4 100644 --- a/MTSC/Server/Handlers/IHandler.cs +++ b/MTSC/ServerSide/Handlers/IHandler.cs @@ -3,7 +3,7 @@ using System.Collections.Generic; using System.Net.Sockets; using System.Text; -namespace MTSC.Server.Handlers +namespace MTSC.ServerSide.Handlers { /// /// Interface for communication handlers. diff --git a/MTSC/Server/Handlers/WebsocketHandler.cs b/MTSC/ServerSide/Handlers/WebsocketHandler.cs similarity index 99% rename from MTSC/Server/Handlers/WebsocketHandler.cs rename to MTSC/ServerSide/Handlers/WebsocketHandler.cs index 51e2d65..6d52a8c 100644 --- a/MTSC/Server/Handlers/WebsocketHandler.cs +++ b/MTSC/ServerSide/Handlers/WebsocketHandler.cs @@ -7,7 +7,7 @@ using System.Collections.Generic; using System.Security.Cryptography; using System.Text; -namespace MTSC.Server.Handlers +namespace MTSC.ServerSide.Handlers { public sealed class WebsocketHandler : IHandler { diff --git a/MTSC/Server/Resources/IResource.cs b/MTSC/ServerSide/Resources/IResource.cs similarity index 54% rename from MTSC/Server/Resources/IResource.cs rename to MTSC/ServerSide/Resources/IResource.cs index 1fd1794..ba9ad22 100644 --- a/MTSC/Server/Resources/IResource.cs +++ b/MTSC/ServerSide/Resources/IResource.cs @@ -1,4 +1,4 @@ -namespace MTSC.Server.Resources +namespace MTSC.ServerSide.Resources { public interface IResource { diff --git a/MTSC/Server/Server.cs b/MTSC/ServerSide/Server.cs similarity index 98% rename from MTSC/Server/Server.cs rename to MTSC/ServerSide/Server.cs index 7ea89ea..c5498de 100644 --- a/MTSC/Server/Server.cs +++ b/MTSC/ServerSide/Server.cs @@ -1,8 +1,8 @@ using MTSC.Exceptions; using MTSC.Logging; -using MTSC.Server.Handlers; -using MTSC.Server.Resources; -using MTSC.Server.UsageMonitors; +using MTSC.ServerSide.Handlers; +using MTSC.ServerSide.Resources; +using MTSC.ServerSide.UsageMonitors; using System; using System.Collections.Concurrent; using System.Collections.Generic; @@ -13,7 +13,7 @@ using System.Security.Authentication; using System.Security.Cryptography.X509Certificates; using System.Threading.Tasks; -namespace MTSC.Server +namespace MTSC.ServerSide { /// /// Basic server class to handle TCP connections. @@ -56,7 +56,7 @@ namespace MTSC.Server /// /// Returns the state of the server. /// - public bool Running { get => running; } + public bool Running { get => listener != null; } public bool RequestClientCertificate { get; set; } = true; /// /// List of clients currently connected to the server. @@ -512,6 +512,8 @@ namespace MTSC.Server } } } + listener.Stop(); + listener = null; } /// /// Runs the server async. diff --git a/MTSC/Server/UsageMonitors/CPUUsageLimiter.cs b/MTSC/ServerSide/UsageMonitors/CPUUsageLimiter.cs similarity index 98% rename from MTSC/Server/UsageMonitors/CPUUsageLimiter.cs rename to MTSC/ServerSide/UsageMonitors/CPUUsageLimiter.cs index 618b90a..0d64c73 100644 --- a/MTSC/Server/UsageMonitors/CPUUsageLimiter.cs +++ b/MTSC/ServerSide/UsageMonitors/CPUUsageLimiter.cs @@ -3,7 +3,7 @@ using System.Diagnostics; using System.Threading; using System.Threading.Tasks; -namespace MTSC.Server.UsageMonitors +namespace MTSC.ServerSide.UsageMonitors { /// /// Implementation of that limits CPU usage to a given value. diff --git a/MTSC/Server/UsageMonitors/IServerUsageMonitor.cs b/MTSC/ServerSide/UsageMonitors/IServerUsageMonitor.cs similarity index 94% rename from MTSC/Server/UsageMonitors/IServerUsageMonitor.cs rename to MTSC/ServerSide/UsageMonitors/IServerUsageMonitor.cs index c859542..6a2e33a 100644 --- a/MTSC/Server/UsageMonitors/IServerUsageMonitor.cs +++ b/MTSC/ServerSide/UsageMonitors/IServerUsageMonitor.cs @@ -2,7 +2,7 @@ using System.Collections.Generic; using System.Text; -namespace MTSC.Server.UsageMonitors +namespace MTSC.ServerSide.UsageMonitors { /// /// Interface for server usage monitors. diff --git a/MTSC/Server/UsageMonitors/TickrateEnforcer.cs b/MTSC/ServerSide/UsageMonitors/TickrateEnforcer.cs similarity index 97% rename from MTSC/Server/UsageMonitors/TickrateEnforcer.cs rename to MTSC/ServerSide/UsageMonitors/TickrateEnforcer.cs index e3acaa0..d25567a 100644 --- a/MTSC/Server/UsageMonitors/TickrateEnforcer.cs +++ b/MTSC/ServerSide/UsageMonitors/TickrateEnforcer.cs @@ -1,7 +1,7 @@ using System; using System.Threading; -namespace MTSC.Server.UsageMonitors +namespace MTSC.ServerSide.UsageMonitors { /// /// Implementation of that enforces a specified tickrate.