encode method
Serializes the manifest.
Implementation
Uint8List encode() {
var size = 12;
for (final segment in segments) {
size += segment.encodedSize;
}
size += 4; // checksum
final out = Uint8List(size);
out[0] = manifestMagic;
out[1] = manifestVersion;
VxsLe.w16(out, 2, 0);
VxsLe.w32(out, 4, generation);
VxsLe.w32(out, 8, segments.length);
var pos = 12;
for (final segment in segments) {
VxsLe.w16(out, pos, segment.name.length);
pos += 2;
final nameBytes = segment.name.codeUnits;
out.setRange(pos, pos + nameBytes.length, nameBytes);
pos += nameBytes.length;
VxsLe.w32(out, pos, segment.entryCount);
pos += 4;
VxsLe.w32(out, pos, segment.byteLength);
pos += 4;
}
VxsLe.w32(out, pos, VxsCrc32c.compute(out, 0, pos));
return out;
}