INNER CODE UNIT · Rust
sidecar_start
mouseart2025/AI-Reader-V2 · frontend/src-tauri/src/lib.rs:55
async fn sidecar_start(
state: State<'_, Mutex<SidecarState>>,
app: tauri::AppHandle,
) -> Result<SidecarInfo, String> {
// Check if already running or starting
{
let mut s = state.lock().map_err(|e| format!("Lock error: {e}"))?;
if let (Some(port), Some(token)) = (s.port, s.token.clone()) {
return Ok(SidecarInfo { port, token });
}
if s.starting {
return Err("Sidecar is already starting".to_string());
}
s.starting = true;
}
// Pick a random port in ephemeral range
let port: u16 = rand::thread_rng().gen_range(49152..=65535);