encode method

Uint8List encode()

Encodes the packet table to a Uint8List.

Implementation

Uint8List encode() {
  final List<Uint8List> encodedVarintEntriesChunks =
      entries.map((int entry) => encodeVarint(entry)).toList();

  int totalLength = 24;
  for (final Uint8List encodedChunk in encodedVarintEntriesChunks) {
    totalLength += encodedChunk.length;
  }

  final ByteData data = ByteData(totalLength);
  data.setInt64(0, header.numberPackets);
  data.setInt64(8, header.numberValidFrames);
  data.setInt32(16, header.primingFrames);
  data.setInt32(20, header.remainderFrames);

  int offset = 24;
  for (final Uint8List entry in encodedVarintEntriesChunks) {
    for (int i = 0; i < entry.length; i++) {
      data.setUint8(offset + i, entry[i]);
    }
    offset += entry.length;
  }
  return data.buffer.asUint8List();
}