toBytes method
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();
}