Buttplug sex toy control library
1use buttplug_client::ButtplugClient;
2use buttplug_client_in_process::{ButtplugInProcessClientConnectorBuilder, in_process_client};
3use buttplug_server::{ButtplugServerBuilder, device::ServerDeviceManagerBuilder};
4use buttplug_server_device_config::DeviceConfigurationManagerBuilder;
5use buttplug_server_hwmgr_btleplug::BtlePlugCommunicationManagerBuilder;
6
7#[allow(dead_code)]
8async fn main_the_hard_way() -> anyhow::Result<()> {
9 let dcm = DeviceConfigurationManagerBuilder::default()
10 .finish()
11 .unwrap();
12
13 let mut device_manager_builder = ServerDeviceManagerBuilder::new(dcm);
14 device_manager_builder.comm_manager(BtlePlugCommunicationManagerBuilder::default());
15
16 // This is how we add Bluetooth manually. (We could also do this with any other communication manager.)
17
18 let server = ButtplugServerBuilder::new(device_manager_builder.finish().unwrap())
19 .finish()
20 .unwrap();
21
22 // First off, we'll set up our Embedded Connector.
23 let connector = ButtplugInProcessClientConnectorBuilder::default()
24 .server(server)
25 .finish();
26
27 let client = ButtplugClient::new("Example Client");
28 client.connect(connector).await?;
29
30 Ok(())
31}
32
33#[tokio::main]
34async fn main() -> anyhow::Result<()> {
35 // This is the easy way, it sets up an embedded server with everything set up automatically
36 let _client = in_process_client("Example Client").await;
37
38 Ok(())
39}