getWorkerStats method

Map<String, dynamic> getWorkerStats()

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,
  };
}