use futures::prelude::*;
use libp2p::mdns::service::{MdnsPacket, MdnsService};
use std::io;
fn main() {
let mut service = MdnsService::new().expect("Error while creating mDNS service");
let future = futures::future::poll_fn(move || -> Poll<(), io::Error> {
loop {
let packet = match service.poll() {
Async::Ready(packet) => packet,
Async::NotReady => return Ok(Async::NotReady),
};
match packet {
MdnsPacket::Query(query) => {
println!("Detected query from {:?}", query.remote_addr());
}
MdnsPacket::Response(response) => {
for peer in response.discovered_peers() {
println!("Discovered peer {:?}", peer.id());
for addr in peer.addresses() {
println!(" Address = {:?}", addr);
}
}
}
MdnsPacket::ServiceDiscovery(query) => {
println!("Detected service query from {:?}", query.remote_addr());
}
}
}
});
tokio::run(future.map_err(|err| panic!("{:?}", err)));
}