LCOV - code coverage report

Current view
top level - src/pool - _worker_task.dart
Test
lcov.info
Date
2026-11-07
Legend
Lines
hit
not hit
Branches
taken
not taken
# not executed
HitTotalCoverage
Lines354087.5%
Functions00-
Branches00-
Each row represents a line of source code
LineBranchHitsSource code
1import 'dart:async';
2
3import '../exceptions/task_canceled_exception.dart';
4import '../stats/perf_counter.dart';
5import '../utils.dart';
6import '../worker/worker.dart';
7import 'task.dart';
8import 'worker_pool.dart';
9
10/// [WorkerTask] registered in the [WorkerPool].
11abstract base class WorkerTask<T, W extends Worker> implements Task<T> {
121 WorkerTask(this._counter) {
132 _submitted.start();
14 }
15
16 final _submitted = Stopwatch();
17 int? _scheduled;
18 int? _finished;
19 int? _canceled;
20
21 final PerfCounter? _counter;
22
231 @override
241 bool get isCanceled => _canceled != null;
25
261 @override
272 bool get isPending => _scheduled == null && _canceled == null;
28
291 @override
30 bool get isFinished =>
313 _scheduled != null && _finished != null && _canceled == null;
32
331 @override
34 bool get isRunning =>
352 _scheduled != null && _finished == null && _canceled == null;
36
371 @override
38 Duration get runningTime {
391 final scheduled = _scheduled;
40 if (scheduled == null) return Duration.zero;
410 return Duration(
42 microseconds:
430 (_canceled ?? _finished ?? _submitted.elapsedMicroseconds) -
44 scheduled);
45 }
46
470 @override
480 Duration get waitTime => Duration(
490 microseconds: _scheduled ?? _canceled ?? _submitted.elapsedMicroseconds);
50
51 final _done = Completer<void>();
52
531 @override
542 Future<void> get done => _done.future;
55
56 TaskCanceledException? _canceledException;
572 TaskCanceledException? get canceledException => _canceledException;
58
591 void throwIfCanceled() {
601 if (_canceledException != null) throw _canceledException!;
61 }
62
631 @override
64 void cancel([String? message]) {
652 if (_finished != null || _canceled != null) return;
663 _canceled ??= _submitted.elapsedMicroseconds;
672 _canceledException ??= TaskCanceledException(message);
681 if (_scheduled == null) {
69 // task will not be scheduled, make sure it reports as errored
701 _fail();
71 }
72 }
73
741 void _fail([Object? _]) {
753 final finished = _finished ??= _submitted.elapsedMicroseconds;
761 _counter?.update(finished - (_scheduled ?? finished), false);
772 _done.safeComplete();
78 }
79
801 Future<void> run(W worker) {
813 _scheduled ??= _submitted.elapsedMicroseconds;
822 return execute(worker).then(
831 (res) {
843 _finished ??= _submitted.elapsedMicroseconds;
855 _counter?.update(_finished! - _scheduled!, res);
862 _done.safeComplete();
87 },
881 onError: _fail,
89 );
90 }
91
92 Future<bool> execute(W worker);
93}
Choose Features