quantrs2_tytan/realtime_quantum_integration/
state.rs1use serde::{Deserialize, Serialize};
6use std::collections::HashMap;
7use std::time::{Duration, SystemTime};
8
9use super::hardware::DeviceStatus;
10use super::types::{AlertType, ComponentStatus, IssueSeverity, SystemStatus};
11
12#[derive(Debug, Clone, Serialize, Deserialize)]
14pub struct SystemState {
15 pub overall_status: SystemStatus,
17 pub component_states: HashMap<String, ComponentState>,
19 pub active_alerts: Vec<ActiveAlert>,
21 pub performance_summary: PerformanceSummary,
23 pub resource_utilization: SystemResourceUtilization,
25 pub last_update: SystemTime,
27}
28
29impl Default for SystemState {
30 fn default() -> Self {
31 Self::new()
32 }
33}
34
35impl SystemState {
36 pub fn new() -> Self {
37 Self {
38 overall_status: SystemStatus::Healthy,
39 component_states: HashMap::new(),
40 active_alerts: vec![],
41 performance_summary: PerformanceSummary {
42 performance_score: 0.9,
43 throughput: 100.0,
44 latency_percentiles: HashMap::new(),
45 error_rates: HashMap::new(),
46 availability: 0.99,
47 },
48 resource_utilization: SystemResourceUtilization {
49 cpu_utilization: 0.5,
50 memory_utilization: 0.6,
51 storage_utilization: 0.4,
52 network_utilization: 0.3,
53 quantum_utilization: Some(0.7),
54 },
55 last_update: SystemTime::now(),
56 }
57 }
58
59 pub fn update_component_state(&mut self, component_id: &str, _status: &DeviceStatus) {
60 let component_state = ComponentState {
61 component_name: component_id.to_string(),
62 status: ComponentStatus::Healthy, last_heartbeat: SystemTime::now(),
64 metrics: HashMap::new(),
65 alerts: vec![],
66 };
67
68 self.component_states
69 .insert(component_id.to_string(), component_state);
70 self.last_update = SystemTime::now();
71 }
72}
73
74#[derive(Debug, Clone, Serialize, Deserialize)]
76pub struct ComponentState {
77 pub component_name: String,
79 pub status: ComponentStatus,
81 pub last_heartbeat: SystemTime,
83 pub metrics: HashMap<String, f64>,
85 pub alerts: Vec<String>,
87}
88
89#[derive(Debug, Clone, Serialize, Deserialize)]
91pub struct ActiveAlert {
92 pub alert_id: String,
94 pub alert_type: AlertType,
96 pub severity: IssueSeverity,
98 pub message: String,
100 pub timestamp: SystemTime,
102 pub acknowledged: bool,
104 pub acknowledged_by: Option<String>,
106}
107
108#[derive(Debug, Clone, Serialize, Deserialize)]
110pub struct PerformanceSummary {
111 pub performance_score: f64,
113 pub throughput: f64,
115 pub latency_percentiles: HashMap<String, Duration>,
117 pub error_rates: HashMap<String, f64>,
119 pub availability: f64,
121}
122
123#[derive(Debug, Clone, Serialize, Deserialize)]
125pub struct SystemResourceUtilization {
126 pub cpu_utilization: f64,
128 pub memory_utilization: f64,
130 pub storage_utilization: f64,
132 pub network_utilization: f64,
134 pub quantum_utilization: Option<f64>,
136}