take provider interval on PendingTransaction (#1558)
This commit is contained in:
parent
550d2d86ef
commit
8026904c3d
|
@ -1,7 +1,4 @@
|
||||||
use crate::{
|
use crate::{stream::interval, JsonRpcClient, Middleware, PinBoxFut, Provider, ProviderError};
|
||||||
stream::{interval, DEFAULT_POLL_INTERVAL},
|
|
||||||
JsonRpcClient, Middleware, PinBoxFut, Provider, ProviderError,
|
|
||||||
};
|
|
||||||
use ethers_core::types::{Transaction, TransactionReceipt, TxHash, U64};
|
use ethers_core::types::{Transaction, TransactionReceipt, TxHash, U64};
|
||||||
use futures_core::stream::Stream;
|
use futures_core::stream::Stream;
|
||||||
use futures_util::stream::StreamExt;
|
use futures_util::stream::StreamExt;
|
||||||
|
@ -70,13 +67,14 @@ const DEFAULT_RETRIES: usize = 3;
|
||||||
impl<'a, P: JsonRpcClient> PendingTransaction<'a, P> {
|
impl<'a, P: JsonRpcClient> PendingTransaction<'a, P> {
|
||||||
/// Creates a new pending transaction poller from a hash and a provider
|
/// Creates a new pending transaction poller from a hash and a provider
|
||||||
pub fn new(tx_hash: TxHash, provider: &'a Provider<P>) -> Self {
|
pub fn new(tx_hash: TxHash, provider: &'a Provider<P>) -> Self {
|
||||||
let delay = Box::pin(Delay::new(DEFAULT_POLL_INTERVAL));
|
let delay = Box::pin(Delay::new(provider.get_interval()));
|
||||||
|
|
||||||
Self {
|
Self {
|
||||||
tx_hash,
|
tx_hash,
|
||||||
confirmations: 1,
|
confirmations: 1,
|
||||||
provider,
|
provider,
|
||||||
state: PendingTxState::InitialDelay(delay),
|
state: PendingTxState::InitialDelay(delay),
|
||||||
interval: Box::new(interval(DEFAULT_POLL_INTERVAL)),
|
interval: Box::new(interval(provider.get_interval())),
|
||||||
retries_remaining: DEFAULT_RETRIES,
|
retries_remaining: DEFAULT_RETRIES,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -635,7 +635,7 @@ impl<P: JsonRpcClient> Middleware for Provider<P> {
|
||||||
self.fill_transaction(&mut tx, block).await?;
|
self.fill_transaction(&mut tx, block).await?;
|
||||||
let tx_hash = self.request("eth_sendTransaction", [tx]).await?;
|
let tx_hash = self.request("eth_sendTransaction", [tx]).await?;
|
||||||
|
|
||||||
Ok(PendingTransaction::new(tx_hash, self).interval(self.get_interval()))
|
Ok(PendingTransaction::new(tx_hash, self))
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Send the raw RLP encoded transaction to the entire Ethereum network and returns the
|
/// Send the raw RLP encoded transaction to the entire Ethereum network and returns the
|
||||||
|
@ -646,7 +646,7 @@ impl<P: JsonRpcClient> Middleware for Provider<P> {
|
||||||
) -> Result<PendingTransaction<'a, P>, ProviderError> {
|
) -> Result<PendingTransaction<'a, P>, ProviderError> {
|
||||||
let rlp = utils::serialize(&tx);
|
let rlp = utils::serialize(&tx);
|
||||||
let tx_hash = self.request("eth_sendRawTransaction", [rlp]).await?;
|
let tx_hash = self.request("eth_sendRawTransaction", [rlp]).await?;
|
||||||
Ok(PendingTransaction::new(tx_hash, self).interval(self.get_interval()))
|
Ok(PendingTransaction::new(tx_hash, self))
|
||||||
}
|
}
|
||||||
|
|
||||||
/// The JSON-RPC provider is at the bottom-most position in the middleware stack. Here we check
|
/// The JSON-RPC provider is at the bottom-most position in the middleware stack. Here we check
|
||||||
|
|
Loading…
Reference in New Issue