use cvm12_rs::qmp; use tokio::net::UnixStream; #[tokio::main] async fn main() { let subscriber = tracing_subscriber::FmtSubscriber::builder() .with_max_level(tracing::Level::TRACE) .finish(); tracing::subscriber::set_global_default(subscriber).expect("You Banned"); // Create a stream to connect let stream = UnixStream::connect("/home/lily/vms/xpiss/qmp.sock") .await .expect("Could not connect"); let client = qmp::QmpClient::new(stream); // Handshake QMP client.handshake().await.expect("Could not handshake QMP"); println!("Connected to QMP server"); // let's try to get all STOP events from QMP now. let mut rx = client.subscribe_to_event("STOP".into()).await.unwrap(); // If this worked, then now we can recieve all the events. // This code here allows running a VM with the -no-shutdown option, // automatially resetting it on shutdown. while let Some(message) = rx.recv().await { println!("Got stop event! {:?}", message); let res1 = client.execute("system_reset".into(), None).await.expect("FUCK"); let res2 = client.execute("cont".into(), None).await.expect("FUCK"); println!("Result of running: {:?}, {:?}", res1, res2); } //println!("Hello, world!"); }