decode<T> static method

Stream<T> decode<T>(
  1. Stream<List<int>> value,
  2. Decodable<T> decodable
)
override

Implementation

static Stream<T> decode<T>(Stream<List<int>> value, Decodable<T> decodable) {
  final stream = value.transform(_LineSplitter());

  Map<int, _ReferenceValue>? refs = {};

  final marker = refs[0] = _AsyncReferenceValue(); // Initialize with a value for marker 0

  stream.listen((bytes) {
    if (bytes.isEmpty) {
      return; // Skip empty data
    }
    _parseBytes(bytes, refs, false);
  }, onDone: () {
    for (final value in refs.values) {
      value.done();
    }
  });

  return marker.decode<T>(decodable);
}