encode method

Uint8List encode()

The .f3dtrace bytes.

Implementation

Uint8List encode() {
  final blob = TraceBlobWriter();
  final header = utf8.encode(
    jsonEncode(<String, Object?>{
      'metadata': metadata,
      'events': <Object?>[
        for (final e in events)
          <String, Object?>{'kind': e.kind, ...e.toJson(blob)},
      ],
    }),
  );
  final payload = blob.take();
  final prefix = ByteData(16);
  for (var i = 0; i < _magic.length; i++) {
    prefix.setUint8(i, _magic[i]);
  }
  prefix
    ..setUint32(8, formatVersion, Endian.little)
    ..setUint32(12, header.length, Endian.little);
  return (BytesBuilder(copy: false)
        ..add(prefix.buffer.asUint8List())
        ..add(header)
        ..add(payload))
      .takeBytes();
}