summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAram Drevekenin <aram@poor.dev>2019-10-19 12:32:00 +0200
committerAram Drevekenin <aram@poor.dev>2019-10-19 12:32:00 +0200
commit0229b2e8ec46a1e37bb8d332d9c2f6a6f96645e4 (patch)
treed4a9a4020e37c36d4eaedb8473d918ff469cf4ce
parentc318781bea35c19ffbc95eccd28644bc2ca6e79f (diff)
refactor(dns-queue): better separation of concerns
-rw-r--r--src/main.rs10
-rw-r--r--src/network/dns_queue.rs16
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();
}