getWorkerStats method
Get worker statistics for debugging/monitoring
Implementation
Map<String, dynamic> getWorkerStats() {
_cleanupDisposedWorkers();
final workersInGroups = <ZenWorkerHandle>{};
for (final group in _workerGroups) {
if (!group.isDisposed) {
workersInGroups.addAll(group.workers);
}
}
final individualWorkers =
_workers.where((w) => !workersInGroups.contains(w));
final individualActive =
individualWorkers.where((w) => !w.isDisposed && w.isActive).length;
final individualPaused =
individualWorkers.where((w) => !w.isDisposed && w.isPaused).length;
final groupActive = _workerGroups.fold<int>(
0, (sum, group) => group.isDisposed ? sum : sum + group.activeCount);
final groupPaused = _workerGroups.fold<int>(
0, (sum, group) => group.isDisposed ? sum : sum + group.pausedCount);
final groupTotal = _workerGroups.fold<int>(
0, (sum, group) => group.isDisposed ? sum : sum + group.length);
return {
'individual_active': individualActive,
'individual_paused': individualPaused,
'group_active': groupActive,
'group_paused': groupPaused,
'group_total': groupTotal,
'total_active': individualActive + groupActive,
'total_paused': individualPaused + groupPaused,
'worker_creation_count': _workerCreationCount,
};
}