diff --git a/Cargo.lock b/Cargo.lock index 31ca7ca..9120acb 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3468,7 +3468,7 @@ dependencies = [ [[package]] name = "mdns-sd" version = "0.14.1" -source = "git+https://github.com/jggc/mdns-sd.git?branch=patch-1#9e4619599d1493ec15395d62d82d40a43fbef9e7" +source = "git+https://github.com/jggc/mdns-sd.git?branch=patch-1#371b65c0d6207e702dda8a2eb442cff21f0bab90" dependencies = [ "fastrand", "flume", diff --git a/harmony/src/modules/inventory/mod.rs b/harmony/src/modules/inventory/mod.rs index 3570d14..a7d168b 100644 --- a/harmony/src/modules/inventory/mod.rs +++ b/harmony/src/modules/inventory/mod.rs @@ -1,6 +1,6 @@ use async_trait::async_trait; use harmony_inventory_agent::local_presence::DiscoveryEvent; -use log::info; +use log::{debug, info}; use serde::{Deserialize, Serialize}; use crate::{ @@ -45,7 +45,13 @@ impl Interpret for DiscoverInventoryAgentInterpret { ) -> Result { harmony_inventory_agent::local_presence::discover_agents( self.score.discovery_timeout, - on_discover_event, + |event: DiscoveryEvent| { + println!("Discovery event {event:?}"); + match event { + DiscoveryEvent::ServiceResolved(service) => info!("Found instance {service:?}"), + _ => debug!("Unhandled event {event:?}"), + } + }, ); todo!() } @@ -66,7 +72,3 @@ impl Interpret for DiscoverInventoryAgentInterpret { todo!() } } - -fn on_discover_event(event: &DiscoveryEvent) { - info!("got discovery event {event:?}"); -} diff --git a/harmony_inventory_agent/src/local_presence/discover.rs b/harmony_inventory_agent/src/local_presence/discover.rs index fd7d2b3..251db99 100644 --- a/harmony_inventory_agent/src/local_presence/discover.rs +++ b/harmony_inventory_agent/src/local_presence/discover.rs @@ -4,7 +4,8 @@ use crate::local_presence::SERVICE_NAME; pub type DiscoveryEvent = ServiceEvent; -pub fn discover_agents(timeout: Option, on_event: fn(&DiscoveryEvent)) { +pub fn discover_agents(timeout: Option, on_event: impl Fn(DiscoveryEvent) + Send + 'static) +{ // Create a new mDNS daemon. let mdns = ServiceDaemon::new().expect("Failed to create mDNS daemon"); @@ -14,7 +15,7 @@ pub fn discover_agents(timeout: Option, on_event: fn(&DiscoveryEvent)) { std::thread::spawn(move || { while let Ok(event) = receiver.recv() { - on_event(&event); + on_event(event.clone()); match event { ServiceEvent::ServiceResolved(resolved) => { println!("Resolved a new service: {}", resolved.fullname);