Compare commits

..

4 Commits

Author SHA1 Message Date
copilot-swe-agent[bot]
6b58dbd7d6 Fix thread-safety issue in GetRouteToSource - snapshot TieLineCollection before enumeration
Co-authored-by: ngenovese11 <23391587+ngenovese11@users.noreply.github.com>
2026-03-18 19:18:12 +00:00
copilot-swe-agent[bot]
de70740e3b Initial plan 2026-03-18 19:14:43 +00:00
Evan DiLallo
305a466b1b Merge pull request #1395 from PepperDash/fix/implement-IKeyed-on-BridgeBase
feat: implement constructor for BridgeApi with key and name parameters
2026-03-12 16:30:51 -04:00
Neil Dorin
5a07e837ee feat: implement constructor for BridgeApi with key and name parameters 2026-03-12 14:27:21 -06:00
2 changed files with 18 additions and 3 deletions

View File

@@ -30,6 +30,17 @@ namespace PepperDash.Essentials.Core.Bridges
{
}
/// <summary>
/// Constructor
/// </summary>
/// <param name="key"></param>
/// <param name="name"></param>
protected BridgeApi(string key, string name) :
base(key, name)
{
}
}
/// <summary>
@@ -58,7 +69,7 @@ namespace PepperDash.Essentials.Core.Bridges
/// <param name="dc">Device configuration</param>
/// <param name="eisc">EISC instance</param>
public EiscApiAdvanced(DeviceConfig dc, BasicTriList eisc) :
base(dc.Key)
base(dc.Key, dc.Name)
{
JoinMaps = new Dictionary<string, JoinMapBaseAdvanced>();

View File

@@ -339,17 +339,21 @@ namespace PepperDash.Essentials.Core
RoutingInputPort goodInputPort = null;
// Take a snapshot to avoid InvalidOperationException if TieLineCollection.Default is
// modified concurrently (e.g. NVX tie line registration during route requests).
var tieLines = TieLineCollection.Default.ToList();
IEnumerable<TieLine> destinationTieLines;
TieLine directTie = null;
if (destinationPort == null)
{
destinationTieLines = TieLineCollection.Default.Where(t =>
destinationTieLines = tieLines.Where(t =>
t.DestinationPort.ParentDevice.Key == destination.Key && (t.Type.HasFlag(signalType) || signalType == eRoutingSignalType.AudioVideo));
}
else
{
destinationTieLines = TieLineCollection.Default.Where(t => t.DestinationPort.ParentDevice.Key == destination.Key && t.DestinationPort.Key == destinationPort.Key && (t.Type.HasFlag(signalType)));
destinationTieLines = tieLines.Where(t => t.DestinationPort.ParentDevice.Key == destination.Key && t.DestinationPort.Key == destinationPort.Key && (t.Type.HasFlag(signalType)));
}
// find the TieLine without a port