1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
//! Session handler registry.
//!
//! Type alias for the session handler registry, keyed by purpose.
use MultiServiceRegistry;
use crate::;
/// Registry for session handlers, keyed by purpose.
///
/// This is a type alias for `MultiServiceRegistry<SessionHandlerKey, dyn EmptySessionHandler>`.
/// Currently only `Empty` key is supported for empty session handlers.
///
/// # Architecture
///
/// Following the VFS pattern (mechanism/policy separation):
/// - **Mechanism (driver)**: This registry type + `EmptySessionHandler` trait
/// - **Policy (module)**: `ScratchBufferHandler` in `server/modules/scratch-buffer`
///
/// # Example
///
/// ```ignore
/// use reovim_driver_session::{SessionHandlerKey, SessionHandlerRegistry, EmptySessionHandler};
/// use std::sync::Arc;
///
/// // Create registry (typically done by runner)
/// let registry = SessionHandlerRegistry::new();
///
/// // Modules register their handlers during init
/// registry.register(SessionHandlerKey::Empty, Arc::new(scratch_buffer_handler));
///
/// // Runner queries with typed key
/// let handler = registry.get(&SessionHandlerKey::Empty);
/// ```
pub type SessionHandlerRegistry = ;