From d5be0fae540c5e493aca544a6c15df3e7e113d73 Mon Sep 17 00:00:00 2001 From: NikVolf Date: Wed, 29 Jun 2016 21:48:22 +0300 Subject: [PATCH] transaction import result sorting also --- ethcore/src/client/client.rs.in | 9 ++++++--- ethcore/src/client/mod.rs | 2 +- ethcore/src/client/test_client.rs | 7 +++++-- ethcore/src/types/transaction_import_result.rs | 2 +- 4 files changed, 13 insertions(+), 7 deletions(-) diff --git a/ethcore/src/client/client.rs.in b/ethcore/src/client/client.rs.in index 5ff4cc4aa..6aae81650 100644 --- a/ethcore/src/client/client.rs.in +++ b/ethcore/src/client/client.rs.in @@ -39,6 +39,8 @@ use util::journaldb::JournalDB; use util::kvdb::*; use util::Itertools; use util::PerfTimer; +use util::View; +use util::Stream; // other use views::BlockView; @@ -501,7 +503,7 @@ impl Client { } } -#[derive(Ipc)] +//#[derive(Ipc)] impl BlockChainClient for Client { fn call(&self, t: &SignedTransaction, analytics: CallAnalytics) -> Result { let header = self.block_header(BlockID::Latest).unwrap(); @@ -798,8 +800,9 @@ impl BlockChainClient for Client { nonce: self.latest_nonce(a), balance: self.latest_balance(a), }; - self.miner.import_transactions(self, transactions, fetch_account).iter() - .map(|res| res.map_err(|e| format!("{:?}", e))) + self.miner.import_transactions(self, transactions, fetch_account) + .iter() + .map(|res| match res { &Ok(ref t) => Ok(t.clone()), &Err(ref e) => Err(format!("{:?}", e)) }) .collect::>>() } diff --git a/ethcore/src/client/mod.rs b/ethcore/src/client/mod.rs index e4e454d03..838e4ecee 100644 --- a/ethcore/src/client/mod.rs +++ b/ethcore/src/client/mod.rs @@ -188,7 +188,7 @@ pub trait BlockChainClient : Sync + Send { fn last_hashes(&self) -> LastHashes; /// import transactions from network/other 3rd party - fn import_transactions(&self, transactions: Vec) -> Vec>; + fn import_transactions(&self, transactions: Vec) -> Vec>; /// Queue transactions for importing. fn queue_transactions(&self, transactions: Vec); diff --git a/ethcore/src/client/test_client.rs b/ethcore/src/client/test_client.rs index b54c7f867..14579f905 100644 --- a/ethcore/src/client/test_client.rs +++ b/ethcore/src/client/test_client.rs @@ -483,7 +483,7 @@ impl BlockChainClient for TestBlockChainClient { unimplemented!(); } - fn import_transactions(&self, transactions: Vec) -> Vec> { + fn import_transactions(&self, transactions: Vec) -> Vec> { let nonces = self.nonces.read().unwrap(); let balances = self.balances.read().unwrap(); let fetch_account = |a: &Address| AccountDetails { @@ -491,7 +491,10 @@ impl BlockChainClient for TestBlockChainClient { balance: balances[a], }; - self.miner.import_transactions(self, transactions, &fetch_account) + self.miner.import_transactions(self, transactions, fetch_account) + .iter() + .map(|res| match res { &Ok(ref t) => Ok(t.clone()), &Err(ref e) => Err(format!("{:?}", e)) }) + .collect::>>() } fn queue_transactions(&self, transactions: Vec) { diff --git a/ethcore/src/types/transaction_import_result.rs b/ethcore/src/types/transaction_import_result.rs index 632cf34c6..81d4c3d32 100644 --- a/ethcore/src/types/transaction_import_result.rs +++ b/ethcore/src/types/transaction_import_result.rs @@ -18,7 +18,7 @@ use std::mem; use ipc::binary::BinaryConvertError; use std::collections::VecDeque; -#[derive(Debug, PartialEq)] +#[derive(Debug, Clone, PartialEq)] /// Represents the result of importing transaction. pub enum TransactionImportResult { /// Transaction was imported to current queue.