1 | | | import 'package:meta/meta.dart'; |
2 | | |
|
3 | | | /// Base statistics for worker. |
4 | | | class WorkerStat { |
5 | | 6 | WorkerStat._( |
6 | | | this.workerType, |
7 | | | this.workerHashCode, |
8 | | | this.isStopped, |
9 | | | this.workload, |
10 | | | this.maxWorkload, |
11 | | | this.totalWorkload, |
12 | | | this.totalErrors, |
13 | | | this.upTime, |
14 | | | this.idleTime, |
15 | | | this.activeConnections, |
16 | | | ); |
17 | | |
|
18 | | | /// Timestamp of this snapshot |
19 | | | final timestamp = DateTime.now().toUtc(); |
20 | | |
|
21 | | | /// The worker's runtime type. |
22 | | | final Type workerType; |
23 | | |
|
24 | | | /// The worker's hashCode. |
25 | | | final int workerHashCode; |
26 | | |
|
27 | | | /// Worker running flag. |
28 | | | final bool isStopped; |
29 | | |
|
30 | | | /// Current workload being processed by the worker. |
31 | | | final int workload; |
32 | | |
|
33 | | | /// Maximum concurrent workload processed by the worker. |
34 | | | final int maxWorkload; |
35 | | |
|
36 | | | /// Total workload processed by the worker. |
37 | | | final int totalWorkload; |
38 | | |
|
39 | | | /// Total errors raised during processing. |
40 | | | final int totalErrors; |
41 | | |
|
42 | | | /// The worker's up-time. |
43 | | | Duration upTime; |
44 | | |
|
45 | | | /// The worker's idle-time. |
46 | | | Duration idleTime; |
47 | | |
|
48 | | | /// The worker channel's count of active connections. |
49 | | | final int activeConnections; |
50 | | | } |
51 | | |
|
52 | | | extension WorkerStatsExt on Iterable<WorkerStat> { |
53 | | | /// Gets the total workload from a collection of worker stats. |
54 | | 0 | int get workload => fold<int>(0, (p, s) => p + s.workload); |
55 | | |
|
56 | | | /// Gets the grand total of workloads from a collection of worker stats. |
57 | | 0 | int get totalWorkload => fold<int>(0, (p, s) => p + s.totalWorkload); |
58 | | |
|
59 | | | /// Gets the grand total of errors from a collection of worker stats. |
60 | | 0 | int get totalErrors => fold<int>(0, (p, s) => p + s.totalErrors); |
61 | | | } |
62 | | |
|
63 | | | @internal |
64 | | | extension WorkerStatImpl on WorkerStat { |
65 | | 6 | static WorkerStat create( |
66 | | | Type workerType, |
67 | | | int workerHashCode, |
68 | | | bool isStopped, |
69 | | | int workload, |
70 | | | int maxWorkload, |
71 | | | int totalWorkload, |
72 | | | int totalErrors, |
73 | | | Duration upTime, |
74 | | | Duration idleTime, |
75 | | | int activeConnections) => |
76 | | 6 | WorkerStat._(workerType, workerHashCode, isStopped, workload, maxWorkload, |
77 | | | totalWorkload, totalErrors, upTime, idleTime, activeConnections); |
78 | | | } |