Refactor for batch verification
This commit is contained in:
@ -11,7 +11,7 @@ use serde_json;
|
|||||||
use signature::PublicKey;
|
use signature::PublicKey;
|
||||||
use std::default::Default;
|
use std::default::Default;
|
||||||
use std::io::Write;
|
use std::io::Write;
|
||||||
use std::net::UdpSocket;
|
use std::net::{SocketAddr, UdpSocket};
|
||||||
use std::sync::atomic::{AtomicBool, Ordering};
|
use std::sync::atomic::{AtomicBool, Ordering};
|
||||||
use std::sync::mpsc::channel;
|
use std::sync::mpsc::channel;
|
||||||
use std::sync::{Arc, Mutex};
|
use std::sync::{Arc, Mutex};
|
||||||
@ -34,6 +34,10 @@ pub enum Request {
|
|||||||
GetId { is_last: bool },
|
GetId { is_last: bool },
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn filter_valid_requests(reqs: Vec<(Request, SocketAddr)>) -> Vec<(Request, SocketAddr)> {
|
||||||
|
reqs
|
||||||
|
}
|
||||||
|
|
||||||
#[derive(Serialize, Deserialize, Debug)]
|
#[derive(Serialize, Deserialize, Debug)]
|
||||||
pub enum Response {
|
pub enum Response {
|
||||||
Balance { key: PublicKey, val: Option<i64> },
|
Balance { key: PublicKey, val: Option<i64> },
|
||||||
@ -98,12 +102,18 @@ impl<W: Write + Send + 'static> AccountantSkel<W> {
|
|||||||
let rsps = streamer::allocate(response_recycler);
|
let rsps = streamer::allocate(response_recycler);
|
||||||
let rsps_ = rsps.clone();
|
let rsps_ = rsps.clone();
|
||||||
{
|
{
|
||||||
let mut num = 0;
|
let mut reqs = vec![];
|
||||||
let mut ursps = rsps.write().unwrap();
|
|
||||||
for packet in &msgs.read().unwrap().packets {
|
for packet in &msgs.read().unwrap().packets {
|
||||||
let rsp_addr = packet.meta.get_addr();
|
let rsp_addr = packet.meta.get_addr();
|
||||||
let sz = packet.meta.size;
|
let sz = packet.meta.size;
|
||||||
let req = deserialize(&packet.data[0..sz])?;
|
let req = deserialize(&packet.data[0..sz])?;
|
||||||
|
reqs.push((req, rsp_addr));
|
||||||
|
}
|
||||||
|
let reqs = filter_valid_requests(reqs);
|
||||||
|
|
||||||
|
let mut num = 0;
|
||||||
|
let mut ursps = rsps.write().unwrap();
|
||||||
|
for (req, rsp_addr) in reqs {
|
||||||
if let Some(resp) = obj.lock().unwrap().process_request(req) {
|
if let Some(resp) = obj.lock().unwrap().process_request(req) {
|
||||||
if ursps.responses.len() <= num {
|
if ursps.responses.len() <= num {
|
||||||
ursps
|
ursps
|
||||||
|
Reference in New Issue
Block a user