From 8498065959a77d1e12b4f5ae95a20b80413edec6 Mon Sep 17 00:00:00 2001 From: MaxVerevkin Date: Sat, 14 Oct 2023 16:28:09 +0300 Subject: [PATCH] =?UTF-8?q?=E2=AC=86=EF=B8=8F=20zb:=20Update=20event-liste?= =?UTF-8?q?ner=20to=203.0.0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- book/src/blocking.md | 4 ++-- book/src/server.md | 4 ++-- zbus/Cargo.toml | 2 +- zbus/src/blocking/connection/mod.rs | 16 ++++++++++++---- zbus/src/blocking/object_server.rs | 4 ++-- zbus/src/connection/mod.rs | 2 +- zbus/src/object_server/mod.rs | 2 +- zbus/src/proxy/mod.rs | 2 +- zbus/tests/e2e.rs | 4 +++- 9 files changed, 25 insertions(+), 15 deletions(-) diff --git a/book/src/blocking.md b/book/src/blocking.md index a04e9741d..391bfe8a4 100644 --- a/book/src/blocking.md +++ b/book/src/blocking.md @@ -185,13 +185,13 @@ fn main() -> Result<(), Box> { name: "GreeterName".to_string(), done: event_listener::Event::new(), }; - let done_listener = greeter.done.listen(); + let mut done_listener = greeter.done.listen(); let _handle = connection::Builder::session()? .name("org.zbus.MyGreeter")? .serve_at("/org/zbus/MyGreeter", greeter)? .build()?; - done_listener.wait(); + done_listener.as_mut().wait(); Ok(()) } diff --git a/book/src/server.md b/book/src/server.md index 24234bbeb..1b911fcfb 100644 --- a/book/src/server.md +++ b/book/src/server.md @@ -261,14 +261,14 @@ async fn main() -> Result<()> { name: "GreeterName".to_string(), done: event_listener::Event::new(), }; - let done_listener = greeter.done.listen(); + let mut done_listener = greeter.done.listen(); let _connection = Builder::session()? .name("org.zbus.MyGreeter")? .serve_at("/org/zbus/MyGreeter", greeter)? .build() .await?; - done_listener.wait(); + done_listener.as_mut().wait(); Ok(()) } diff --git a/zbus/Cargo.toml b/zbus/Cargo.toml index 3e4f9768b..189e42c21 100644 --- a/zbus/Cargo.toml +++ b/zbus/Cargo.toml @@ -62,7 +62,7 @@ hex = "0.4.3" ordered-stream = "0.2" rand = "0.8.5" sha1 = { version = "0.10.5", features = ["std"] } -event-listener = "2.5.3" +event-listener = "3.0.0" static_assertions = "1.1.0" async-trait = "0.1.58" async-fs = { version = "1.6.0", optional = true } diff --git a/zbus/src/blocking/connection/mod.rs b/zbus/src/blocking/connection/mod.rs index f43f7e759..98539b089 100644 --- a/zbus/src/blocking/connection/mod.rs +++ b/zbus/src/blocking/connection/mod.rs @@ -313,7 +313,10 @@ mod tests { }); let c = Builder::unix_stream(p1).p2p().build().unwrap(); - let listener = c.monitor_activity(); + + let mut listener = Box::pin(c.monitor_activity()); + listener.as_mut().listen(); + let mut s = MessageIterator::from(&c); tx.send(()).unwrap(); let m = s.next().unwrap().unwrap(); @@ -326,11 +329,16 @@ mod tests { assert_eq!(val, "yay"); // there was some activity - listener.wait(); + listener.as_mut().wait(); // eventually, nothing happens and it will timeout loop { - let listener = c.monitor_activity(); - if !listener.wait_timeout(std::time::Duration::from_millis(10)) { + let mut listener = Box::pin(c.monitor_activity()); + listener.as_mut().listen(); + if listener + .as_mut() + .wait_timeout(std::time::Duration::from_millis(10)) + .is_none() + { break; } } diff --git a/zbus/src/blocking/object_server.rs b/zbus/src/blocking/object_server.rs index 74657c4de..03d20511f 100644 --- a/zbus/src/blocking/object_server.rs +++ b/zbus/src/blocking/object_server.rs @@ -115,13 +115,13 @@ where /// let connection = Connection::session()?; /// /// let quit_event = Event::new(); -/// let quit_listener = quit_event.listen(); +/// let mut quit_listener = quit_event.listen(); /// let interface = Example::new(quit_event); /// connection /// .object_server() /// .at("/org/zbus/path", interface)?; /// -/// quit_listener.wait(); +/// quit_listener.as_mut().wait(); /// # Ok::<_, Box>(()) /// ``` #[derive(Debug)] diff --git a/zbus/src/connection/mod.rs b/zbus/src/connection/mod.rs index 892d1f72a..55da7181d 100644 --- a/zbus/src/connection/mod.rs +++ b/zbus/src/connection/mod.rs @@ -1206,7 +1206,7 @@ impl Connection { /// /// This function is meant for the caller to implement idle or timeout on inactivity. pub fn monitor_activity(&self) -> EventListener { - self.inner.activity_event.listen() + EventListener::new(&self.inner.activity_event) } /// Returns the peer credentials. diff --git a/zbus/src/object_server/mod.rs b/zbus/src/object_server/mod.rs index 85c6aab7a..e7332bd1a 100644 --- a/zbus/src/object_server/mod.rs +++ b/zbus/src/object_server/mod.rs @@ -781,7 +781,7 @@ impl ResponseDispatchNotifier { /// Create a new `NotifyResponse`. pub fn new(response: R) -> (Self, EventListener) { let event = Event::new(); - let listener = event.listen(); + let listener = EventListener::new(&event); ( Self { response, diff --git a/zbus/src/proxy/mod.rs b/zbus/src/proxy/mod.rs index a929a7898..63e126104 100644 --- a/zbus/src/proxy/mod.rs +++ b/zbus/src/proxy/mod.rs @@ -208,7 +208,7 @@ where pub struct PropertyStream<'a, T> { name: &'a str, proxy: Proxy<'a>, - changed_listener: EventListener, + changed_listener: Pin>, phantom: std::marker::PhantomData, } diff --git a/zbus/tests/e2e.rs b/zbus/tests/e2e.rs index e2b692c11..5f4cd215a 100644 --- a/zbus/tests/e2e.rs +++ b/zbus/tests/e2e.rs @@ -232,6 +232,8 @@ impl MyIfaceImpl { ) -> zbus::fdo::Result> { debug!("`TestResponseNotify` called."); let (response, listener) = ResponseDispatchNotifier::new(String::from("Meaning of life")); + let mut listener = Box::pin(listener); + listener.as_mut().listen(); let ctxt = ctxt.to_owned(); conn.executor() .spawn( @@ -693,6 +695,7 @@ fn iface_and_proxy_unix_p2p() { #[instrument] async fn iface_and_proxy_(p2p: bool) { let event = event_listener::Event::new(); + let listen = event.listen(); let guid = zbus::Guid::generate(); let (service_conn_builder, client_conn_builder) = if p2p { @@ -770,7 +773,6 @@ async fn iface_and_proxy_(p2p: bool) { debug!("Client connection created: {:?}", client_conn); debug!("Service connection created: {:?}", service_conn); - let listen = event.listen(); let child = client_conn .executor() .spawn(my_iface_test(client_conn.clone(), event), "client_task");