quantrs2_device/cloud/orchestration/performance/
network.rs

1//! Network optimization configurations
2
3use serde::{Deserialize, Serialize};
4use std::time::Duration;
5
6/// Network optimization configuration
7#[derive(Debug, Clone, Serialize, Deserialize)]
8pub struct NetworkOptimizationConfig {
9    /// CDN configuration
10    pub cdn: CDNConfig,
11    /// Connection optimization
12    pub connection: ConnectionOptimizationConfig,
13    /// Protocol optimization
14    pub protocol: ProtocolOptimizationConfig,
15}
16
17/// CDN configuration
18#[derive(Debug, Clone, Serialize, Deserialize)]
19pub struct CDNConfig {
20    /// Enable CDN
21    pub enabled: bool,
22    /// CDN providers
23    pub providers: Vec<String>,
24    /// Cache policies
25    pub cache_policies: Vec<CachePolicy>,
26}
27
28/// Cache policy
29#[derive(Debug, Clone, Serialize, Deserialize)]
30pub struct CachePolicy {
31    /// Resource type
32    pub resource_type: String,
33    /// TTL
34    pub ttl: Duration,
35    /// Cache key strategy
36    pub key_strategy: CacheKeyStrategy,
37}
38
39/// Cache key strategies
40#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
41pub enum CacheKeyStrategy {
42    Simple,
43    Hierarchical,
44    Hashed,
45    Custom(String),
46}
47
48/// Connection optimization configuration
49#[derive(Debug, Clone, Serialize, Deserialize)]
50pub struct ConnectionOptimizationConfig {
51    /// Keep-alive settings
52    pub keep_alive: KeepAliveConfig,
53    /// Connection pooling
54    pub pooling: ConnectionPoolingConfig,
55    /// Compression
56    pub compression: CompressionConfig,
57}
58
59/// Keep-alive configuration
60#[derive(Debug, Clone, Serialize, Deserialize)]
61pub struct KeepAliveConfig {
62    /// Enable keep-alive
63    pub enabled: bool,
64    /// Timeout
65    pub timeout: Duration,
66    /// Max requests per connection
67    pub max_requests: usize,
68}
69
70/// Connection pooling configuration
71#[derive(Debug, Clone, Serialize, Deserialize)]
72pub struct ConnectionPoolingConfig {
73    /// Pool size
74    pub pool_size: usize,
75    /// Max connections per host
76    pub max_per_host: usize,
77    /// Connection timeout
78    pub connection_timeout: Duration,
79}
80
81/// Compression configuration
82#[derive(Debug, Clone, Serialize, Deserialize)]
83pub struct CompressionConfig {
84    /// Enable compression
85    pub enabled: bool,
86    /// Compression algorithms
87    pub algorithms: Vec<CompressionAlgorithm>,
88    /// Compression level
89    pub level: u8,
90}
91
92/// Compression algorithms
93#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
94pub enum CompressionAlgorithm {
95    Gzip,
96    Deflate,
97    Brotli,
98    LZ4,
99}
100
101/// Protocol optimization configuration
102#[derive(Debug, Clone, Serialize, Deserialize)]
103pub struct ProtocolOptimizationConfig {
104    /// HTTP/2 configuration
105    pub http2: HTTP2Config,
106    /// QUIC configuration
107    pub quic: QUICConfig,
108    /// WebSocket configuration
109    pub websocket: WebSocketConfig,
110}
111
112/// HTTP/2 configuration
113#[derive(Debug, Clone, Serialize, Deserialize)]
114pub struct HTTP2Config {
115    /// Enable HTTP/2
116    pub enabled: bool,
117    /// Server push
118    pub server_push: bool,
119    /// Stream multiplexing
120    pub multiplexing: bool,
121}
122
123/// QUIC configuration
124#[derive(Debug, Clone, Serialize, Deserialize)]
125pub struct QUICConfig {
126    /// Enable QUIC
127    pub enabled: bool,
128    /// Connection migration
129    pub connection_migration: bool,
130    /// 0-RTT
131    pub zero_rtt: bool,
132}
133
134/// WebSocket configuration
135#[derive(Debug, Clone, Serialize, Deserialize)]
136pub struct WebSocketConfig {
137    /// Enable WebSocket
138    pub enabled: bool,
139    /// Ping interval
140    pub ping_interval: Duration,
141    /// Max frame size
142    pub max_frame_size: usize,
143}