From d4a406e93ec498df4966afcb01d6313bb0fe2e71 Mon Sep 17 00:00:00 2001 From: Philipp Oppermann Date: Fri, 5 Apr 2024 20:10:58 +0200 Subject: [PATCH] Adjust generated code and examples for latest `ros2-client` version --- examples/rust-ros2-dataflow/node/src/main.rs | 8 +++++--- libraries/extensions/ros2-bridge/msg-gen/src/lib.rs | 5 +++-- libraries/extensions/ros2-bridge/python/src/lib.rs | 5 ++++- 3 files changed, 12 insertions(+), 6 deletions(-) diff --git a/examples/rust-ros2-dataflow/node/src/main.rs b/examples/rust-ros2-dataflow/node/src/main.rs index 32ac8cf4..395a5e34 100644 --- a/examples/rust-ros2-dataflow/node/src/main.rs +++ b/examples/rust-ros2-dataflow/node/src/main.rs @@ -25,7 +25,9 @@ fn main() -> eyre::Result<()> { // spawn a background spinner task that is handles service discovery (and other things) let pool = futures::executor::ThreadPool::new()?; - let spinner = ros_node.spinner(); + let spinner = ros_node + .spinner() + .map_err(|e| eyre::eyre!("failed to create spinner: {e:?}"))?; pool.spawn(async { if let Err(err) = spinner.spin().await { eprintln!("ros2 spinner failed: {err:?}"); @@ -150,7 +152,7 @@ async fn add_two_ints_request( let response = add_client.async_receive_response(request_id); futures::pin_mut!(response); - let timeout = futures_timer::Delay::new(Duration::from_secs(5)); + let timeout = futures_timer::Delay::new(Duration::from_secs(15)); match futures::future::select(response, timeout).await { futures::future::Either::Left((Ok(response), _)) => { println!("received response: {response:?}"); @@ -172,7 +174,7 @@ fn init_ros_node() -> eyre::Result { .map_err(|e| eyre!("failed to create ROS2 node name: {e}"))?, NodeOptions::new().enable_rosout(true), ) - .context("failed to create ros2 node") + .map_err(|e| eyre::eyre!("failed to create ros2 node: {e:?}")) } fn create_vel_publisher( diff --git a/libraries/extensions/ros2-bridge/msg-gen/src/lib.rs b/libraries/extensions/ros2-bridge/msg-gen/src/lib.rs index e338410c..9e598a06 100644 --- a/libraries/extensions/ros2-bridge/msg-gen/src/lib.rs +++ b/libraries/extensions/ros2-bridge/msg-gen/src/lib.rs @@ -126,9 +126,10 @@ where let name = ros2_client::NodeName::new(name_space, base_name).map_err(|e| eyre::eyre!(e))?; let options = ros2_client::NodeOptions::new().enable_rosout(true); - let mut node = self.context.new_node(name, options)?; + let mut node = self.context.new_node(name, options) + .map_err(|e| eyre::eyre!("failed to create ROS2 node: {e:?}"))?; - let spinner = node.spinner(); + let spinner = node.spinner().context("failed to create spinner")?; self.executor.spawn(async { if let Err(err) = spinner.spin().await { eprintln!("ros2 spinner failed: {err:?}"); diff --git a/libraries/extensions/ros2-bridge/python/src/lib.rs b/libraries/extensions/ros2-bridge/python/src/lib.rs index c9492dca..ac0a0bec 100644 --- a/libraries/extensions/ros2-bridge/python/src/lib.rs +++ b/libraries/extensions/ros2-bridge/python/src/lib.rs @@ -81,7 +81,10 @@ impl Ros2Context { let name = ros2_client::NodeName::new(namespace, name) .map_err(|err| eyre!("invalid node name: {err}"))?; Ok(Ros2Node { - node: self.context.new_node(name, options.into())?, + node: self + .context + .new_node(name, options.into()) + .map_err(|e| eyre::eyre!("failed to create ROS2 node: {e:?}"))?, messages: self.messages.clone(), }) }