toBytes method

Uint8List toBytes()

Converts the frame to bytes

Implementation

Uint8List toBytes() {
  // ADDED LOG: Log frame details before serialization
  // print('YamuxFrame.toBytes: Serializing Frame - Type: $type, StreamID: $streamId, Flags: $flags, Length: $length, Data (first 10 bytes): ${data.take(10).toList()}');

  final buffer = ByteData(12 + length);

  // Write version
  buffer.setUint8(0, version);

  // Write type
  buffer.setUint8(1, type.value);

  // Write flags
  buffer.setUint16(2, flags, Endian.big);

  // Write stream ID
  buffer.setUint32(4, streamId, Endian.big);

  // Write length
  buffer.setUint32(8, length, Endian.big);

  // Write data
  if (length > 0) {
    buffer.buffer.asUint8List().setRange(12, 12 + length, data);
  }

  final resultBytes = buffer.buffer.asUint8List();
  // ADDED LOG: Log the first few bytes of the serialized frame
  // print('YamuxFrame.toBytes: Serialized Bytes (first 16): ${resultBytes.take(16).toList()}');
  return resultBytes;
}