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