summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAram Drevekenin <aram@poor.dev>2019-10-18 20:32:18 +0200
committerAram Drevekenin <aram@poor.dev>2019-10-18 20:32:18 +0200
commit60d84e8e877b9bb024ec0ffe25f7fe0513d2f52d (patch)
tree1f319319cd7750171c2234fc387de87ac9720511
parent1d943833ba502107f61f9826aff2534b7bc31b83 (diff)
refactor(dns-queue): use vecdeque
-rw-r--r--src/network/dns_queue.rs12
1 files changed, 6 insertions, 6 deletions
diff --git a/src/network/dns_queue.rs b/src/network/dns_queue.rs
index d007031..2f9e8f8 100644
--- a/src/network/dns_queue.rs
+++ b/src/network/dns_queue.rs
@@ -1,18 +1,18 @@
-use ::std::collections::HashMap;
+use ::std::collections::{VecDeque, HashMap};
use ::std::net::Ipv4Addr;
use ::std::sync::{Condvar, Mutex};
use crate::network::Connection;
pub struct DnsQueue {
- jobs: Mutex<Vec<Option<Ipv4Addr>>>,
+ jobs: Mutex<VecDeque<Option<Ipv4Addr>>>,
cvar: Condvar,
}
impl DnsQueue {
pub fn new() -> Self {
DnsQueue {
- jobs: Mutex::new(Vec::new()),
+ jobs: Mutex::new(VecDeque::new()),
cvar: Condvar::new(),
}
}
@@ -27,7 +27,7 @@ impl DnsQueue {
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(Some(connection.remote_socket.ip));
+ queue.push_back(Some(connection.remote_socket.ip));
}
}
self.cvar.notify_all();
@@ -35,7 +35,7 @@ impl DnsQueue {
pub fn wait_for_job(&self) -> Option<Ipv4Addr> {
let mut jobs = self.jobs.lock().unwrap();
loop {
- match jobs.pop() {
+ match jobs.pop_front() {
Some(job) => return job,
None => {
jobs = self.cvar.wait(jobs).unwrap();
@@ -46,7 +46,7 @@ impl DnsQueue {
pub fn end(&self) {
let mut jobs = self.jobs.lock().unwrap();
jobs.clear();
- jobs.push(None);
+ jobs.push_back(None);
self.cvar.notify_all();
}
}