use std::time::Duration;
use log::{error, info};
use udis::Udis;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
env_logger::Builder::from_env(env_logger::Env::default().default_filter_or("trace")).init();
let mut udis = Udis::new("client").search("hello").build_async()?;
let mut services = Vec::new();
info!("Discovering services");
tokio::time::timeout(Duration::from_secs(5), async {
loop {
match udis.find_service().await {
Ok(serv_info) => {
info!(
"Found service `{}` hosted by `{}` at {}:{}",
serv_info.kind, serv_info.name, serv_info.addr, serv_info.port
);
services.push(serv_info);
}
Err(e) => {
error!("err: {e}");
break;
}
}
}
})
.await
.ok();
if services.is_empty() {
info!("Found no services");
}
udis.shutdown().await?;
Ok(())
}