pocket_tts_cli/server/
state.rs

1//! Server state management
2
3use pocket_tts::{ModelState, TTSModel};
4use std::sync::Arc;
5use tokio::sync::Mutex;
6
7#[derive(Clone)]
8pub struct AppState {
9    pub model: Arc<TTSModel>,
10    /// Default voice state (pre-loaded at server start)
11    pub default_voice_state: Arc<ModelState>,
12    /// Lock to ensure sequential processing of generation requests
13    /// (Matching Python's "not thread safe" / single worker behavior)
14    pub lock: Arc<Mutex<()>>,
15}
16
17impl AppState {
18    pub fn new(model: TTSModel, default_voice_state: ModelState) -> Self {
19        Self {
20            model: Arc::new(model),
21            default_voice_state: Arc::new(default_voice_state),
22            lock: Arc::new(Mutex::new(())),
23        }
24    }
25}