Use iterators
This commit is contained in:
parent
d1948b5a00
commit
e5f7eeedbf
|
@ -152,21 +152,16 @@ impl<W: Write + Send + 'static> AccountantSkel<W> {
|
||||||
|
|
||||||
fn process_packets(
|
fn process_packets(
|
||||||
obj: &Arc<Mutex<AccountantSkel<W>>>,
|
obj: &Arc<Mutex<AccountantSkel<W>>>,
|
||||||
reqs: Vec<Option<(Request, SocketAddr)>>,
|
req_vers: Vec<(Request, SocketAddr, u8)>,
|
||||||
vers: Vec<u8>,
|
|
||||||
) -> Vec<(Response, SocketAddr)> {
|
) -> Vec<(Response, SocketAddr)> {
|
||||||
let mut rsps = Vec::new();
|
req_vers
|
||||||
for (data, v) in reqs.into_iter().zip(vers) {
|
.into_iter()
|
||||||
if let Some((req, rsp_addr)) = data {
|
.filter_map(|(req, rsp_addr, v)| {
|
||||||
if !req.verify() {
|
let mut skel = obj.lock().unwrap();
|
||||||
continue;
|
skel.log_verified_request(req, v)
|
||||||
}
|
.map(|resp| (resp, rsp_addr))
|
||||||
if let Some(resp) = obj.lock().unwrap().log_verified_request(req, v) {
|
})
|
||||||
rsps.push((resp, rsp_addr));
|
.collect()
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
rsps
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fn serialize_response(
|
fn serialize_response(
|
||||||
|
@ -208,7 +203,12 @@ impl<W: Write + Send + 'static> AccountantSkel<W> {
|
||||||
let mms = verified_receiver.recv_timeout(timer)?;
|
let mms = verified_receiver.recv_timeout(timer)?;
|
||||||
for (msgs, vers) in mms {
|
for (msgs, vers) in mms {
|
||||||
let reqs = Self::deserialize_packets(&msgs.read().unwrap());
|
let reqs = Self::deserialize_packets(&msgs.read().unwrap());
|
||||||
let rsps = Self::process_packets(obj, reqs, vers);
|
let req_vers = reqs.into_iter()
|
||||||
|
.zip(vers)
|
||||||
|
.filter_map(|(req, ver)| req.map(|(msg, addr)| (msg, addr, ver)))
|
||||||
|
.filter(|x| x.0.verify())
|
||||||
|
.collect();
|
||||||
|
let rsps = Self::process_packets(obj, req_vers);
|
||||||
let blobs = Self::serialize_responses(rsps, blob_recycler)?;
|
let blobs = Self::serialize_responses(rsps, blob_recycler)?;
|
||||||
if !blobs.is_empty() {
|
if !blobs.is_empty() {
|
||||||
//don't wake up the other side if there is nothing
|
//don't wake up the other side if there is nothing
|
||||||
|
|
Loading…
Reference in New Issue