From a93ec03d2c816ed8e190afc9da11ed84400021bd Mon Sep 17 00:00:00 2001 From: Greg Fitzgerald Date: Fri, 6 Apr 2018 16:21:20 -0600 Subject: [PATCH] Move creating blobs into its own function --- src/accountant_skel.rs | 33 +++++++++++++++++++++------------ 1 file changed, 21 insertions(+), 12 deletions(-) diff --git a/src/accountant_skel.rs b/src/accountant_skel.rs index 2d8b699a3..9e77b4894 100644 --- a/src/accountant_skel.rs +++ b/src/accountant_skel.rs @@ -149,6 +149,23 @@ impl AccountantSkel { .collect() } + fn create_blob_from_response( + blob_recycler: &packet::BlobRecycler, + resp: Response, + rsp_addr: SocketAddr, + ) -> Result { + let blob = blob_recycler.allocate(); + { + let mut b = blob.write().unwrap(); + let v = serialize(&resp)?; + let len = v.len(); + b.data[..len].copy_from_slice(&v); + b.meta.size = len; + b.meta.set_addr(&rsp_addr); + } + Ok(blob) + } + fn process_packets( obj: &Arc>>, reqs: Vec>, @@ -162,15 +179,7 @@ impl AccountantSkel { continue; } if let Some(resp) = obj.lock().unwrap().log_verified_request(req, v) { - let blob = blob_recycler.allocate(); - { - let mut b = blob.write().unwrap(); - let v = serialize(&resp)?; - let len = v.len(); - b.data[..len].copy_from_slice(&v); - b.meta.size = len; - b.meta.set_addr(&rsp_addr); - } + let blob = Self::create_blob_from_response(blob_recycler, resp, rsp_addr)?; rsps.push_back(blob); } } @@ -189,10 +198,10 @@ impl AccountantSkel { let (mms, vvs) = verified_receiver.recv_timeout(timer)?; for (msgs, vers) in mms.into_iter().zip(vvs.into_iter()) { let reqs = Self::deserialize_packets(&msgs.read().unwrap()); - let rsps = Self::process_packets(obj, reqs, vers, blob_recycler)?; - if !rsps.is_empty() { + let blobs = Self::process_packets(obj, reqs, vers, blob_recycler)?; + if !blobs.is_empty() { //don't wake up the other side if there is nothing - blob_sender.send(rsps)?; + blob_sender.send(blobs)?; } packet_recycler.recycle(msgs); }