quantrs2_circuit/profiler/
sessions.rs

1//! Profiling session management
2//!
3//! This module provides session management capabilities for profiling
4//! including session lifecycle, data storage, analytics, and persistence.
5
6use serde::{Deserialize, Serialize};
7use std::collections::HashMap;
8use std::sync::Arc;
9use std::time::{Duration, SystemTime};
10
11// Import types from sibling modules
12use super::analyzers::*;
13use super::collectors::*;
14use super::metrics::*;
15
16pub struct SessionManager {
17    /// Active sessions
18    pub active_sessions: HashMap<String, ProfilingSession>,
19    /// Session configuration
20    pub session_config: SessionConfig,
21    /// Session storage
22    pub session_storage: SessionStorage,
23    /// Session analytics
24    pub session_analytics: SessionAnalytics,
25}
26
27/// Individual profiling session
28#[derive(Debug, Clone, Serialize, Deserialize)]
29pub struct ProfilingSession {
30    /// Session ID
31    pub id: String,
32    /// Session start time
33    pub start_time: SystemTime,
34    /// Session end time
35    pub end_time: Option<SystemTime>,
36    /// Session status
37    pub status: SessionStatus,
38    /// Collected data
39    pub collected_data: SessionData,
40    /// Session metadata
41    pub metadata: HashMap<String, String>,
42}
43
44/// Session status
45#[derive(Debug, Clone, Serialize, Deserialize)]
46pub enum SessionStatus {
47    /// Session starting
48    Starting,
49    /// Session running
50    Running,
51    /// Session paused
52    Paused,
53    /// Session stopping
54    Stopping,
55    /// Session completed
56    Completed,
57    /// Session failed
58    Failed { error: String },
59}
60
61/// Session data collection
62#[derive(Debug, Clone, Serialize, Deserialize)]
63pub struct SessionData {
64    /// Performance metrics
65    pub metrics: Vec<PerformanceMetric>,
66    /// Gate profiles
67    pub gate_profiles: HashMap<String, GateProfile>,
68    /// Memory snapshots
69    pub memory_snapshots: Vec<MemorySnapshot>,
70    /// Resource usage data
71    pub resource_data: Vec<ResourceUsage>,
72}
73
74/// Session configuration
75#[derive(Debug, Clone, Serialize, Deserialize)]
76pub struct SessionConfig {
77    /// Default session duration
78    pub default_duration: Duration,
79    /// Data collection interval
80    pub collection_interval: Duration,
81    /// Maximum concurrent sessions
82    pub max_concurrent_sessions: usize,
83    /// Session timeout
84    pub session_timeout: Duration,
85}
86
87/// Session storage configuration
88#[derive(Debug, Clone)]
89pub struct SessionStorage {
90    /// Storage backend
91    pub backend: StorageBackend,
92    /// Storage configuration
93    pub config: StorageConfig,
94    /// Data serialization
95    pub serialization: SerializationConfig,
96}
97
98/// Storage backend types
99#[derive(Debug, Clone)]
100pub enum StorageBackend {
101    /// In-memory storage
102    InMemory,
103    /// File system storage
104    FileSystem { path: String },
105    /// Database storage
106    Database { connection_string: String },
107    /// Cloud storage
108    Cloud {
109        provider: String,
110        config: HashMap<String, String>,
111    },
112}
113
114/// Storage configuration
115#[derive(Debug, Clone, Serialize, Deserialize)]
116pub struct StorageConfig {
117    /// Enable compression
118    pub enable_compression: bool,
119    /// Enable encryption
120    pub enable_encryption: bool,
121    /// Retention policy
122    pub retention_policy: DataRetentionPolicy,
123    /// Backup configuration
124    pub backup_config: Option<BackupConfig>,
125}
126
127/// Backup configuration
128#[derive(Debug, Clone, Serialize, Deserialize)]
129pub struct BackupConfig {
130    /// Backup frequency
131    pub frequency: Duration,
132    /// Backup location
133    pub location: String,
134    /// Backup retention
135    pub retention: Duration,
136    /// Enable incremental backups
137    pub incremental: bool,
138}
139
140/// Serialization configuration
141#[derive(Debug, Clone, Serialize, Deserialize)]
142pub struct SerializationConfig {
143    /// Serialization format
144    pub format: SerializationFormat,
145    /// Enable schema validation
146    pub schema_validation: bool,
147    /// Version compatibility
148    pub version_compatibility: bool,
149}
150
151/// Serialization formats
152#[derive(Debug, Clone, Serialize, Deserialize)]
153pub enum SerializationFormat {
154    /// JSON format
155    JSON,
156    /// Binary format
157    Binary,
158    /// Protocol buffers
159    ProtocolBuffers,
160    /// `MessagePack`
161    MessagePack,
162}
163
164/// Session analytics
165#[derive(Debug, Clone)]
166pub struct SessionAnalytics {
167    /// Analytics configuration
168    pub config: AnalyticsConfig,
169    /// Session statistics
170    pub statistics: SessionStatistics,
171    /// Performance insights
172    pub insights: Vec<PerformanceInsight>,
173    /// Trend analysis
174    pub trend_analysis: SessionTrendAnalysis,
175}
176
177/// Analytics configuration
178#[derive(Debug, Clone, Serialize, Deserialize)]
179pub struct AnalyticsConfig {
180    /// Enable real-time analytics
181    pub enable_realtime: bool,
182    /// Analytics depth
183    pub depth: AnalysisDepth,
184    /// Reporting frequency
185    pub reporting_frequency: Duration,
186    /// Custom metrics
187    pub custom_metrics: Vec<String>,
188}
189
190/// Session statistics
191#[derive(Debug, Clone, Serialize, Deserialize)]
192pub struct SessionStatistics {
193    /// Total sessions
194    pub total_sessions: usize,
195    /// Average session duration
196    pub avg_duration: Duration,
197    /// Session success rate
198    pub success_rate: f64,
199    /// Data collection efficiency
200    pub collection_efficiency: f64,
201}
202
203/// Performance insight
204#[derive(Debug, Clone, Serialize, Deserialize)]
205pub struct PerformanceInsight {
206    /// Insight type
207    pub insight_type: InsightType,
208    /// Insight description
209    pub description: String,
210    /// Confidence score
211    pub confidence: f64,
212    /// Impact assessment
213    pub impact: f64,
214    /// Recommended actions
215    pub actions: Vec<String>,
216}
217
218/// Types of performance insights
219#[derive(Debug, Clone, Serialize, Deserialize)]
220pub enum InsightType {
221    /// Performance optimization opportunity
222    OptimizationOpportunity,
223    /// Resource utilization insight
224    ResourceUtilization,
225    /// Scaling recommendation
226    ScalingRecommendation,
227    /// Configuration improvement
228    ConfigurationImprovement,
229    /// Architecture recommendation
230    ArchitectureRecommendation,
231}
232
233/// Session trend analysis
234#[derive(Debug, Clone, Serialize, Deserialize)]
235pub struct SessionTrendAnalysis {
236    /// Performance trends
237    pub performance_trends: HashMap<String, TrendDirection>,
238    /// Resource trends
239    pub resource_trends: HashMap<String, TrendDirection>,
240    /// Quality trends
241    pub quality_trends: HashMap<String, TrendDirection>,
242    /// Prediction accuracy trends
243    pub prediction_trends: HashMap<String, f64>,
244}