LCOV - code coverage report

Current view
top level - src/pool - _worker_task.dart
Test
lcov.info
Date
2025-03-26
Legend
Lines
hit
not hit
Branches
taken
not taken
# not executed
HitTotalCoverage
Lines323884.2%
Functions00-
Branches00-
Each row represents a line of source code
LineBranchHitsSource code
1import 'dart:async';
2
3import 'package:meta/meta.dart';
4
5import '../_impl/xplat/_time_stamp.dart';
6import '../exceptions/task_canceled_exception.dart';
7import '../stats/perf_counter.dart';
8import '../worker/worker.dart';
9import 'task.dart';
10import 'worker_pool.dart';
11
12/// [WorkerTask] registered in the [WorkerPool].
13abstract base class WorkerTask<T, W extends Worker> implements Task<T> {
148 WorkerTask(this._counter) : submitted = microsecTimeStamp();
15
16 final int submitted;
17 int? _scheduled;
18 int? _finished;
19 int? _canceled;
20
21 final PerfCounter? _counter;
22
234 @override
244 bool get isCanceled => _canceled != null;
25
261 @override
272 bool get isPending => _scheduled == null && _canceled == null;
28
292 @override
30 bool get isFinished =>
316 _scheduled != null && _finished != null && _canceled == null;
32
332 @override
34 bool get isRunning =>
354 _scheduled != null && _finished == null && _canceled == null;
36
371 @override
381 Duration get runningTime => _scheduled == null
39 ? Duration.zero
400 : Duration(
41 microseconds:
420 (_canceled ?? _finished ?? microsecTimeStamp()) - _scheduled!);
43
440 @override
450 Duration get waitTime => Duration(
46 microseconds:
470 (_scheduled ?? _canceled ?? microsecTimeStamp()) - submitted);
48
49 final _done = Completer<void>();
50
511 @override
522 Future<void> get done => _done.future;
53
54 TaskCanceledException? _canceledException;
558 TaskCanceledException? get canceledException => _canceledException;
56
574 void throwIfCanceled() {
585 if (_canceledException != null) throw _canceledException!;
59 }
60
612 @override
62 void cancel([String? message]) {
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
714 void _success(bool res) {
728 _finished ??= microsecTimeStamp();
738 _counter?.update(_finished! - _scheduled!, res);
7416 if (!_done.isCompleted) _done.complete();
75 }
76
772 void _fail([Object? _]) {
784 _finished ??= microsecTimeStamp();
792 _counter?.update(_finished! - _scheduled!, false);
808 if (!_done.isCompleted) _done.complete();
81 }
82
834 Future<void> run(W worker) {
848 _scheduled ??= microsecTimeStamp();
8516 return execute(worker).then(_success, onError: _fail);
86 }
87
88 Future<bool> execute(W worker);
89}
90
91@internal
92extension WorkerTaskExt on WorkerTask {
930 void fail() => _fail();
94}
Choose Features