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