session tweak, update docs

This commit is contained in:
2026-04-09 23:25:41 -03:00
parent 512d8ecef8
commit 6f8f260b05
8 changed files with 652 additions and 459 deletions

View File

@@ -112,6 +112,7 @@ impl Session {
// Scene relay: Unix socket for Python scene detection.
let socket_path = stream_dir.join(SCENE_SOCKET_NAME);
let (scene_tx, scene_rx) = tokio::sync::mpsc::channel(32);
info!("Scene relay: spawning for {}", socket_path.display());
tokio::spawn(scene_relay_task(socket_path, scene_rx));
// Tell Python which session dir to watch.
@@ -217,9 +218,22 @@ async fn scene_relay_task(
last_keyframe = Some(pkt.data.clone());
}
let stream = client.as_mut().unwrap();
if stream.write_all(&pkt.data).await.is_err() {
info!("Scene relay: client disconnected");
client = None;
// Use a short timeout so a slow reader doesn't stall us.
// A stalled relay would queue old frames — better to drop.
let write_result = tokio::time::timeout(
std::time::Duration::from_millis(100),
stream.write_all(&pkt.data),
).await;
match write_result {
Ok(Ok(())) => {}
Ok(Err(_)) => {
info!("Scene relay: client disconnected");
client = None;
}
Err(_) => {
// Timeout — reader too slow, drop this packet.
debug!("Scene relay: slow reader, dropping packet");
}
}
}
None => break, // Channel closed, session ending.