diff options
author | Aram Drevekenin <aram@poor.dev> | 2019-10-19 12:32:00 +0200 |
---|---|---|
committer | Aram Drevekenin <aram@poor.dev> | 2019-10-19 12:32:00 +0200 |
commit | 0229b2e8ec46a1e37bb8d332d9c2f6a6f96645e4 (patch) | |
tree | d4a9a4020e37c36d4eaedb8473d918ff469cf4ce | |
parent | c318781bea35c19ffbc95eccd28644bc2ca6e79f (diff) |
refactor(dns-queue): better separation of concerns
-rw-r--r-- | src/main.rs | 10 | ||||
-rw-r--r-- | src/network/dns_queue.rs | 16 |
2 files changed, 13 insertions, 13 deletions
diff --git a/src/main.rs b/src/main.rs index efa1fad..383d59b 100644 --- a/src/main.rs +++ b/src/main.rs @@ -126,7 +126,15 @@ where let mut network_utilization = network_utilization.lock().unwrap(); network_utilization.clone_and_reset() }; - dns_queue.find_ips_to_resolve(&connections_to_procs, &ip_to_host); + let mut unresolved_ips = Vec::new(); + for connection in connections_to_procs.keys() { + if !ip_to_host.contains_key(&connection.remote_socket.ip) { + unresolved_ips.push(connection.remote_socket.ip); + } + } + if !unresolved_ips.is_empty() { + dns_queue.resolve_ips(unresolved_ips); + } { let mut ui = ui.lock().unwrap(); ui.update_state(connections_to_procs, utilization, ip_to_host); diff --git a/src/network/dns_queue.rs b/src/network/dns_queue.rs index 2f9e8f8..c86f003 100644 --- a/src/network/dns_queue.rs +++ b/src/network/dns_queue.rs @@ -1,9 +1,7 @@ -use ::std::collections::{VecDeque, HashMap}; +use ::std::collections::VecDeque; use ::std::net::Ipv4Addr; use ::std::sync::{Condvar, Mutex}; -use crate::network::Connection; - pub struct DnsQueue { jobs: Mutex<VecDeque<Option<Ipv4Addr>>>, cvar: Condvar, @@ -19,16 +17,10 @@ impl DnsQueue { } impl DnsQueue { - pub fn find_ips_to_resolve( - &self, - connections_to_procs: &HashMap<Connection, String>, - ip_to_host: &HashMap<Ipv4Addr, String>, - ) { + pub fn resolve_ips(&self, unresolved_ips: Vec<Ipv4Addr>) { let mut queue = self.jobs.lock().unwrap(); - for connection in connections_to_procs.keys() { - if !ip_to_host.contains_key(&connection.remote_socket.ip) { - queue.push_back(Some(connection.remote_socket.ip)); - } + for ip in unresolved_ips { + queue.push_back(Some(ip)) } self.cvar.notify_all(); } |