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}