fromBytes static method

AckFrame fromBytes(
  1. ByteData view,
  2. int offset
)
override

A factory constructor to deserialize a frame from bytes.

Implementation

static AckFrame fromBytes(ByteData view, int offset) {
  int currentOffset = offset;

  // Skip type, already handled by Frame.fromBytes
  currentOffset += 1;

  final largestAcked = view.getUint32(currentOffset, Endian.big);
  currentOffset += 4;

  final ackDelay = view.getUint16(currentOffset, Endian.big);
  currentOffset += 2;

  final ackRangeCount = view.getUint8(currentOffset);
  currentOffset += 1;

  final firstAckRangeLength = view.getUint32(currentOffset, Endian.big);
  currentOffset += 4;

  final ranges = <AckRange>[];
  for (int i = 0; i < ackRangeCount; i++) {
    final gap = view.getUint8(currentOffset);
    currentOffset += 1;
    final length = view.getUint32(currentOffset, Endian.big);
    currentOffset += 4;
    ranges.add(AckRange(gap: gap, ackRangeLength: length));
  }

  return AckFrame(
    largestAcked: largestAcked,
    ackDelay: ackDelay,
    firstAckRangeLength: firstAckRangeLength,
    ackRanges: ranges,
  );
}