refact: Discovery callback takes a closure and fix git dependency hash
This commit is contained in:
parent
269f13ae9b
commit
1eca2cc1a9
2
Cargo.lock
generated
2
Cargo.lock
generated
@ -3468,7 +3468,7 @@ dependencies = [
|
|||||||
[[package]]
|
[[package]]
|
||||||
name = "mdns-sd"
|
name = "mdns-sd"
|
||||||
version = "0.14.1"
|
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 = [
|
dependencies = [
|
||||||
"fastrand",
|
"fastrand",
|
||||||
"flume",
|
"flume",
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
use async_trait::async_trait;
|
use async_trait::async_trait;
|
||||||
use harmony_inventory_agent::local_presence::DiscoveryEvent;
|
use harmony_inventory_agent::local_presence::DiscoveryEvent;
|
||||||
use log::info;
|
use log::{debug, info};
|
||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
|
|
||||||
use crate::{
|
use crate::{
|
||||||
@ -45,7 +45,13 @@ impl<T: Topology> Interpret<T> for DiscoverInventoryAgentInterpret {
|
|||||||
) -> Result<Outcome, InterpretError> {
|
) -> Result<Outcome, InterpretError> {
|
||||||
harmony_inventory_agent::local_presence::discover_agents(
|
harmony_inventory_agent::local_presence::discover_agents(
|
||||||
self.score.discovery_timeout,
|
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!()
|
todo!()
|
||||||
}
|
}
|
||||||
@ -66,7 +72,3 @@ impl<T: Topology> Interpret<T> for DiscoverInventoryAgentInterpret {
|
|||||||
todo!()
|
todo!()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn on_discover_event(event: &DiscoveryEvent) {
|
|
||||||
info!("got discovery event {event:?}");
|
|
||||||
}
|
|
||||||
|
@ -4,7 +4,8 @@ use crate::local_presence::SERVICE_NAME;
|
|||||||
|
|
||||||
pub type DiscoveryEvent = ServiceEvent;
|
pub type DiscoveryEvent = ServiceEvent;
|
||||||
|
|
||||||
pub fn discover_agents(timeout: Option<u64>, on_event: fn(&DiscoveryEvent)) {
|
pub fn discover_agents(timeout: Option<u64>, on_event: impl Fn(DiscoveryEvent) + Send + 'static)
|
||||||
|
{
|
||||||
// Create a new mDNS daemon.
|
// Create a new mDNS daemon.
|
||||||
let mdns = ServiceDaemon::new().expect("Failed to create mDNS daemon");
|
let mdns = ServiceDaemon::new().expect("Failed to create mDNS daemon");
|
||||||
|
|
||||||
@ -14,7 +15,7 @@ pub fn discover_agents(timeout: Option<u64>, on_event: fn(&DiscoveryEvent)) {
|
|||||||
|
|
||||||
std::thread::spawn(move || {
|
std::thread::spawn(move || {
|
||||||
while let Ok(event) = receiver.recv() {
|
while let Ok(event) = receiver.recv() {
|
||||||
on_event(&event);
|
on_event(event.clone());
|
||||||
match event {
|
match event {
|
||||||
ServiceEvent::ServiceResolved(resolved) => {
|
ServiceEvent::ServiceResolved(resolved) => {
|
||||||
println!("Resolved a new service: {}", resolved.fullname);
|
println!("Resolved a new service: {}", resolved.fullname);
|
||||||
|
Loading…
Reference in New Issue
Block a user