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