toJson method

Map<String, dynamic> toJson()

Export metrics as JSON

Implementation

Map<String, dynamic> toJson() {
  return {
    // Counters
    'total_queued': totalQueued,
    'total_started': totalStarted,
    'total_completed': totalCompleted,
    'total_failed': totalFailed,
    'total_retried': totalRetried,
    'total_timed_out': totalTimedOut,
    'currently_processing': currentlyProcessing,

    // Rates
    'success_rate': successRate,
    'failure_rate': failureRate,
    'timeout_rate': timeoutRate,
    'throughput_per_second': throughput,

    // Processing times
    'average_processing_time_ms': averageProcessingTime.inMilliseconds,
    'p50_processing_time_ms': p50ProcessingTime.inMilliseconds,
    'p95_processing_time_ms': p95ProcessingTime.inMilliseconds,
    'p99_processing_time_ms': p99ProcessingTime.inMilliseconds,
    'p999_processing_time_ms': p999ProcessingTime.inMilliseconds,
    'min_processing_time_ms': minProcessingTime.inMilliseconds,
    'max_processing_time_ms': maxProcessingTime.inMilliseconds,
    'std_dev_processing_time_ms': stdDevProcessingTime.inMilliseconds,

    // Queue depth
    'current_queue_depth': currentQueueDepth,
    'average_queue_depth': averageQueueDepth,
    'peak_queue_depth': peakQueueDepth,

    // Worker utilization
    'total_workers': _totalWorkers,
    'current_worker_utilization': currentWorkerUtilization,
    'average_worker_utilization': averageWorkerUtilization,
    'peak_worker_utilization': peakWorkerUtilization,

    // Timing
    'uptime_seconds': uptime.inSeconds,
    'start_time': startTime?.toIso8601String(),
    'last_activity': lastActivity?.toIso8601String(),

    // Per-type statistics
    'queued_by_type': queuedByType,
    'completed_by_type': completedByType,
    'failed_by_type': failedByType,
    'retried_by_type': retriedByType,
    'average_processing_time_by_type': totalProcessingTimeByType.map(
      (k, v) => MapEntry(k, averageProcessingTimeForType(k).inMilliseconds),
    ),

    // Per-priority statistics
    'queued_by_priority': _priorityMapToJson(queuedByPriority),
    'completed_by_priority': _priorityMapToJson(completedByPriority),
    'failed_by_priority': _priorityMapToJson(failedByPriority),
  };
}