Files
Denso/srcs/RobotNet10/RobotApp/Communication/Sick.SafetyScanners/DataStructures/ParsedPacketBuffer.cs
2026-07-03 16:31:37 +07:00

38 lines
1.2 KiB
C#

namespace Sick.SafetyScanners.DataStructures;
/// <summary>
/// Represents a PacketBuffer with a parsed DatagramHeader
/// Used for merging fragmented UDP packets
/// </summary>
public sealed class ParsedPacketBuffer
{
/// <summary>
/// Gets the packet buffer
/// </summary>
public PacketBuffer PacketBuffer { get; init; }
/// <summary>
/// Gets the parsed datagram header
/// </summary>
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));
}
/// <summary>
/// Compares two ParsedPacketBuffer instances by fragment offset for sorting
/// </summary>
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);
}
}