diff --git a/MTSC/Client/Client.cs b/MTSC/Client/Client.cs
index f158e87..9292935 100644
--- a/MTSC/Client/Client.cs
+++ b/MTSC/Client/Client.cs
@@ -62,7 +62,18 @@ namespace MTSC.Client
{
foreach (ILogger logger in loggers)
{
- logger.Log(log + "\n");
+ logger.Log(log);
+ }
+ }
+ ///
+ /// Logs the debug message onto the associated loggers.
+ ///
+ ///
+ public void LogDebug(string debugMessage)
+ {
+ foreach (ILogger logger in loggers)
+ {
+ logger.LogDebug(debugMessage);
}
}
///
@@ -195,7 +206,7 @@ namespace MTSC.Client
* When a message has been received, process it.
*/
Message message = CommunicationPrimitives.GetMessage(tcpClient);
- Log("Received a message of size: " + message.MessageLength);
+ LogDebug("Received a message of size: " + message.MessageLength);
/*
* Preprocess message.
*/
@@ -224,7 +235,9 @@ namespace MTSC.Client
}
catch(Exception e)
{
- foreach(IExceptionHandler exceptionHandler in exceptionHandlers)
+ LogDebug("Exception: " + e.Message);
+ LogDebug("Stacktrace: " + e.StackTrace);
+ foreach (IExceptionHandler exceptionHandler in exceptionHandlers)
{
exceptionHandler.HandleException(e);
}
diff --git a/MTSC/Client/Handlers/BroadcastHandler.cs b/MTSC/Client/Handlers/BroadcastHandler.cs
index a11126a..cbf5040 100644
--- a/MTSC/Client/Handlers/BroadcastHandler.cs
+++ b/MTSC/Client/Handlers/BroadcastHandler.cs
@@ -34,7 +34,8 @@ namespace MTSC.Client.Handlers
public bool HandleReceivedMessage(TcpClient client, Message message)
{
- managedClient.Log("Broadcast: " + ASCIIEncoding.ASCII.GetString(message.MessageBytes));
+ managedClient.LogDebug("Broadcast: " + ASCIIEncoding.ASCII.GetString(message.MessageBytes));
+ managedClient.Log(">" + ASCIIEncoding.ASCII.GetString(message.MessageBytes));
return false;
}
diff --git a/MTSC/Logging/ConsoleLogger.cs b/MTSC/Logging/ConsoleLogger.cs
index 4d3d8ac..2a912bf 100644
--- a/MTSC/Logging/ConsoleLogger.cs
+++ b/MTSC/Logging/ConsoleLogger.cs
@@ -18,5 +18,14 @@ namespace MTSC.Logging
Console.WriteLine(message);
return false;
}
+ ///
+ /// Ignores debug messages.
+ ///
+ ///
+ /// False
+ public bool LogDebug(string message)
+ {
+ return false;
+ }
}
}
diff --git a/MTSC/Logging/DebugConsoleLogger.cs b/MTSC/Logging/DebugConsoleLogger.cs
new file mode 100644
index 0000000..a6a4044
--- /dev/null
+++ b/MTSC/Logging/DebugConsoleLogger.cs
@@ -0,0 +1,29 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace MTSC.Logging
+{
+ public class DebugConsoleLogger : ILogger
+ {
+ ///
+ /// Ignores simple logging messages.
+ ///
+ ///
+ /// False
+ public bool Log(string message)
+ {
+ return false;
+ }
+ ///
+ /// Outputs the debug message to console.
+ ///
+ /// Message to be output.
+ /// False
+ public bool LogDebug(string message)
+ {
+ Console.WriteLine(message);
+ return false;
+ }
+ }
+}
diff --git a/MTSC/Logging/ILogger.cs b/MTSC/Logging/ILogger.cs
index 961ca88..050a128 100644
--- a/MTSC/Logging/ILogger.cs
+++ b/MTSC/Logging/ILogger.cs
@@ -15,5 +15,11 @@ namespace MTSC.Logging
/// Message to be received.
/// True if the message has been logged and no other logger should log this message.
bool Log(string message);
+ ///
+ /// Logs the received debug message.
+ ///
+ /// Debug message to be logged.
+ /// True if the message has been logged and no other logger should log this message.
+ bool LogDebug(string message);
}
}
diff --git a/MTSC/Server/Handlers/BroadcastHandler.cs b/MTSC/Server/Handlers/BroadcastHandler.cs
index 732b195..9bd1187 100644
--- a/MTSC/Server/Handlers/BroadcastHandler.cs
+++ b/MTSC/Server/Handlers/BroadcastHandler.cs
@@ -28,8 +28,8 @@ namespace MTSC.Server.Handlers
public bool HandleReceivedMessage(ClientStruct client, Message message)
{
- managedServer.Log("Broadcast: " + ASCIIEncoding.ASCII.GetString(message.MessageBytes));
- managedServer.Log("From: " + client.TcpClient.Client.RemoteEndPoint.ToString());
+ managedServer.LogDebug("Broadcast: " + ASCIIEncoding.ASCII.GetString(message.MessageBytes));
+ managedServer.LogDebug("From: " + client.TcpClient.Client.RemoteEndPoint.ToString());
foreach(ClientStruct clientStruct in managedServer.Clients)
{
managedServer.QueueMessage(clientStruct, message.MessageBytes);
diff --git a/MTSC/Server/Handlers/HTTPHandler.cs b/MTSC/Server/Handlers/HTTPHandler.cs
new file mode 100644
index 0000000..6859617
--- /dev/null
+++ b/MTSC/Server/Handlers/HTTPHandler.cs
@@ -0,0 +1,65 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace MTSC.Server.Handlers
+{
+ class HTTPHandler
+ {
+ public enum Methods
+ {
+ OPTIONS,
+ GET,
+ HEAD,
+ POST,
+ PUT,
+ DELETE,
+ TRACE,
+ CONNECT,
+ extension_method
+ }
+ public enum StatusCode
+ {
+ Continue = 100,
+ SwitchingProtocols = 101,
+ OK = 200,
+ Created = 201,
+ Accepted = 202,
+ NonAuthoritativeInformation = 203,
+ NoContent = 204,
+ ResetContent = 205,
+ PartialContent = 206,
+ MultipleChoices = 300,
+ MovedPermanently = 301,
+ Found = 302,
+ SeeOther = 303,
+ NotModified = 304,
+ UseProxy = 305,
+ TemporaryRedirect = 307,
+ BadRequest = 400,
+ Unauthorized = 401,
+ PaymentRequired = 402,
+ Forbidden = 403,
+ NotFound = 404,
+ MethodNotAllowed = 405,
+ NotAcceptable = 406,
+ ProxyAuthenticationRequired = 407,
+ RequestTimeout = 408,
+ Conflict = 409,
+ Gone = 410,
+ LengthRequired = 411,
+ PreconditionFailed = 412,
+ RequestEntityTooLarge = 413,
+ RequestURITooLarge = 414,
+ UnsupportedMediaType = 415,
+ RequestRangeNotSatisfiable = 416,
+ ExpectationFailed = 417,
+ InternalServerError = 500,
+ NotImplemented = 501,
+ BadGateway = 502,
+ ServiceUnavailable = 503,
+ GatewayTimeout = 504,
+ HttpVersionNotSupported = 505
+ }
+ }
+}
diff --git a/MTSC/Server/Server.cs b/MTSC/Server/Server.cs
index 2af9e0b..5fbeb2b 100644
--- a/MTSC/Server/Server.cs
+++ b/MTSC/Server/Server.cs
@@ -6,6 +6,7 @@ using System.Collections.Generic;
using System.Net;
using System.Net.Sockets;
using System.Text;
+using System.Threading;
using System.Threading.Tasks;
namespace MTSC.Server
@@ -115,7 +116,18 @@ namespace MTSC.Server
{
foreach (ILogger logger in loggers)
{
- logger.Log(log + "\n");
+ logger.Log(log);
+ }
+ }
+ ///
+ /// Adds a debug message to be logged by the associated loggers.
+ ///
+ /// Debug message to be logged
+ public void LogDebug(string debugMessage)
+ {
+ foreach (ILogger logger in loggers)
+ {
+ logger.LogDebug(debugMessage);
}
}
///
@@ -173,7 +185,7 @@ namespace MTSC.Server
if (client.TcpClient.Available > 0)
{
Message message = CommunicationPrimitives.GetMessage(client.TcpClient);
- Log("Received message from " + client.TcpClient.Client.RemoteEndPoint.ToString() +
+ LogDebug("Received message from " + client.TcpClient.Client.RemoteEndPoint.ToString() +
"\nMessage length: " + message.MessageLength);
foreach (IHandler handler in handlers)
{
@@ -190,9 +202,15 @@ namespace MTSC.Server
}
}
}
+ else
+ {
+ Thread.Sleep(100);
+ }
}
catch(Exception e)
{
+ LogDebug("Exception: " + e.Message);
+ LogDebug("Stacktrace: " + e.StackTrace);
foreach(IExceptionHandler exceptionHandler in exceptionHandlers)
{
if (exceptionHandler.HandleException(e))