use libp2p::mdns::Event;
use owo_colors::OwoColorize;
use tracing::{debug, error};
use super::{EventHandler, NetworkManager, RelayedMultiaddr};
use crate::discovery::state::PeerDiscoveryMechanism;
impl EventHandler<Event> for NetworkManager {
fn handle(&mut self, event: Event) {
debug!("{}: {:?}", "mdns".yellow(), event);
if let Event::Discovered(peers) = event {
for (peer_id, addr) in peers {
if RelayedMultiaddr::try_from(&addr).is_ok() {
continue;
}
self.discovery
.state
.add_peer_discovery_mechanism(&peer_id, PeerDiscoveryMechanism::Mdns);
debug!(%peer_id, %addr, "Attempting to dial discovered peer via mdns");
if let Err(err) = self.swarm.dial(addr) {
error!("Failed to dial peer: {:?}", err);
}
}
}
}
}