Move thin client messages into their own module

This commit is contained in:
Greg Fitzgerald
2018-05-12 17:41:27 -06:00
parent b2e3299539
commit e5d46d998b
4 changed files with 4 additions and 97 deletions

View File

@ -137,7 +137,7 @@ mod tests {
use bincode::serialize; use bincode::serialize;
use ecdsa; use ecdsa;
use packet::{Packet, Packets, SharedPackets}; use packet::{Packet, Packets, SharedPackets};
use request_stage::Request; use request::Request;
use std::sync::RwLock; use std::sync::RwLock;
use transaction::Transaction; use transaction::Transaction;
use transaction::test_tx; use transaction::test_tx;

View File

@ -16,6 +16,7 @@ pub mod mint;
pub mod packet; pub mod packet;
pub mod plan; pub mod plan;
pub mod recorder; pub mod recorder;
pub mod request;
pub mod request_stage; pub mod request_stage;
pub mod result; pub mod result;
pub mod rpu; pub mod rpu;

View File

@ -5,12 +5,11 @@ use bincode::{deserialize, serialize};
use entry::Entry; use entry::Entry;
use event::Event; use event::Event;
use event_processor::EventProcessor; use event_processor::EventProcessor;
use hash::Hash;
use packet; use packet;
use packet::SharedPackets; use packet::SharedPackets;
use rayon::prelude::*; use rayon::prelude::*;
use request::{EntryInfo, Request, Response, Subscription};
use result::Result; use result::Result;
use signature::PublicKey;
use std::collections::VecDeque; use std::collections::VecDeque;
use std::net::{SocketAddr, UdpSocket}; use std::net::{SocketAddr, UdpSocket};
use std::sync::atomic::{AtomicBool, Ordering}; use std::sync::atomic::{AtomicBool, Ordering};
@ -21,43 +20,6 @@ use std::time::Duration;
use std::time::Instant; use std::time::Instant;
use streamer; use streamer;
use timing; use timing;
use transaction::Transaction;
#[cfg_attr(feature = "cargo-clippy", allow(large_enum_variant))]
#[derive(Serialize, Deserialize, Debug, Clone)]
pub enum Request {
Transaction(Transaction),
GetBalance { key: PublicKey },
Subscribe { subscriptions: Vec<Subscription> },
}
#[derive(Serialize, Deserialize, Debug, Clone)]
pub enum Subscription {
EntryInfo,
}
#[derive(Serialize, Deserialize, Debug, Clone)]
pub struct EntryInfo {
pub id: Hash,
pub num_hashes: u64,
pub num_events: u64,
}
impl Request {
/// Verify the request is valid.
pub fn verify(&self) -> bool {
match *self {
Request::Transaction(ref tr) => tr.verify_plan(),
_ => true,
}
}
}
#[derive(Serialize, Deserialize, Debug)]
pub enum Response {
Balance { key: PublicKey, val: Option<i64> },
EntryInfo(EntryInfo),
}
pub struct RequestProcessor { pub struct RequestProcessor {
accountant: Arc<Accountant>, accountant: Arc<Accountant>,
@ -314,59 +276,3 @@ impl RequestStage {
} }
} }
} }
#[cfg(test)]
pub fn to_request_packets(r: &packet::PacketRecycler, reqs: Vec<Request>) -> Vec<SharedPackets> {
let mut out = vec![];
for rrs in reqs.chunks(packet::NUM_PACKETS) {
let p = r.allocate();
p.write()
.unwrap()
.packets
.resize(rrs.len(), Default::default());
for (i, o) in rrs.iter().zip(p.write().unwrap().packets.iter_mut()) {
let v = serialize(&i).expect("serialize request");
let len = v.len();
o.data[..len].copy_from_slice(&v);
o.meta.size = len;
}
out.push(p);
}
return out;
}
#[cfg(test)]
mod tests {
use bincode::serialize;
use ecdsa;
use packet::{PacketRecycler, NUM_PACKETS};
use request_stage::{to_request_packets, Request};
use transaction::{memfind, test_tx};
#[test]
fn test_layout() {
let tr = test_tx();
let tx = serialize(&tr).unwrap();
let packet = serialize(&Request::Transaction(tr)).unwrap();
assert_matches!(memfind(&packet, &tx), Some(ecdsa::TX_OFFSET));
assert_matches!(memfind(&packet, &[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]), None);
}
#[test]
fn test_to_packets() {
let tr = Request::Transaction(test_tx());
let re = PacketRecycler::default();
let rv = to_request_packets(&re, vec![tr.clone(); 1]);
assert_eq!(rv.len(), 1);
assert_eq!(rv[0].read().unwrap().packets.len(), 1);
let rv = to_request_packets(&re, vec![tr.clone(); NUM_PACKETS]);
assert_eq!(rv.len(), 1);
assert_eq!(rv[0].read().unwrap().packets.len(), NUM_PACKETS);
let rv = to_request_packets(&re, vec![tr.clone(); NUM_PACKETS + 1]);
assert_eq!(rv.len(), 2);
assert_eq!(rv[0].read().unwrap().packets.len(), NUM_PACKETS);
assert_eq!(rv[1].read().unwrap().packets.len(), 1);
}
}

View File

@ -6,7 +6,7 @@
use bincode::{deserialize, serialize}; use bincode::{deserialize, serialize};
use futures::future::{ok, FutureResult}; use futures::future::{ok, FutureResult};
use hash::Hash; use hash::Hash;
use request_stage::{Request, Response, Subscription}; use request::{Request, Response, Subscription};
use signature::{KeyPair, PublicKey, Signature}; use signature::{KeyPair, PublicKey, Signature};
use std::collections::HashMap; use std::collections::HashMap;
use std::io; use std::io;