toBytes method

  1. @override
Uint8List toBytes()
override

Serialize the frame into a byte list.

Implementation

@override
Uint8List toBytes() {
  final buffer = Uint8List(length);
  final view = ByteData.view(buffer.buffer);
  int offset = 0;

  view.setUint8(offset, FrameType.ack.index);
  offset += 1;

  view.setUint32(offset, largestAcked, Endian.big);
  offset += 4;

  view.setUint16(offset, ackDelay, Endian.big);
  offset += 2;

  view.setUint8(offset, ackRanges.length); // Count of *additional* ranges
  offset += 1;

  view.setUint32(offset, firstAckRangeLength, Endian.big);
  offset += 4;

  for (final range in ackRanges) {
    view.setUint8(offset, range.gap);
    offset += 1;
    view.setUint32(offset, range.ackRangeLength, Endian.big);
    offset += 4;
  }
  return buffer;
}