| Hit | Total | Coverage | |
|---|---|---|---|
| Lines | 39 | 39 | 100.0% |
| Functions | 0 | 0 | - |
| Branches | 0 | 0 | - |
| Line | Branch | Hits | Source code |
|---|---|---|---|
| 1 | part of 'worker.dart'; |
||
| 2 | |
||
| 3 | class _Stats { |
||
| 4 | 1 | _Stats(Worker w) : _worker = w { |
|
| 5 | 2 | _idleTime.start(); |
|
| 6 | } |
||
| 7 | |
||
| 8 | final Worker _worker; |
||
| 9 | final _idleTime = Stopwatch(); |
||
| 10 | Stopwatch? _upTime; |
||
| 11 | Duration? _initTime; |
||
| 12 | |
||
| 13 | 1 | void start() { |
|
| 14 | 1 | if (_upTime == null) { |
|
| 15 | 3 | _initTime = _idleTime.elapsed; |
|
| 16 | 3 | _upTime = Stopwatch()..start(); |
|
| 17 | 2 | _idleTime.reset(); |
|
| 18 | 2 | _idleTime.start(); |
|
| 19 | } |
||
| 20 | } |
||
| 21 | |
||
| 22 | 1 | void stop() { |
|
| 23 | 1 | _initTime ??= Duration.zero; |
|
| 24 | 3 | (_upTime ??= Stopwatch()).stop(); |
|
| 25 | } |
||
| 26 | |
||
| 27 | 1 | void beginWork() { |
|
| 28 | 2 | _idleTime.stop(); |
|
| 29 | 2 | _idleTime.reset(); |
|
| 30 | 2 | _workload++; |
|
| 31 | 3 | if (_workload > _maxWorkload) { |
|
| 32 | 2 | _maxWorkload = _workload; |
|
| 33 | } |
||
| 34 | } |
||
| 35 | |
||
| 36 | 1 | void endWork([dynamic _]) { |
|
| 37 | 2 | _workload--; |
|
| 38 | 2 | _totalWorkload++; |
|
| 39 | 2 | if (_workload == 0) { |
|
| 40 | 2 | _idleTime.reset(); |
|
| 41 | 2 | _idleTime.start(); |
|
| 42 | } |
||
| 43 | } |
||
| 44 | |
||
| 45 | 1 | void failed() { |
|
| 46 | 2 | _totalErrors++; |
|
| 47 | } |
||
| 48 | |
||
| 49 | /// Current workload. |
||
| 50 | int _workload = 0; |
||
| 51 | |
||
| 52 | /// Maximum acceptable workload. |
||
| 53 | int _maxWorkload = 0; |
||
| 54 | |
||
| 55 | /// Total processed workload. |
||
| 56 | int _totalWorkload = 0; |
||
| 57 | |
||
| 58 | /// Total errors. |
||
| 59 | int _totalErrors = 0; |
||
| 60 | |
||
| 61 | /// Indicates if the [Worker] has been stopped. |
||
| 62 | 4 | bool get isStopped => _upTime?.isRunning == false; |
|
| 63 | |
||
| 64 | 1 | WorkerStat get snapshot { |
|
| 65 | // measure idle time before up time |
||
| 66 | 2 | final idleTime = _idleTime.elapsed; |
|
| 67 | 1 | return WorkerStatImpl.create( |
|
| 68 | 2 | _worker.runtimeType, |
|
| 69 | 2 | _worker.hashCode, |
|
| 70 | 1 | isStopped, |
|
| 71 | 1 | _workload, |
|
| 72 | 1 | _maxWorkload, |
|
| 73 | 1 | _totalWorkload, |
|
| 74 | 1 | _totalErrors, |
|
| 75 | 1 | _initTime, |
|
| 76 | 2 | _upTime?.elapsed ?? Duration.zero, |
|
| 77 | idleTime, |
||
| 78 | 3 | _worker._channel?.getActiveConnections() ?? 0, |
|
| 79 | ); |
||
| 80 | } |
||
| 81 | } |