quantrs2_device/cloud/orchestration/load_balancing/
session.rs

1//! Session management configurations
2
3use serde::{Deserialize, Serialize};
4use std::time::Duration;
5
6/// Session management configuration
7#[derive(Debug, Clone, Serialize, Deserialize)]
8pub struct SessionManagementConfig {
9    /// Session affinity
10    pub affinity: SessionAffinityConfig,
11    /// Session persistence
12    pub persistence: SessionPersistenceConfig,
13    /// Session replication
14    pub replication: SessionReplicationConfig,
15}
16
17/// Session affinity configuration
18#[derive(Debug, Clone, Serialize, Deserialize)]
19pub struct SessionAffinityConfig {
20    /// Enable session affinity
21    pub enabled: bool,
22    /// Affinity method
23    pub method: AffinityMethod,
24    /// Timeout
25    pub timeout: Duration,
26}
27
28/// Affinity methods
29#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
30pub enum AffinityMethod {
31    CookieBased,
32    IPBased,
33    SessionID,
34    Custom(String),
35}
36
37/// Session persistence configuration
38#[derive(Debug, Clone, Serialize, Deserialize)]
39pub struct SessionPersistenceConfig {
40    /// Persistence type
41    pub persistence_type: PersistenceType,
42    /// Storage backend
43    pub storage: SessionStorageConfig,
44    /// Encryption
45    pub encryption: SessionEncryptionConfig,
46}
47
48/// Persistence types
49#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
50pub enum PersistenceType {
51    InMemory,
52    Database,
53    Redis,
54    File,
55    Custom(String),
56}
57
58/// Session storage configuration
59#[derive(Debug, Clone, Serialize, Deserialize)]
60pub struct SessionStorageConfig {
61    /// Storage type
62    pub storage_type: String,
63    /// Connection string
64    pub connection_string: String,
65    /// Pool size
66    pub pool_size: usize,
67}
68
69/// Session encryption configuration
70#[derive(Debug, Clone, Serialize, Deserialize)]
71pub struct SessionEncryptionConfig {
72    /// Enable encryption
73    pub enabled: bool,
74    /// Encryption algorithm
75    pub algorithm: String,
76    /// Key management
77    pub key_management: KeyManagementConfig,
78}
79
80/// Key management configuration
81#[derive(Debug, Clone, Serialize, Deserialize)]
82pub struct KeyManagementConfig {
83    /// Key source
84    pub key_source: KeySource,
85    /// Key rotation
86    pub rotation: KeyRotationConfig,
87    /// Key backup
88    pub backup: KeyBackupConfig,
89}
90
91/// Key sources
92#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
93pub enum KeySource {
94    Static,
95    Environment,
96    KeyVault,
97    HSM,
98    Custom(String),
99}
100
101/// Key rotation configuration
102#[derive(Debug, Clone, Serialize, Deserialize)]
103pub struct KeyRotationConfig {
104    /// Enable rotation
105    pub enabled: bool,
106    /// Rotation interval
107    pub interval: Duration,
108    /// Overlap period
109    pub overlap_period: Duration,
110}
111
112/// Key backup configuration
113#[derive(Debug, Clone, Serialize, Deserialize)]
114pub struct KeyBackupConfig {
115    /// Enable backup
116    pub enabled: bool,
117    /// Backup frequency
118    pub frequency: Duration,
119    /// Backup location
120    pub location: String,
121}
122
123/// Session replication configuration
124#[derive(Debug, Clone, Serialize, Deserialize)]
125pub struct SessionReplicationConfig {
126    /// Enable replication
127    pub enabled: bool,
128    /// Replication strategy
129    pub strategy: ReplicationStrategy,
130    /// Replication factor
131    pub factor: usize,
132    /// Consistency level
133    pub consistency: ConsistencyLevel,
134}
135
136/// Replication strategies
137#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
138pub enum ReplicationStrategy {
139    Synchronous,
140    Asynchronous,
141    SemiSynchronous,
142    EventualConsistency,
143}
144
145/// Consistency levels
146#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
147pub enum ConsistencyLevel {
148    Strong,
149    Eventual,
150    Session,
151    Bounded,
152}