LCOV - code coverage report

Current view
top level - src/pool - _worker_task.dart
Test
lcov.info
Date
2026-03-04
Legend
Lines
hit
not hit
Branches
taken
not taken
# not executed
HitTotalCoverage
Lines343791.9%
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 = Timestamp.now();
14
15 final Timestamp submitted;
16 Timestamp? _scheduled;
17 Timestamp? _finished;
18 Timestamp? _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 : (_canceled ?? _finished ?? Timestamp.now()).elapsedSince(_scheduled!);
40
410 @override
42 Duration get waitTime =>
430 (_scheduled ?? _canceled ?? Timestamp.now()).elapsedSince(submitted);
44
45 final _done = Completer<void>();
46
471 @override
482 Future<void> get done => _done.future;
49
50 TaskCanceledException? _canceledException;
518 TaskCanceledException? get canceledException => _canceledException;
52
534 void throwIfCanceled() {
544 if (_canceledException != null) throw _canceledException!;
55 }
56
572 @override
58 void cancel([String? message]) {
594 if (_finished != null || _canceled != null) return;
604 _canceled ??= Timestamp.now();
614 _canceledException ??= TaskCanceledException(message);
622 if (_scheduled == null) {
63 // task will not be scheduled, make sure it reports as errored
642 _fail();
65 }
66 }
67
682 void _fail([Object? _]) {
694 final finished = _finished ??= Timestamp.now();
702 _counter?.update(finished - (_scheduled ?? finished), false);
714 _done.safeComplete();
72 }
73
744 Future<void> run(W worker) {
758 _scheduled ??= Timestamp.now();
768 return execute(worker).then(
774 (res) {
788 _finished ??= Timestamp.now();
798 _counter?.update(_finished! - _scheduled!, res);
808 _done.safeComplete();
81 },
824 onError: _fail,
83 );
84 }
85
86 Future<bool> execute(W worker);
87}
Choose Features