toBytes method

Uint8List toBytes()

Serializes the packet to bytes.

Implementation

Uint8List toBytes() {
  final dataLen = data.length;
  final packetLen = headerSize + dataLen;

  final buffer = ByteData(headerSize + dataLen);

  // First word: length (11 bits) | flags (5 bits)
  buffer.setUint16(
      0, (packetLen & 0x07FF) | ((flags & 0x1F) << 11), Endian.big);
  buffer.setUint16(2, session, Endian.big);
  buffer.setUint16(4, acknowledgementNumber, Endian.big);
  buffer.setUint16(6, remoteSequenceNumber, Endian.big);
  buffer.setUint16(8, sequenceNumber, Endian.big);

  if (dataLen > 0) {
    buffer.buffer.asUint8List(headerSize).setAll(0, data);
  }

  return buffer.buffer.asUint8List();
}