quantrs2_device/cloud/orchestration/performance/
network.rs1use serde::{Deserialize, Serialize};
4use std::time::Duration;
5
6#[derive(Debug, Clone, Serialize, Deserialize)]
8pub struct NetworkOptimizationConfig {
9 pub cdn: CDNConfig,
11 pub connection: ConnectionOptimizationConfig,
13 pub protocol: ProtocolOptimizationConfig,
15}
16
17#[derive(Debug, Clone, Serialize, Deserialize)]
19pub struct CDNConfig {
20 pub enabled: bool,
22 pub providers: Vec<String>,
24 pub cache_policies: Vec<CachePolicy>,
26}
27
28#[derive(Debug, Clone, Serialize, Deserialize)]
30pub struct CachePolicy {
31 pub resource_type: String,
33 pub ttl: Duration,
35 pub key_strategy: CacheKeyStrategy,
37}
38
39#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
41pub enum CacheKeyStrategy {
42 Simple,
43 Hierarchical,
44 Hashed,
45 Custom(String),
46}
47
48#[derive(Debug, Clone, Serialize, Deserialize)]
50pub struct ConnectionOptimizationConfig {
51 pub keep_alive: KeepAliveConfig,
53 pub pooling: ConnectionPoolingConfig,
55 pub compression: CompressionConfig,
57}
58
59#[derive(Debug, Clone, Serialize, Deserialize)]
61pub struct KeepAliveConfig {
62 pub enabled: bool,
64 pub timeout: Duration,
66 pub max_requests: usize,
68}
69
70#[derive(Debug, Clone, Serialize, Deserialize)]
72pub struct ConnectionPoolingConfig {
73 pub pool_size: usize,
75 pub max_per_host: usize,
77 pub connection_timeout: Duration,
79}
80
81#[derive(Debug, Clone, Serialize, Deserialize)]
83pub struct CompressionConfig {
84 pub enabled: bool,
86 pub algorithms: Vec<CompressionAlgorithm>,
88 pub level: u8,
90}
91
92#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
94pub enum CompressionAlgorithm {
95 Gzip,
96 Deflate,
97 Brotli,
98 LZ4,
99}
100
101#[derive(Debug, Clone, Serialize, Deserialize)]
103pub struct ProtocolOptimizationConfig {
104 pub http2: HTTP2Config,
106 pub quic: QUICConfig,
108 pub websocket: WebSocketConfig,
110}
111
112#[derive(Debug, Clone, Serialize, Deserialize)]
114pub struct HTTP2Config {
115 pub enabled: bool,
117 pub server_push: bool,
119 pub multiplexing: bool,
121}
122
123#[derive(Debug, Clone, Serialize, Deserialize)]
125pub struct QUICConfig {
126 pub enabled: bool,
128 pub connection_migration: bool,
130 pub zero_rtt: bool,
132}
133
134#[derive(Debug, Clone, Serialize, Deserialize)]
136pub struct WebSocketConfig {
137 pub enabled: bool,
139 pub ping_interval: Duration,
141 pub max_frame_size: usize,
143}