From 79fb9c00aac102e8dc662e11d40e7e801b19b140 Mon Sep 17 00:00:00 2001 From: Greg Fitzgerald Date: Mon, 5 Mar 2018 10:45:11 -0700 Subject: [PATCH] Boot wait_on_signature() from accountant Instead, there should be a way to query for a page of log data, and checking whether it has a signature should be done client-side. --- src/accountant.rs | 28 ++-------------------------- src/accountant_skel.rs | 5 +---- 2 files changed, 3 insertions(+), 30 deletions(-) diff --git a/src/accountant.rs b/src/accountant.rs index cc9503f3e4..6cb11734ce 100644 --- a/src/accountant.rs +++ b/src/accountant.rs @@ -10,8 +10,6 @@ use ring::signature::Ed25519KeyPair; use std::sync::mpsc::SendError; use std::collections::HashMap; use std::result; -use std::thread::sleep; -use std::time::Duration; #[derive(Debug, PartialEq, Eq)] pub enum AccountingError { @@ -127,21 +125,6 @@ impl Accountant { pub fn get_balance(self: &Self, pubkey: &PublicKey) -> Option { self.balances.get(pubkey).map(|x| *x) } - - pub fn wait_on_signature(self: &mut Self, wait_sig: &Signature) { - let mut entries = self.sync(); - let mut found = false; - while !found { - found = entries.iter().any(|e| match e.event { - Event::Transaction { sig, .. } => sig == *wait_sig, - _ => false, - }); - if !found { - sleep(Duration::from_millis(30)); - entries = self.sync(); - } - } - } } #[cfg(test)] @@ -150,8 +133,6 @@ mod tests { use event::{generate_keypair, get_pubkey}; use logger::ExitReason; use genesis::Creator; - use std::thread::sleep; - use std::time::Duration; #[test] fn test_accountant() { @@ -160,9 +141,7 @@ mod tests { let alice = Genesis::new(10_000, vec![bob]); let mut acc = Accountant::new(&alice, Some(2)); - let sig = acc.transfer(500, &alice.get_keypair(), bob_pubkey).unwrap(); - acc.wait_on_signature(&sig); - + acc.transfer(500, &alice.get_keypair(), bob_pubkey).unwrap(); assert_eq!(acc.get_balance(&bob_pubkey).unwrap(), 1_500); drop(acc.historian.sender); @@ -178,12 +157,10 @@ mod tests { let bob_pubkey = bob.pubkey; let alice = Genesis::new(11_000, vec![bob]); let mut acc = Accountant::new(&alice, Some(2)); - assert_eq!( acc.transfer(10_001, &alice.get_keypair(), bob_pubkey), Err(AccountingError::InsufficientFunds) ); - sleep(Duration::from_millis(30)); let alice_pubkey = get_pubkey(&alice.get_keypair()); assert_eq!(acc.get_balance(&alice_pubkey).unwrap(), 10_000); @@ -203,8 +180,7 @@ mod tests { let alice_keypair = alice.get_keypair(); let bob_keypair = generate_keypair(); let bob_pubkey = get_pubkey(&bob_keypair); - let sig = acc.transfer(500, &alice_keypair, bob_pubkey).unwrap(); - acc.wait_on_signature(&sig); + acc.transfer(500, &alice_keypair, bob_pubkey).unwrap(); assert_eq!(acc.get_balance(&bob_pubkey).unwrap(), 500); drop(acc.historian.sender); diff --git a/src/accountant_skel.rs b/src/accountant_skel.rs index af9365ffe1..4abc8c208e 100644 --- a/src/accountant_skel.rs +++ b/src/accountant_skel.rs @@ -53,10 +53,7 @@ impl AccountantSkel { let val = self.obj.get_balance(&key).unwrap(); Some(Response::Balance { key, val }) } - Request::Wait { sig } => { - self.obj.wait_on_signature(&sig); - Some(Response::Confirmed { sig }) - } + Request::Wait { sig } => Some(Response::Confirmed { sig }), } }