use mcpmesh_local_api::{StreamFrame, connect_control_default};
#[tokio::main(flavor = "current_thread")]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let mesh = connect_control_default().await?;
let mut stream = mesh.subscribe().await?;
while let Some(frame) = stream.next().await? {
match frame {
StreamFrame::Snapshot {
active_sessions,
reachability,
} => println!(
"snapshot: {} active session(s), {} peer(s) probed",
active_sessions.len(),
reachability.len()
),
StreamFrame::Event { record } => println!(
"{} {:?} peer={} service={}",
record.ts,
record.kind,
record.peer.as_deref().unwrap_or("-"),
record.service.as_deref().unwrap_or("-"),
),
StreamFrame::Lagged { dropped } => println!("(lagged: {dropped} events skipped)"),
}
}
println!("stream closed");
Ok(())
}