From 134e8ba02e87724e69ceacf6c11b88fce68839e2 Mon Sep 17 00:00:00 2001 From: Nick Genovese Date: Tue, 26 Nov 2024 15:57:56 -0500 Subject: [PATCH] fix: remove null route when releasing route --- .../Routing/RouteDescriptor.cs | 70 +++++++++---------- 1 file changed, 34 insertions(+), 36 deletions(-) diff --git a/src/PepperDash.Essentials.Core/Routing/RouteDescriptor.cs b/src/PepperDash.Essentials.Core/Routing/RouteDescriptor.cs index ee8b69ac..b7dade4c 100644 --- a/src/PepperDash.Essentials.Core/Routing/RouteDescriptor.cs +++ b/src/PepperDash.Essentials.Core/Routing/RouteDescriptor.cs @@ -12,19 +12,19 @@ namespace PepperDash.Essentials.Core /// Represents an collection of individual route steps between Source and Destination /// public class RouteDescriptor - { - public IRoutingInputs Destination { get; private set; } + { + public IRoutingInputs Destination { get; private set; } public RoutingInputPort InputPort { get; private set; } - public IRoutingOutputs Source { get; private set; } - public eRoutingSignalType SignalType { get; private set; } - public List Routes { get; private set; } + public IRoutingOutputs Source { get; private set; } + public eRoutingSignalType SignalType { get; private set; } + public List Routes { get; private set; } - public RouteDescriptor(IRoutingOutputs source, IRoutingInputs destination, eRoutingSignalType signalType):this(source,destination, null, signalType) - { - } + public RouteDescriptor(IRoutingOutputs source, IRoutingInputs destination, eRoutingSignalType signalType) : this(source, destination, null, signalType) + { + } public RouteDescriptor(IRoutingOutputs source, IRoutingInputs destination, RoutingInputPort inputPort, eRoutingSignalType signalType) { @@ -35,20 +35,20 @@ public RouteDescriptor(IRoutingOutputs source, IRoutingInputs destination, Routi Routes = new List(); } - /// - /// Executes all routes described in this collection. Typically called via - /// extension method IRoutingInputs.ReleaseAndMakeRoute() - /// - public void ExecuteRoutes() - { - foreach (var route in Routes) - { - Debug.LogMessage(LogEventLevel.Verbose, "ExecuteRoutes: {0}",null, route.ToString()); + /// + /// Executes all routes described in this collection. Typically called via + /// extension method IRoutingInputs.ReleaseAndMakeRoute() + /// + public void ExecuteRoutes() + { + foreach (var route in Routes) + { + Debug.LogMessage(LogEventLevel.Verbose, "ExecuteRoutes: {0}", null, route.ToString()); if (route.SwitchingDevice is IRoutingSinkWithSwitching sink) - { + { sink.ExecuteSwitch(route.InputPort.Selector); - continue; + continue; } if (route.SwitchingDevice is IRouting switchingDevice) @@ -59,15 +59,15 @@ public void ExecuteRoutes() Debug.LogMessage(LogEventLevel.Verbose, "Output port {0} routing. Count={1}", null, route.OutputPort.Key, route.OutputPort.InUseTracker.InUseCountFeedback.UShortValue); } - } - } - - /// - /// Releases all routes in this collection. Typically called via - /// extension method IRoutingInputs.ReleaseAndMakeRoute() - /// - public void ReleaseRoutes() - { + } + } + + /// + /// Releases all routes in this collection. Typically called via + /// extension method IRoutingInputs.ReleaseAndMakeRoute() + /// + public void ReleaseRoutes() + { foreach (var route in Routes.Where(r => r.SwitchingDevice is IRouting)) { if (route.SwitchingDevice is IRouting switchingDevice) @@ -77,8 +77,6 @@ public void ReleaseRoutes() continue; } - switchingDevice.ExecuteSwitch(null, route.OutputPort.Selector, SignalType); - if (route.OutputPort.InUseTracker != null) { route.OutputPort.InUseTracker.RemoveUser(Destination, "destination-" + SignalType); @@ -92,12 +90,12 @@ public void ReleaseRoutes() } } - public override string ToString() - { - var routesText = Routes.Select(r => r.ToString()).ToArray(); - return string.Format("Route table from {0} to {1}:\r{2}", Source.Key, Destination.Key, string.Join("\r", routesText)); - } - } + public override string ToString() + { + var routesText = Routes.Select(r => r.ToString()).ToArray(); + return string.Format("Route table from {0} to {1}:\r{2}", Source.Key, Destination.Key, string.Join("\r", routesText)); + } + } /*/// /// Represents an collection of individual route steps between Source and Destination