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);
}
}*/
}