From d6957df2b02e83a7bc94bea861bd60cae1ee00b1 Mon Sep 17 00:00:00 2001 From: Kyle Kelley <rgbkrk@gmail.com> Date: Fri, 13 Dec 2024 09:42:08 -0800 Subject: [PATCH 1/2] Simplify Socket::connect logic with straightforward error handling --- src/lib.rs | 21 ++++++--------------- 1 file changed, 6 insertions(+), 15 deletions(-) diff --git a/src/lib.rs b/src/lib.rs index fa6d830..720150f 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -303,22 +303,13 @@ pub trait Socket: Sized + Send { let backend = self.backend(); let endpoint = TryIntoEndpoint::try_into(endpoint)?; - let result = match util::connect_forever(endpoint).await { - Ok((socket, endpoint)) => match util::peer_connected(socket, backend).await { - Ok(peer_id) => Ok((endpoint, peer_id)), - Err(e) => Err(e), - }, - Err(e) => Err(e), - }; - match result { - Ok((endpoint, peer_id)) => { - if let Some(monitor) = self.backend().monitor().lock().as_mut() { - let _ = monitor.try_send(SocketEvent::Connected(endpoint, peer_id)); - } - Ok(()) - } - Err(e) => Err(e), + let (socket, endpoint) = util::connect_forever(endpoint).await?; + let peer_id = util::peer_connected(socket, backend).await?; + + if let Some(monitor) = self.backend().monitor().lock().as_mut() { + let _ = monitor.try_send(SocketEvent::Connected(endpoint, peer_id)); } + Ok(()) } /// Creates and setups new socket monitor From 98f9217d50d2634acbef6f0a4c5c2cd12dc58979 Mon Sep 17 00:00:00 2001 From: Kyle Kelley <rgbkrk@gmail.com> Date: Fri, 13 Dec 2024 09:57:15 -0800 Subject: [PATCH 2/2] refactor(lib): Simplify error handling in socket bind callback --- src/lib.rs | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/src/lib.rs b/src/lib.rs index 720150f..e244d5f 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -231,18 +231,16 @@ pub trait Socket: Sized + Send { let endpoint = TryIntoEndpoint::try_into(endpoint)?; let cloned_backend = self.backend(); - let cback = move |result| { + let cback = move |result: ZmqResult<(FramedIo, Endpoint)>| { let cloned_backend = cloned_backend.clone(); async move { let result = match result { - Ok((socket, endpoint)) => { - match util::peer_connected(socket, cloned_backend.clone()).await { - Ok(peer_id) => Ok((endpoint, peer_id)), - Err(e) => Err(e), - } - } + Ok((socket, endpoint)) => util::peer_connected(socket, cloned_backend.clone()) + .await + .map(|peer_id| (endpoint, peer_id)), Err(e) => Err(e), }; + match result { Ok((endpoint, peer_id)) => { if let Some(monitor) = cloned_backend.monitor().lock().as_mut() {