use std::time::{Duration, Instant};
use log::info;
use udis::Udis;
fn main() -> Result<(), Box<dyn std::error::Error>> {
env_logger::Builder::from_env(env_logger::Env::default().default_filter_or("trace")).init();
let udis = Udis::new("client").search("hello").build_sync()?;
let mut services = Vec::new();
info!("Discovering services");
let now = Instant::now();
let timeout = Duration::from_secs(5);
while now.elapsed() < timeout {
if let Ok(Some(serv_info)) = udis.try_find_service() {
info!(
"Found service `{}` hosted by `{}` at {}:{}",
serv_info.kind, serv_info.name, serv_info.addr, serv_info.port
);
services.push(serv_info);
}
std::thread::sleep(Duration::from_millis(100));
}
if services.is_empty() {
info!("Found no services");
}
udis.shutdown()?;
Ok(())
}