quantrs2_device/cloud/orchestration/load_balancing/
session.rs1use serde::{Deserialize, Serialize};
4use std::time::Duration;
5
6#[derive(Debug, Clone, Serialize, Deserialize)]
8pub struct SessionManagementConfig {
9 pub affinity: SessionAffinityConfig,
11 pub persistence: SessionPersistenceConfig,
13 pub replication: SessionReplicationConfig,
15}
16
17#[derive(Debug, Clone, Serialize, Deserialize)]
19pub struct SessionAffinityConfig {
20 pub enabled: bool,
22 pub method: AffinityMethod,
24 pub timeout: Duration,
26}
27
28#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
30pub enum AffinityMethod {
31 CookieBased,
32 IPBased,
33 SessionID,
34 Custom(String),
35}
36
37#[derive(Debug, Clone, Serialize, Deserialize)]
39pub struct SessionPersistenceConfig {
40 pub persistence_type: PersistenceType,
42 pub storage: SessionStorageConfig,
44 pub encryption: SessionEncryptionConfig,
46}
47
48#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
50pub enum PersistenceType {
51 InMemory,
52 Database,
53 Redis,
54 File,
55 Custom(String),
56}
57
58#[derive(Debug, Clone, Serialize, Deserialize)]
60pub struct SessionStorageConfig {
61 pub storage_type: String,
63 pub connection_string: String,
65 pub pool_size: usize,
67}
68
69#[derive(Debug, Clone, Serialize, Deserialize)]
71pub struct SessionEncryptionConfig {
72 pub enabled: bool,
74 pub algorithm: String,
76 pub key_management: KeyManagementConfig,
78}
79
80#[derive(Debug, Clone, Serialize, Deserialize)]
82pub struct KeyManagementConfig {
83 pub key_source: KeySource,
85 pub rotation: KeyRotationConfig,
87 pub backup: KeyBackupConfig,
89}
90
91#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
93pub enum KeySource {
94 Static,
95 Environment,
96 KeyVault,
97 HSM,
98 Custom(String),
99}
100
101#[derive(Debug, Clone, Serialize, Deserialize)]
103pub struct KeyRotationConfig {
104 pub enabled: bool,
106 pub interval: Duration,
108 pub overlap_period: Duration,
110}
111
112#[derive(Debug, Clone, Serialize, Deserialize)]
114pub struct KeyBackupConfig {
115 pub enabled: bool,
117 pub frequency: Duration,
119 pub location: String,
121}
122
123#[derive(Debug, Clone, Serialize, Deserialize)]
125pub struct SessionReplicationConfig {
126 pub enabled: bool,
128 pub strategy: ReplicationStrategy,
130 pub factor: usize,
132 pub consistency: ConsistencyLevel,
134}
135
136#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
138pub enum ReplicationStrategy {
139 Synchronous,
140 Asynchronous,
141 SemiSynchronous,
142 EventualConsistency,
143}
144
145#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
147pub enum ConsistencyLevel {
148 Strong,
149 Eventual,
150 Session,
151 Bounded,
152}