toBytes method

Uint8List toBytes()

Encodes the packet to bytes.

Implementation

Uint8List toBytes() {
  final dataLen = data?.length ?? 0;
  final packetLen = headerSize + dataLen;
  final buffer = ByteData(packetLen);

  // Length (11 bits) + flags (5 bits)
  buffer.setUint16(0, (packetLen & 0x07FF) | ((flags & 0x1F) << 11));
  buffer.setUint16(2, session);
  buffer.setUint16(4, acknowledgementNumber);
  buffer.setUint16(6, remoteSequenceNumber);
  // Bytes 8-9 are reserved and remain zero.
  buffer.setUint16(10, sequenceNumber);

  if (data != null && data!.isNotEmpty) {
    buffer.buffer.asUint8List().setRange(headerSize, packetLen, data!);
  }

  return buffer.buffer.asUint8List();
}