r2r/examples/client.rs

36 lines
978 B
Rust

use r2r;
use failure::Error;
use r2r::example_interfaces::srv::AddTwoInts;
fn main() -> Result<(), Error> {
let ctx = r2r::Context::create()?;
let mut node = r2r::Node::create(ctx, "testnode", "")?;
let client = node.create_client::<AddTwoInts::Service>("/add_two_ints")?;
// wait for service to be available
println!("waiting for service...");
while !node.service_available(&client)? {
std::thread::sleep(std::time::Duration::from_millis(1000));
}
println!("service available.");
let mut c = 0;
loop {
let req = AddTwoInts::Request { a: 10*c, b: c };
let cb_req = req.clone();
let cb = Box::new(move |r: AddTwoInts::Response|
println!("{} + {} = {}", cb_req.a, cb_req.b, r.sum));
client.request(&req, cb)?;
node.spin_once(std::time::Duration::from_millis(1000));
std::thread::sleep(std::time::Duration::from_millis(1000));
c+=1;
}
}