Merge branch 'master' of github.com:ethcore/parity

This commit is contained in:
Gav Wood 2016-05-26 18:18:07 +02:00
commit 33f187eeee
4 changed files with 19 additions and 10 deletions

View File

@ -420,7 +420,7 @@ impl MinerService for Miner {
fn transaction(&self, hash: &H256) -> Option<SignedTransaction> { fn transaction(&self, hash: &H256) -> Option<SignedTransaction> {
match (self.sealing_enabled.load(atomic::Ordering::Relaxed), self.sealing_work.lock().unwrap().peek_last_ref()) { match (self.sealing_enabled.load(atomic::Ordering::Relaxed), self.sealing_work.lock().unwrap().peek_last_ref()) {
(true, Some(pending)) => pending.transactions().iter().find(|t| &t.hash() == hash).map(|t| t.clone()), (true, Some(pending)) => pending.transactions().iter().find(|t| &t.hash() == hash).cloned(),
_ => { _ => {
let queue = self.transaction_queue.lock().unwrap(); let queue = self.transaction_queue.lock().unwrap();
queue.find(hash) queue.find(hash)

View File

@ -75,6 +75,7 @@ impl Informant {
} }
} }
#[cfg_attr(feature="dev", allow(match_bool))]
pub fn tick(&self, client: &Client, maybe_sync: Option<&EthSync>) { pub fn tick(&self, client: &Client, maybe_sync: Option<&EthSync>) {
let elapsed = self.last_tick.read().unwrap().elapsed(); let elapsed = self.last_tick.read().unwrap().elapsed();
if elapsed < Duration::from_secs(5) { if elapsed < Duration::from_secs(5) {

View File

@ -672,18 +672,26 @@ impl<C, M> EthFilter for EthFilterClient<C, M> where
to_value(&hashes) to_value(&hashes)
}, },
PollFilter::PendingTransaction(ref mut previous_hashes) => { PollFilter::PendingTransaction(ref mut previous_hashes) => {
// get hashes of pending transactions
let current_hashes = take_weak!(self.miner).pending_transactions_hashes(); let current_hashes = take_weak!(self.miner).pending_transactions_hashes();
// calculate diff
let previous_hashes_set = previous_hashes.into_iter().map(|h| h.clone()).collect::<HashSet<H256>>();
let diff = current_hashes
.iter()
.filter(|hash| previous_hashes_set.contains(&hash))
.cloned()
.collect::<Vec<H256>>();
let new_hashes =
{
let previous_hashes_set = previous_hashes.iter().collect::<HashSet<_>>();
// find all new hashes
current_hashes
.iter()
.filter(|hash| !previous_hashes_set.contains(hash))
.cloned()
.collect::<Vec<H256>>()
};
// save all hashes of pending transactions
*previous_hashes = current_hashes; *previous_hashes = current_hashes;
to_value(&diff) // return new hashes
to_value(&new_hashes)
}, },
PollFilter::Logs(ref mut block_number, ref mut previous_logs, ref filter) => { PollFilter::Logs(ref mut block_number, ref mut previous_logs, ref filter) => {
// retrive the current block number // retrive the current block number

View File

@ -14,7 +14,7 @@
// You should have received a copy of the GNU General Public License // You should have received a copy of the GNU General Public License
// along with Parity. If not, see <http://www.gnu.org/licenses/>. // along with Parity. If not, see <http://www.gnu.org/licenses/>.
//! kvdb::Database as migration::Destination //! `kvdb::Database` as `migration::Destination`
use std::collections::BTreeMap; use std::collections::BTreeMap;
use kvdb::{Database, DBTransaction}; use kvdb::{Database, DBTransaction};