quantrs2_device/quantum_network/
error_correction.rs1use serde::{Deserialize, Serialize};
4use std::collections::HashMap;
5use std::time::Duration;
6
7#[derive(Debug, Clone, Serialize, Deserialize)]
8pub struct ForwardErrorCorrectionConfig {
9 pub fec_algorithm: String,
10 pub code_rate: f64,
11 pub interleaving: bool,
12}
13
14impl Default for ForwardErrorCorrectionConfig {
15 fn default() -> Self {
16 Self {
17 fec_algorithm: "Reed-Solomon".to_string(),
18 code_rate: 0.8,
19 interleaving: true,
20 }
21 }
22}
23
24#[derive(Debug, Clone, Serialize, Deserialize)]
25pub struct ARQConfig {
26 pub arq_type: String,
27 pub timeout_value: Duration,
28 pub maximum_retransmissions: u32,
29}
30
31impl Default for ARQConfig {
32 fn default() -> Self {
33 Self {
34 arq_type: "Go-Back-N".to_string(),
35 timeout_value: Duration::from_millis(100),
36 maximum_retransmissions: 5,
37 }
38 }
39}
40
41#[derive(Debug, Clone, Serialize, Deserialize)]
42pub struct HybridErrorCorrectionConfig {
43 pub fec_arq_combination: String,
44 pub adaptive_switching: bool,
45 pub performance_threshold: f64,
46 pub optimization_strategy: String,
47}
48
49impl Default for HybridErrorCorrectionConfig {
50 fn default() -> Self {
51 Self {
52 fec_arq_combination: "parallel".to_string(),
53 adaptive_switching: true,
54 performance_threshold: 0.95,
55 optimization_strategy: "adaptive".to_string(),
56 }
57 }
58}