LCOV - code coverage report

Current view
top level - src/pool - _worker_task.dart
Test
lcov.info
Date
2026-02-21
Legend
Lines
hit
not hit
Branches
taken
not taken
# not executed
HitTotalCoverage
Lines343987.2%
Functions00-
Branches00-
Each row represents a line of source code
LineBranchHitsSource code
1import 'dart:async';
2
3import '../_impl/xplat/_time_stamp.dart';
4import '../exceptions/task_canceled_exception.dart';
5import '../stats/perf_counter.dart';
6import '../utils.dart';
7import '../worker/worker.dart';
8import 'task.dart';
9import 'worker_pool.dart';
10
11/// [WorkerTask] registered in the [WorkerPool].
12abstract base class WorkerTask<T, W extends Worker> implements Task<T> {
138 WorkerTask(this._counter) : submitted = microsecTimeStamp();
14
15 final int submitted;
16 int? _scheduled;
17 int? _finished;
18 int? _canceled;
19
20 final PerfCounter? _counter;
21
224 @override
234 bool get isCanceled => _canceled != null;
24
251 @override
262 bool get isPending => _scheduled == null && _canceled == null;
27
282 @override
29 bool get isFinished =>
306 _scheduled != null && _finished != null && _canceled == null;
31
322 @override
33 bool get isRunning =>
344 _scheduled != null && _finished == null && _canceled == null;
35
361 @override
371 Duration get runningTime => _scheduled == null
38 ? Duration.zero
390 : Duration(
40 microseconds:
410 (_canceled ?? _finished ?? microsecTimeStamp()) - _scheduled!);
42
430 @override
440 Duration get waitTime => Duration(
45 microseconds:
460 (_scheduled ?? _canceled ?? microsecTimeStamp()) - submitted);
47
48 final _done = Completer<void>();
49
501 @override
512 Future<void> get done => _done.future;
52
53 TaskCanceledException? _canceledException;
548 TaskCanceledException? get canceledException => _canceledException;
55
564 void throwIfCanceled() {
574 if (_canceledException != null) throw _canceledException!;
58 }
59
602 @override
61 void cancel([String? message]) {
624 if (_finished != null || _canceled != null) return;
634 _canceled ??= microsecTimeStamp();
644 _canceledException ??= TaskCanceledException(message);
652 if (_scheduled == null) {
66 // task will not be scheduled, make sure it reports as errored
672 _fail();
68 }
69 }
70
712 void _fail([Object? _]) {
724 final finished = _finished ??= microsecTimeStamp();
732 _counter?.update(finished - (_scheduled ?? finished), false);
744 _done.safeComplete();
75 }
76
774 Future<void> run(W worker) {
788 _scheduled ??= microsecTimeStamp();
798 return execute(worker).then(
804 (res) {
818 _finished ??= microsecTimeStamp();
828 _counter?.update(_finished! - _scheduled!, res);
838 _done.safeComplete();
84 },
854 onError: _fail,
86 );
87 }
88
89 Future<bool> execute(W worker);
90}
Choose Features