From 58c3d83c94dfaba6b90a8f09a18ac6361d8e9d39 Mon Sep 17 00:00:00 2001
From: Markus Quaritsch <markus.quaritsch@tugraz.at>
Date: Fri, 17 Jul 2015 08:20:12 +0200
Subject: [PATCH] add property in IResponse to identify type (to be used in
 switch statements for example)

---
 VectoCore/Models/Connector/Ports/IResponse.cs | 12 +++++++
 .../Models/Connector/Ports/Impl/Response.cs   | 33 +++++++++++++++++--
 2 files changed, 43 insertions(+), 2 deletions(-)

diff --git a/VectoCore/Models/Connector/Ports/IResponse.cs b/VectoCore/Models/Connector/Ports/IResponse.cs
index 0faf538ddc..7cf8de2e03 100644
--- a/VectoCore/Models/Connector/Ports/IResponse.cs
+++ b/VectoCore/Models/Connector/Ports/IResponse.cs
@@ -3,11 +3,23 @@ using System.Security.Cryptography.X509Certificates;
 
 namespace TUGraz.VectoCore.Models.Connector.Ports
 {
+	public enum ResponseType
+	{
+		Success,
+		CycleFinished,
+		FailOverload,
+		FailTimeInterval,
+		DrivingCycleDistanceExceeded,
+	}
+
+
 	/// <summary>
 	/// Defines an interface for a Response.
 	/// </summary>
 	public interface IResponse
 	{
 		TimeSpan SimulationInterval { get; set; }
+
+		ResponseType ResponseType { get; }
 	}
 }
\ No newline at end of file
diff --git a/VectoCore/Models/Connector/Ports/Impl/Response.cs b/VectoCore/Models/Connector/Ports/Impl/Response.cs
index a95af72957..191fc3b711 100644
--- a/VectoCore/Models/Connector/Ports/Impl/Response.cs
+++ b/VectoCore/Models/Connector/Ports/Impl/Response.cs
@@ -6,17 +6,31 @@ namespace TUGraz.VectoCore.Models.Connector.Ports.Impl
 	public abstract class AbstractResponse : IResponse
 	{
 		public TimeSpan SimulationInterval { get; set; }
+
+		public abstract ResponseType ResponseType { get; }
 	}
 
 	/// <summary>
 	/// Response when the Cycle is finished.
 	/// </summary>
-	public class ResponseCycleFinished : AbstractResponse {}
+	public class ResponseCycleFinished : AbstractResponse
+	{
+		public override ResponseType ResponseType
+		{
+			get { return ResponseType.CycleFinished; }
+		}
+	}
 
 	/// <summary>
 	/// Response when a request was successful.
 	/// </summary>
-	public class ResponseSuccess : AbstractResponse {}
+	public class ResponseSuccess : AbstractResponse
+	{
+		public override ResponseType ResponseType
+		{
+			get { return ResponseType.Success; }
+		}
+	}
 
 	/// <summary>
 	/// Response when the request resulted in an engine overload. 
@@ -25,6 +39,11 @@ namespace TUGraz.VectoCore.Models.Connector.Ports.Impl
 	{
 		public double Delta { get; set; }
 		public double Gradient { get; set; }
+
+		public override ResponseType ResponseType
+		{
+			get { return ResponseType.FailOverload; }
+		}
 	}
 
 	/// <summary>
@@ -33,10 +52,20 @@ namespace TUGraz.VectoCore.Models.Connector.Ports.Impl
 	public class ResponseFailTimeInterval : AbstractResponse
 	{
 		public TimeSpan DeltaT { get; set; }
+
+		public override ResponseType ResponseType
+		{
+			get { return ResponseType.FailTimeInterval; }
+		}
 	}
 
 	public class ResponseDrivingCycleDistanceExceeded : AbstractResponse
 	{
 		public Meter MaxDistance { get; set; }
+
+		public override ResponseType ResponseType
+		{
+			get { return ResponseType.DrivingCycleDistanceExceeded; }
+		}
 	}
 }
\ No newline at end of file
-- 
GitLab