decodeAll static method
Implementation
static Future<List<ServerMessage>> decodeAll(Uint8List bytes) async {
final outer = BsatnDecoder(bytes);
final compressionTag = CompressionTag.fromValue(outer.readU8());
final payload = outer.readBytes(outer.remaining);
final messageBytes = switch (compressionTag) {
CompressionTag.none => payload,
CompressionTag.brotli => await decompressBrotli(payload),
CompressionTag.gzip => await decompressGzip(payload),
};
if (messageBytes.isEmpty) {
throw SpacetimeDbProtocolException(
'WebSocket frame payload is empty after decompression — expected at '
'least one server message',
);
}
final cursor = BsatnDecoder(messageBytes);
final results = <ServerMessage>[];
while (cursor.remaining > 0) {
results.add(_decodeServerMessage(cursor));
}
return results;
}