@@ 103,16 103,28 @@ public class PacketTypesRepository : IPacketTypesRepository
return _headerToPacket[preferredSource][header];
}
- var foundPackets = _headerToPacket.Values
- .Where(x => x.ContainsKey(header))
- .Select(x => x[header]).ToArray();
+ PacketInfo? info = null;
+ foreach (var dict in _headerToPacket.Values)
+ {
+ if (dict.ContainsKey(header))
+ {
+ if (info is null)
+ {
+ info = dict[header];
+ }
+ else
+ {
+ return new AmbiguousHeaderError(header, null, new PacketInfo[] { dict[header], info });
+ }
+ }
+ }
- return foundPackets.Length switch
+ if (info is null)
{
- 1 => foundPackets[0],
- 0 => new PacketConverterNotFoundError(header),
- _ => new AmbiguousHeaderError(header, null, foundPackets)
- };
+ return new PacketConverterNotFoundError(header);
+ }
+
+ return info;
}
/// <summary>