LCOV - code coverage report
Current view: top level - Users/duwen/Documents/code/dio/dio/lib/src/progress_stream - io_progress_stream.dart (source / functions) Hit Total Coverage
Test: lcov.info Lines: 15 25 60.0 %
Date: 2021-11-28 14:37:50 Functions: 0 0 -

          Line data    Source code
       1             : import 'dart:async';
       2             : import 'dart:typed_data';
       3             : import 'package:dio/dio.dart';
       4             : 
       5           4 : Stream<Uint8List> addProgress(
       6             :     Stream<List<int>> stream, int? length, RequestOptions options) {
       7           4 :   var streamTransformer = stream is Stream<Uint8List>
       8           1 :       ? _transform<Uint8List>(stream, length, options)
       9           4 :       : _transform<List<int>>(stream, length, options);
      10             : 
      11           4 :   var byteStream = stream.transform<Uint8List>(streamTransformer);
      12             : 
      13           8 :   if (options.sendTimeout > 0) {
      14           0 :     byteStream.timeout(Duration(milliseconds: options.sendTimeout),
      15           0 :         onTimeout: (sink) {
      16           0 :       sink.addError(DioError(
      17             :         requestOptions: options,
      18           0 :         error: 'Sending timeout[${options.connectTimeout}ms]',
      19             :         type: DioErrorType.sendTimeout,
      20             :       ));
      21           0 :       sink.close();
      22             :     });
      23             :   }
      24             :   return byteStream;
      25             : }
      26             : 
      27           4 : StreamTransformer<S, Uint8List> _transform<S extends List<int>>(
      28             :     Stream<S> stream, int? length, RequestOptions options) {
      29             :   var complete = 0;
      30           4 :   return StreamTransformer<S, Uint8List>.fromHandlers(
      31           3 :     handleData: (S data, sink) {
      32           3 :       final cancelToken = options.cancelToken;
      33           0 :       if (cancelToken != null && cancelToken.isCancelled) {
      34           0 :         cancelToken.requestOptions = options;
      35             :         sink
      36           0 :           ..addError(cancelToken.cancelError!)
      37           0 :           ..close();
      38             :       } else {
      39           3 :         if (data is Uint8List) {
      40           3 :           sink.add(data);
      41             :         } else {
      42           2 :           sink.add(Uint8List.fromList(data));
      43             :         }
      44             :         if (length != null) {
      45           6 :           complete += data.length;
      46           3 :           if (options.onSendProgress != null) {
      47           0 :             options.onSendProgress!(complete, length!);
      48             :           }
      49             :         }
      50             :       }
      51             :     },
      52             :   );
      53             : }

Generated by: LCOV version 1.14