grpcEncodeFrames function
Encode multiple gRPC frames (for streaming).
Each element of messages is a raw protobuf-encoded message. All frames
share the same compressed flag. Returns the concatenation of all
length-prefixed frames.
Implementation
List<int> grpcEncodeFrames(
List<List<int>> messages, {
bool compressed = false,
}) {
// Pre-compute total size to avoid repeated list growth.
var totalSize = 0;
for (var msg in messages) {
totalSize += _headerSize + msg.length;
}
var result = List<int>.filled(totalSize, 0);
var pos = 0;
for (var msg in messages) {
var frame = grpcEncodeFrame(msg, compressed: compressed);
for (var i = 0; i < frame.length; i++) {
result[pos + i] = frame[i];
}
pos += frame.length;
}
return result;
}