diff --git a/crates/buttplug_client/src/client_event_loop.rs b/crates/buttplug_client/src/client_event_loop.rs index eae8b5177..4cab7d781 100644 --- a/crates/buttplug_client/src/client_event_loop.rs +++ b/crates/buttplug_client/src/client_event_loop.rs @@ -301,6 +301,7 @@ where let device = self.create_client_device(device); self.send_client_event(ButtplugClientEvent::DeviceAdded(device)); } + self.send_client_event(ButtplugClientEvent::DeviceListReceived); true } } diff --git a/crates/buttplug_client/src/lib.rs b/crates/buttplug_client/src/lib.rs index ee6572b36..3710bcce6 100644 --- a/crates/buttplug_client/src/lib.rs +++ b/crates/buttplug_client/src/lib.rs @@ -123,6 +123,9 @@ pub enum ButtplugClientEvent { /// Emitted when a scanning session (started via a StartScanning call on /// [ButtplugClient]) has finished. ScanningFinished, + /// Emitted when the device list is received as a response to a + /// DeviceListRequest call, which is sent during the handshake. + DeviceListReceived, /// Emitted when a device has been added to the server. Includes a /// [ButtplugClientDevice] object representing the device. DeviceAdded(ButtplugClientDevice), diff --git a/crates/buttplug_tests/tests/test_client.rs b/crates/buttplug_tests/tests/test_client.rs index 1ef753372..7e79835e7 100644 --- a/crates/buttplug_tests/tests/test_client.rs +++ b/crates/buttplug_tests/tests/test_client.rs @@ -141,6 +141,10 @@ async fn test_client_scanning_finished() { let (client, _) = test_client_with_device().await; let mut recv = client.event_stream(); assert!(client.start_scanning().await.is_ok()); + assert!(matches!( + recv.next().await.expect("Test, assuming infallible."), + ButtplugClientEvent::DeviceListReceived + )); assert!(matches!( recv.next().await.expect("Test, assuming infallible."), ButtplugClientEvent::ScanningFinished diff --git a/crates/buttplug_tests/tests/util/device_test/client/client_v3/client.rs b/crates/buttplug_tests/tests/util/device_test/client/client_v3/client.rs index 5c54cb6c1..9b0850f30 100644 --- a/crates/buttplug_tests/tests/util/device_test/client/client_v3/client.rs +++ b/crates/buttplug_tests/tests/util/device_test/client/client_v3/client.rs @@ -117,6 +117,9 @@ pub enum ButtplugClientEvent { /// Emitted when a device has been removed from the server. Includes a /// [ButtplugClientDevice] object representing the device. DeviceRemoved(Arc), + /// Emitted when the device list is received as a response to a + /// DeviceListRequest call, which is sent during the handshake. + DeviceListReceived, /// Emitted when a client has not pinged the server in a sufficient amount of /// time. PingTimeout, diff --git a/crates/buttplug_tests/tests/util/device_test/client/client_v3/client_event_loop.rs b/crates/buttplug_tests/tests/util/device_test/client/client_v3/client_event_loop.rs index 00e4a2994..5e633068b 100644 --- a/crates/buttplug_tests/tests/util/device_test/client/client_v3/client_event_loop.rs +++ b/crates/buttplug_tests/tests/util/device_test/client/client_v3/client_event_loop.rs @@ -309,6 +309,7 @@ where let device = self.create_client_device(d); self.send_client_event(ButtplugClientEvent::DeviceAdded(device)); } + self.send_client_event(ButtplugClientEvent::DeviceListReceived); true } }