getBody method

Uint8List? getBody(
  1. int streamId
)

Concatenate all DATA frame payloads for streamId into a single buffer.

Implementation

Uint8List? getBody(int streamId) {
  final frames = _pendingData[streamId];
  if (frames == null || frames.isEmpty) return null;

  // Exclude empty EOF-marker frames from the returned body.
  final nonEmptyFrames = frames.where((f) => f.data.isNotEmpty).toList();
  if (nonEmptyFrames.isEmpty) return Uint8List(0);

  final totalLength =
      nonEmptyFrames.fold<int>(0, (sum, f) => sum + f.data.length);
  final result = Uint8List(totalLength);
  var offset = 0;
  for (final frame in nonEmptyFrames) {
    result.setRange(offset, offset + frame.data.length, frame.data);
    offset += frame.data.length;
  }
  return result;
}