From 96c321da7649e1d71036b4ab554fff2ee59e7039 Mon Sep 17 00:00:00 2001 From: Tyera Eulberg Date: Mon, 2 Jul 2018 22:14:20 -0600 Subject: [PATCH] Update drone to allow TPS-sized airdrops --- src/bin/wallet.rs | 1 + src/drone.rs | 10 ++++++++++ 2 files changed, 11 insertions(+) diff --git a/src/bin/wallet.rs b/src/bin/wallet.rs index 1f93eba55..074d0ff9d 100644 --- a/src/bin/wallet.rs +++ b/src/bin/wallet.rs @@ -321,6 +321,7 @@ fn request_airdrop( let req = DroneRequest::GetAirdrop { airdrop_request_amount: tokens, client_public_key: id.pubkey(), + tps_demo: false, }; let tx = serialize(&req).expect("serialize drone request"); stream.write_all(&tx).unwrap(); diff --git a/src/drone.rs b/src/drone.rs index 2bae58d12..bae90b05c 100644 --- a/src/drone.rs +++ b/src/drone.rs @@ -20,6 +20,7 @@ pub enum DroneRequest { GetAirdrop { airdrop_request_amount: u64, client_public_key: PublicKey, + tps_demo: bool, }, } @@ -32,6 +33,7 @@ pub struct Drone { pub time_slice: Duration, request_cap: u64, pub request_current: u64, + pub tps_request_current: bool, } impl Drone { @@ -60,6 +62,7 @@ impl Drone { time_slice, request_cap, request_current: 0, + tps_request_current: false, } } @@ -69,6 +72,7 @@ impl Drone { pub fn clear_request_count(&mut self) { self.request_current = 0; + self.tps_request_current = false; } pub fn add_ip_to_cache(&mut self, ip: IpAddr) { @@ -104,11 +108,13 @@ impl Drone { transactions_socket, ); let last_id = client.get_last_id(); + let tps_check: bool; match req { DroneRequest::GetAirdrop { airdrop_request_amount, client_public_key, + tps_demo, } => { request_amount = airdrop_request_amount.clone(); tx = Transaction::new( @@ -117,11 +123,15 @@ impl Drone { airdrop_request_amount as i64, last_id, ); + tps_check = tps_demo; } } if self.check_request_limit(request_amount) { self.request_current += request_amount; client.transfer_signed(tx) + } else if tps_check && !self.tps_request_current { + self.tps_request_current = true; + client.transfer_signed(tx) } else { Err(Error::new(ErrorKind::Other, "token limit reached")) }