session tweak, update docs
This commit is contained in:
@@ -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.
|
||||
|
||||
Reference in New Issue
Block a user