Fix slow balances (#6471)
* Update token updates
* Update token info fetching
* Update logger
* Minor fixes to updates and notifications for balances
* Use Pubsub
* Fix timeout.
* Use pubsub for status.
* Fix signer subscription.
* Process tokens in chunks.
* Fix tokens loaded by chunks
* Linting
* Dispatch tokens asap
* Fix chunks processing.
* Better filter options
* Parallel log fetching.
* Fix signer polling.
* Fix initial block query.
* Token balances updates : the right(er) way
* Better tokens info fetching
* Fixes in token data fetching
* Only fetch what's needed (tokens)
* Fix linting issues
* Revert "Transaction permissioning (#6441)"
This reverts commit eed0e8b03a.
* Revert "Revert "Transaction permissioning (#6441)""
This reverts commit 8f96415e58dde652e5828706eb2639d43416f448.
* Update wasm-tests.
* Fixing balances fetching
* Fix requests tracking in UI
* Fix request watching
* Update the Logger
* PR Grumbles Fixes
* PR Grumbles fixes
* Linting...
This commit is contained in:
committed by
Gav Wood
parent
ee14a3fb31
commit
f1a050366f
@@ -211,30 +211,35 @@ impl<T: Filterable + Send + Sync + 'static> EthFilter for T {
|
||||
}
|
||||
|
||||
fn filter_logs(&self, index: Index) -> BoxFuture<Vec<Log>, Error> {
|
||||
let mut polls = self.polls().lock();
|
||||
match polls.poll(&index.value()) {
|
||||
Some(&PollFilter::Logs(ref _block_number, ref _previous_log, ref filter)) => {
|
||||
let include_pending = filter.to_block == Some(BlockNumber::Pending);
|
||||
let filter: EthcoreFilter = filter.clone().into();
|
||||
let filter = {
|
||||
let mut polls = self.polls().lock();
|
||||
|
||||
// fetch pending logs.
|
||||
let pending = if include_pending {
|
||||
let best_block = self.best_block_number();
|
||||
self.pending_logs(best_block, &filter)
|
||||
} else {
|
||||
Vec::new()
|
||||
};
|
||||
match polls.poll(&index.value()) {
|
||||
Some(&PollFilter::Logs(ref _block_number, ref _previous_log, ref filter)) => filter.clone(),
|
||||
// just empty array
|
||||
_ => return future::ok(Vec::new()).boxed(),
|
||||
}
|
||||
};
|
||||
|
||||
// retrieve logs asynchronously, appending pending logs.
|
||||
let limit = filter.limit;
|
||||
self.logs(filter)
|
||||
.map(move |mut logs| { logs.extend(pending); logs })
|
||||
.map(move |logs| limit_logs(logs, limit))
|
||||
.boxed()
|
||||
},
|
||||
// just empty array
|
||||
_ => future::ok(Vec::new()).boxed()
|
||||
}
|
||||
let include_pending = filter.to_block == Some(BlockNumber::Pending);
|
||||
let filter: EthcoreFilter = filter.into();
|
||||
|
||||
// fetch pending logs.
|
||||
let pending = if include_pending {
|
||||
let best_block = self.best_block_number();
|
||||
self.pending_logs(best_block, &filter)
|
||||
} else {
|
||||
Vec::new()
|
||||
};
|
||||
|
||||
// retrieve logs asynchronously, appending pending logs.
|
||||
let limit = filter.limit;
|
||||
let logs = self.logs(filter);
|
||||
let res = logs
|
||||
.map(move |mut logs| { logs.extend(pending); logs })
|
||||
.map(move |logs| limit_logs(logs, limit))
|
||||
.boxed();
|
||||
res
|
||||
}
|
||||
|
||||
fn uninstall_filter(&self, index: Index) -> Result<bool, Error> {
|
||||
|
||||
Reference in New Issue
Block a user