namespace Sick.SafetyScanners.DataStructures;
///
/// Represents a PacketBuffer with a parsed DatagramHeader
/// Used for merging fragmented UDP packets
///
public sealed class ParsedPacketBuffer
{
///
/// Gets the packet buffer
///
public PacketBuffer PacketBuffer { get; init; }
///
/// Gets the parsed datagram header
///
public DatagramHeader DatagramHeader { get; init; }
public ParsedPacketBuffer(PacketBuffer packetBuffer, DatagramHeader datagramHeader)
{
PacketBuffer = packetBuffer ?? throw new ArgumentNullException(nameof(packetBuffer));
DatagramHeader = datagramHeader ?? throw new ArgumentNullException(nameof(datagramHeader));
}
///
/// Compares two ParsedPacketBuffer instances by fragment offset for sorting
///
public static int CompareByOffset(ParsedPacketBuffer x, ParsedPacketBuffer y)
{
if (x == null && y == null) return 0;
if (x == null) return -1;
if (y == null) return 1;
return x.DatagramHeader.FragmentOffset.CompareTo(y.DatagramHeader.FragmentOffset);
}
}