feat: remove is_available's node mut-ref dependency, also remove the !Sync constraint
on the future returned
This commit is contained in:
parent
13902524f7
commit
17584344c2
|
|
@ -10,7 +10,7 @@ fn main() -> Result<(), Box<dyn std::error::Error>> {
|
|||
let ctx = r2r::Context::create()?;
|
||||
let mut node = r2r::Node::create(ctx, "testnode", "")?;
|
||||
let client = node.create_action_client::<Fibonacci::Action>("/fibonacci")?;
|
||||
let action_server_available = node.is_available(&client)?;
|
||||
let action_server_available = r2r::Node::is_available(&client)?;
|
||||
|
||||
// signal that we are done
|
||||
let done = Arc::new(Mutex::new(false));
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ fn main() -> Result<(), Box<dyn std::error::Error>> {
|
|||
let mut node = r2r::Node::create(ctx, "testnode", "")?;
|
||||
let client =
|
||||
node.create_action_client_untyped("/fibonacci", "example_interfaces/action/Fibonacci")?;
|
||||
let action_server_available = node.is_available(&client)?;
|
||||
let action_server_available = r2r::Node::is_available(&client)?;
|
||||
|
||||
// signal that we are done
|
||||
let done = Arc::new(Mutex::new(false));
|
||||
|
|
|
|||
|
|
@ -33,7 +33,7 @@ fn main() -> Result<(), Box<dyn std::error::Error>> {
|
|||
let mut node = r2r::Node::create(ctx, "testnode", "")?;
|
||||
let client = node.create_client::<AddTwoInts::Service>("/add_two_ints")?;
|
||||
|
||||
let service_available = node.is_available(&client)?;
|
||||
let service_available = r2r::Node::is_available(&client)?;
|
||||
|
||||
let mut pool = LocalPool::new();
|
||||
let spawner = pool.spawner();
|
||||
|
|
|
|||
|
|
@ -22,7 +22,7 @@ fn main() -> Result<(), Box<dyn std::error::Error>> {
|
|||
let mut timer = node.create_wall_timer(std::time::Duration::from_millis(250))?;
|
||||
let mut timer2 = node.create_wall_timer(std::time::Duration::from_millis(2000))?;
|
||||
// wait for service to be available
|
||||
let service_available = node.is_available(&client)?;
|
||||
let service_available = r2r::Node::is_available(&client)?;
|
||||
let mut pool = LocalPool::new();
|
||||
let spawner = pool.spawner();
|
||||
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ async fn main() -> Result<(), Box<dyn std::error::Error>> {
|
|||
use r2r::example_interfaces::srv::AddTwoInts;
|
||||
let client = node.create_client::<AddTwoInts::Service>("/add_two_ints")?;
|
||||
let mut timer = node.create_wall_timer(duration)?;
|
||||
let waiting = node.is_available(&client)?;
|
||||
let waiting = r2r::Node::is_available(&client)?;
|
||||
|
||||
let handle = tokio::task::spawn_blocking(move || loop {
|
||||
node.spin_once(std::time::Duration::from_millis(100));
|
||||
|
|
|
|||
|
|
@ -78,7 +78,7 @@ async fn client(arc_node: Arc<Mutex<r2r::Node>>) -> Result<(), r2r::Error> {
|
|||
let mut node = arc_node.lock().unwrap();
|
||||
let client = node.create_client::<AddTwoInts::Service>("/add_two_ints")?;
|
||||
let timer = node.create_wall_timer(std::time::Duration::from_secs(2))?;
|
||||
let service_available = node.is_available(&client)?;
|
||||
let service_available = r2r::Node::is_available(&client)?;
|
||||
(client, timer, service_available)
|
||||
};
|
||||
println!("waiting for service...");
|
||||
|
|
|
|||
|
|
@ -29,7 +29,7 @@ fn main() -> Result<(), Box<dyn std::error::Error>> {
|
|||
let client =
|
||||
node.create_client_untyped("/add_two_ints", "example_interfaces/srv/AddTwoInts")?;
|
||||
|
||||
let service_available = node.is_available(&client)?;
|
||||
let service_available = r2r::Node::is_available(&client)?;
|
||||
|
||||
let mut pool = LocalPool::new();
|
||||
let spawner = pool.spawner();
|
||||
|
|
|
|||
|
|
@ -707,7 +707,7 @@ impl Node {
|
|||
/// `spin_once` until available, so spin_once must be called
|
||||
/// repeatedly in order to get the wakeup.
|
||||
pub fn is_available(
|
||||
&mut self, client: &dyn IsAvailablePollable,
|
||||
client: &dyn IsAvailablePollable,
|
||||
) -> Result<impl Future<Output = Result<()>>> {
|
||||
let (sender, receiver) = oneshot::channel();
|
||||
client.register_poll_available(sender)?;
|
||||
|
|
|
|||
Loading…
Reference in New Issue