Skip to main content

ass_editor/sessions/
config.rs

1//! Session configuration and statistics types.
2//!
3//! Defines [`SessionConfig`] for tuning session-manager behaviour and
4//! [`SessionStats`] for reporting active sessions, memory usage, and
5//! arena-reset activity.
6
7/// Configuration for session management
8#[derive(Debug, Clone)]
9pub struct SessionConfig {
10    /// Maximum number of concurrent sessions
11    pub max_sessions: usize,
12
13    /// Maximum memory usage per session in bytes
14    pub max_memory_per_session: usize,
15
16    /// Total memory limit across all sessions
17    pub total_memory_limit: usize,
18
19    /// Whether to enable automatic cleanup of unused sessions
20    pub auto_cleanup: bool,
21
22    /// Interval for arena resets (0 = never reset)
23    pub arena_reset_interval: usize,
24
25    /// Whether to share extension registry across sessions
26    pub share_extensions: bool,
27}
28
29impl Default for SessionConfig {
30    fn default() -> Self {
31        Self {
32            max_sessions: 50,
33            max_memory_per_session: 100 * 1024 * 1024, // 100MB per session
34            total_memory_limit: 1024 * 1024 * 1024,    // 1GB total
35            auto_cleanup: true,
36            arena_reset_interval: 1000, // Reset every 1000 operations
37            share_extensions: true,
38        }
39    }
40}
41
42/// Statistics about session manager
43#[derive(Debug, Clone, PartialEq, Eq)]
44pub struct SessionStats {
45    /// Number of active sessions
46    pub active_sessions: usize,
47
48    /// Total memory usage across all sessions
49    pub total_memory_usage: usize,
50
51    /// Number of operations since last cleanup
52    pub operations_since_cleanup: usize,
53
54    /// Number of arena resets performed
55    pub arena_resets: usize,
56}