decode method
Implementation
RitoPublication decode(Uint8List bytes) {
final reader = openRitoWireMessage(
bytes,
magic: 'RITOPUB1',
label: 'publication',
maxBytes: ritoPublicationMaxWireBytes,
);
final protocolVersion = reader.uint32('publication protocol version');
if (protocolVersion != RitoArtifactDecoder.protocolVersion) {
reader.fail('unsupported publication protocol version: $protocolVersion');
}
final sessionId = reader.externalId('publication session id');
final metadata = _metadata(reader);
final spineCount = reader.count('publication spine');
final spine = <RitoPublicationSpineItem>[
for (var index = 0; index < spineCount; index += 1) _spineItem(reader),
];
final duplicateHrefs = _validateSpine(reader, spine);
final toc = _tocEntries(
reader,
1,
_PublicationDecodeState(spine, duplicateHrefs),
);
reader.finish('publication wire message');
return RitoPublication(
protocolVersion: protocolVersion,
sessionId: sessionId,
metadata: metadata,
spine: spine,
toc: toc,
);
}