namespace PepperDash.Essentials.Core { /// /// Represents a single switching step within a larger route, detailing the switching device, input port, and optionally the output port. /// public class RouteSwitchDescriptor { /// /// The device performing the switch (derived from the InputPort's parent). /// public IRoutingInputs SwitchingDevice { get { return InputPort?.ParentDevice; } } /// /// The output port being switched from (relevant for matrix switchers). Null for sink devices. /// public RoutingOutputPort OutputPort { get; set; } /// /// The input port being switched to. /// public RoutingInputPort InputPort { get; set; } /// /// Initializes a new instance of the class for sink devices (no output port). /// /// The input port being switched to. public RouteSwitchDescriptor(RoutingInputPort inputPort) { InputPort = inputPort; } /// /// Initializes a new instance of the class for matrix switchers. /// /// The output port being switched from. /// The input port being switched to. public RouteSwitchDescriptor(RoutingOutputPort outputPort, RoutingInputPort inputPort) { InputPort = inputPort; OutputPort = outputPort; } /// /// Returns a string representation of the route switch descriptor. /// /// A string describing the switch operation. public override string ToString() { if (SwitchingDevice is IRouting) return $"{(SwitchingDevice != null ? SwitchingDevice.Key : "No Device")} switches output {(OutputPort != null ? OutputPort.Key : "No output port")} to input {(InputPort != null ? InputPort.Key : "No input port")}"; else return $"{(SwitchingDevice != null ? SwitchingDevice.Key : "No Device")} switches to input {(InputPort != null ? InputPort.Key : "No input port")}"; } } /*/// /// Represents an individual link for a route /// public class RouteSwitchDescriptor { public IRoutingInputs SwitchingDevice { get { return InputPort.ParentDevice; } } public RoutingOutputPort OutputPort { get; set; } public RoutingInputPort InputPort { get; set; } public RouteSwitchDescriptor(RoutingInputPort inputPort) { InputPort = inputPort; } public RouteSwitchDescriptor(RoutingOutputPort outputPort, RoutingInputPort inputPort) { InputPort = inputPort; OutputPort = outputPort; } public override string ToString() { if (SwitchingDevice is IRouting) return string.Format("{0} switches output '{1}' to input '{2}'", SwitchingDevice.Key, OutputPort.Selector, InputPort.Selector); else return string.Format("{0} switches to input '{1}'", SwitchingDevice.Key, InputPort.Selector); } }*/ }