decode method
Implementation
RitoPendingShards decode(Uint8List bytes) {
final reader = openRitoWireMessage(
bytes,
magic: 'RITOPSH1',
label: 'pending shards',
);
final count = reader.count('pending shards');
if (count == 0) reader.fail('a pending failure names at least one shard');
final shardIds = <int>[];
for (var index = 0; index < count; index += 1) {
final shardId = reader.uint32('pending shard id');
if (shardId == 0)
reader.fail('shard 0 is the skeleton and is never pending');
if (shardIds.isNotEmpty && shardId <= shardIds.last) {
reader.fail('pending shards are ascending and distinct');
}
shardIds.add(shardId);
}
final message = reader.string('pending shards message');
reader.finish('pending shards wire message');
return RitoPendingShards(
shardIds: List<int>.unmodifiable(shardIds),
message: message,
);
}