use async_std::task;
use buttplug::client::{
connectors::websocket::ButtplugWebsocketClientConnector, ButtplugClient, ButtplugClientEvent,
};
async fn device_enumeration_example() {
let connector = ButtplugWebsocketClientConnector::new("ws://localhost:12345", true);
let app_closure = |mut client: ButtplugClient| {
async move {
if let Err(err) = client.start_scanning().await {
println!("Client errored when starting scan! {}", err);
return;
}
loop {
match client.wait_for_event().await {
Ok(event) => match event {
ButtplugClientEvent::DeviceAdded(device) => {
println!("We got a device: {}", device.name);
}
ButtplugClientEvent::ServerDisconnect => {
println!("Server disconnected!");
break;
}
_ => {
println!("Got some other kind of event we don't care about");
}
},
Err(err) => {
println!("Error while waiting for client events: {}", err);
break;
}
}
if let Ok(devices) = client.devices().await {
println!("Devices currently connected:");
for dev in devices {
println!("- {}", dev.name);
}
}
}
println!("Exiting example");
}
};
ButtplugClient::run("Example Client", connector, app_closure)
.await
.unwrap();
}
fn main() {
task::block_on(async {
device_enumeration_example().await;
})
}