Struct sc_transaction_pool::BasicPool
source · pub struct BasicPool<PoolApi, Block>where
Block: BlockT,
PoolApi: ChainApi<Block = Block>,{ /* private fields */ }
Expand description
Basic implementation of transaction pool that can be customized by providing PoolApi.
Implementations
sourceimpl<PoolApi, Block> BasicPool<PoolApi, Block>where
Block: BlockT,
PoolApi: ChainApi<Block = Block> + 'static,
impl<PoolApi, Block> BasicPool<PoolApi, Block>where
Block: BlockT,
PoolApi: ChainApi<Block = Block> + 'static,
sourcepub fn new_test(
pool_api: Arc<PoolApi>,
best_block_hash: Block::Hash,
finalized_hash: Block::Hash
) -> (Self, Pin<Box<dyn Future<Output = ()> + Send>>)
pub fn new_test(
pool_api: Arc<PoolApi>,
best_block_hash: Block::Hash,
finalized_hash: Block::Hash
) -> (Self, Pin<Box<dyn Future<Output = ()> + Send>>)
Create new basic transaction pool with provided api, for tests.
sourcepub fn with_revalidation_type(
options: Options,
is_validator: IsValidator,
pool_api: Arc<PoolApi>,
prometheus: Option<&PrometheusRegistry>,
revalidation_type: RevalidationType,
spawner: impl SpawnEssentialNamed,
best_block_number: NumberFor<Block>,
best_block_hash: Block::Hash,
finalized_hash: Block::Hash
) -> Self
pub fn with_revalidation_type(
options: Options,
is_validator: IsValidator,
pool_api: Arc<PoolApi>,
prometheus: Option<&PrometheusRegistry>,
revalidation_type: RevalidationType,
spawner: impl SpawnEssentialNamed,
best_block_number: NumberFor<Block>,
best_block_hash: Block::Hash,
finalized_hash: Block::Hash
) -> Self
Create new basic transaction pool with provided api and custom revalidation type.
sourceimpl<Block, Client> BasicPool<FullChainApi<Client, Block>, Block>where
Block: BlockT,
Client: ProvideRuntimeApi<Block> + BlockBackend<Block> + HeaderBackend<Block> + BlockIdTo<Block> + ExecutorProvider<Block> + UsageProvider<Block> + HeaderMetadata<Block, Error = Error> + Send + Sync + 'static,
Client::Api: TaggedTransactionQueue<Block>,
impl<Block, Client> BasicPool<FullChainApi<Client, Block>, Block>where
Block: BlockT,
Client: ProvideRuntimeApi<Block> + BlockBackend<Block> + HeaderBackend<Block> + BlockIdTo<Block> + ExecutorProvider<Block> + UsageProvider<Block> + HeaderMetadata<Block, Error = Error> + Send + Sync + 'static,
Client::Api: TaggedTransactionQueue<Block>,
Trait Implementations
sourceimpl<Block, Client> LocalTransactionPool for BasicPool<FullChainApi<Client, Block>, Block>where
Block: BlockT,
Client: ProvideRuntimeApi<Block> + BlockBackend<Block> + HeaderBackend<Block> + BlockIdTo<Block> + HeaderMetadata<Block, Error = Error>,
Client: Send + Sync + 'static,
Client::Api: TaggedTransactionQueue<Block>,
impl<Block, Client> LocalTransactionPool for BasicPool<FullChainApi<Client, Block>, Block>where
Block: BlockT,
Client: ProvideRuntimeApi<Block> + BlockBackend<Block> + HeaderBackend<Block> + BlockIdTo<Block> + HeaderMetadata<Block, Error = Error>,
Client: Send + Sync + 'static,
Client::Api: TaggedTransactionQueue<Block>,
type Block = Block
type Block = Block
Block type.
type Error = <FullChainApi<Client, Block> as ChainApi>::Error
type Error = <FullChainApi<Client, Block> as ChainApi>::Error
Error type.
sourcefn submit_local(
&self,
at: &BlockId<Self::Block>,
xt: LocalTransactionFor<Self>
) -> Result<Self::Hash, Self::Error>
fn submit_local(
&self,
at: &BlockId<Self::Block>,
xt: LocalTransactionFor<Self>
) -> Result<Self::Hash, Self::Error>
Submits the given local unverified transaction to the pool blocking the
current thread for any necessary pre-verification.
NOTE: It MUST NOT be used for transactions that originate from the
network or RPC, since the validation is performed with
TransactionSource::Local
. Read moresourceimpl<PoolApi, Block> MaintainedTransactionPool for BasicPool<PoolApi, Block>where
Block: BlockT,
PoolApi: 'static + ChainApi<Block = Block>,
impl<PoolApi, Block> MaintainedTransactionPool for BasicPool<PoolApi, Block>where
Block: BlockT,
PoolApi: 'static + ChainApi<Block = Block>,
sourceimpl<PoolApi, Block> TransactionPool for BasicPool<PoolApi, Block>where
Block: BlockT,
PoolApi: 'static + ChainApi<Block = Block>,
impl<PoolApi, Block> TransactionPool for BasicPool<PoolApi, Block>where
Block: BlockT,
PoolApi: 'static + ChainApi<Block = Block>,
type InPoolTransaction = Transaction<<BasicPool<PoolApi, Block> as TransactionPool>::Hash, <<BasicPool<PoolApi, Block> as TransactionPool>::Block as Block>::Extrinsic>
type InPoolTransaction = Transaction<<BasicPool<PoolApi, Block> as TransactionPool>::Hash, <<BasicPool<PoolApi, Block> as TransactionPool>::Block as Block>::Extrinsic>
In-pool transaction type.
sourcefn submit_at(
&self,
at: &BlockId<Self::Block>,
source: TransactionSource,
xts: Vec<TransactionFor<Self>>
) -> PoolFuture<Vec<Result<TxHash<Self>, Self::Error>>, Self::Error>
fn submit_at(
&self,
at: &BlockId<Self::Block>,
source: TransactionSource,
xts: Vec<TransactionFor<Self>>
) -> PoolFuture<Vec<Result<TxHash<Self>, Self::Error>>, Self::Error>
Returns a future that imports a bunch of unverified transactions to the pool.
sourcefn submit_one(
&self,
at: &BlockId<Self::Block>,
source: TransactionSource,
xt: TransactionFor<Self>
) -> PoolFuture<TxHash<Self>, Self::Error>
fn submit_one(
&self,
at: &BlockId<Self::Block>,
source: TransactionSource,
xt: TransactionFor<Self>
) -> PoolFuture<TxHash<Self>, Self::Error>
Returns a future that imports one unverified transaction to the pool.
sourcefn submit_and_watch(
&self,
at: &BlockId<Self::Block>,
source: TransactionSource,
xt: TransactionFor<Self>
) -> PoolFuture<Pin<Box<TransactionStatusStreamFor<Self>>>, Self::Error>
fn submit_and_watch(
&self,
at: &BlockId<Self::Block>,
source: TransactionSource,
xt: TransactionFor<Self>
) -> PoolFuture<Pin<Box<TransactionStatusStreamFor<Self>>>, Self::Error>
Returns a future that import a single transaction and starts to watch their progress in the
pool. Read more
sourcefn remove_invalid(
&self,
hashes: &[TxHash<Self>]
) -> Vec<Arc<Self::InPoolTransaction>> ⓘ
fn remove_invalid(
&self,
hashes: &[TxHash<Self>]
) -> Vec<Arc<Self::InPoolTransaction>> ⓘ
Remove transactions identified by given hashes (and dependent transactions) from the pool.
sourcefn import_notification_stream(&self) -> ImportNotificationStream<TxHash<Self>>
fn import_notification_stream(&self) -> ImportNotificationStream<TxHash<Self>>
Return an event stream of transactions imported to the pool.
sourcefn on_broadcasted(&self, propagations: HashMap<TxHash<Self>, Vec<String>>)
fn on_broadcasted(&self, propagations: HashMap<TxHash<Self>, Vec<String>>)
Notify the pool about transactions broadcast.
sourcefn ready_transaction(
&self,
hash: &TxHash<Self>
) -> Option<Arc<Self::InPoolTransaction>>
fn ready_transaction(
&self,
hash: &TxHash<Self>
) -> Option<Arc<Self::InPoolTransaction>>
Return specific ready transaction by hash, if there is one.
sourcefn ready_at(
&self,
at: NumberFor<Self::Block>
) -> Pin<Box<dyn Future<Output = Box<dyn ReadyTransactions<Item = Arc<Transaction<<<PoolApi as ChainApi>::Block as Block>::Hash, <<PoolApi as ChainApi>::Block as Block>::Extrinsic>>> + Send>> + Send>>
fn ready_at(
&self,
at: NumberFor<Self::Block>
) -> Pin<Box<dyn Future<Output = Box<dyn ReadyTransactions<Item = Arc<Transaction<<<PoolApi as ChainApi>::Block as Block>::Hash, <<PoolApi as ChainApi>::Block as Block>::Extrinsic>>> + Send>> + Send>>
Get an iterator for ready transactions ordered by priority. Read more
Auto Trait Implementations
impl<PoolApi, Block> !RefUnwindSafe for BasicPool<PoolApi, Block>
impl<PoolApi, Block> Send for BasicPool<PoolApi, Block>
impl<PoolApi, Block> Sync for BasicPool<PoolApi, Block>
impl<PoolApi, Block> Unpin for BasicPool<PoolApi, Block>
impl<PoolApi, Block> !UnwindSafe for BasicPool<PoolApi, Block>
Blanket Implementations
sourceimpl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
sourceimpl<T> CheckedConversion for T
impl<T> CheckedConversion for T
sourcefn checked_from<T>(t: T) -> Option<Self>where
Self: TryFrom<T>,
fn checked_from<T>(t: T) -> Option<Self>where
Self: TryFrom<T>,
sourcefn checked_into<T>(self) -> Option<T>where
Self: TryInto<T>,
fn checked_into<T>(self) -> Option<T>where
Self: TryInto<T>,
impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
fn into_any(self: Box<T, Global>) -> Box<dyn Any + 'static, Global>
fn into_any(self: Box<T, Global>) -> Box<dyn Any + 'static, Global>
Convert
Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
. Box<dyn Any>
can
then be further downcast
into Box<ConcreteType>
where ConcreteType
implements Trait
. Read morefn into_any_rc(self: Rc<T>) -> Rc<dyn Any + 'static>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any + 'static>
Convert
Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
. Read morefn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
Convert
&Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &Any
’s vtable from &Trait
’s. Read morefn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Convert
&mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &mut Any
’s vtable from &mut Trait
’s. Read moresourceimpl<T> Instrument for T
impl<T> Instrument for T
sourcefn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
sourcefn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
sourceimpl<T, Outer> IsWrappedBy<Outer> for Twhere
Outer: AsRef<T> + AsMut<T> + From<T>,
T: From<Outer>,
impl<T, Outer> IsWrappedBy<Outer> for Twhere
Outer: AsRef<T> + AsMut<T> + From<T>,
T: From<Outer>,
impl<T> Pointable for T
impl<T> Pointable for T
sourceimpl<T> SaturatedConversion for T
impl<T> SaturatedConversion for T
sourcefn saturated_from<T>(t: T) -> Selfwhere
Self: UniqueSaturatedFrom<T>,
fn saturated_from<T>(t: T) -> Selfwhere
Self: UniqueSaturatedFrom<T>,
sourcefn saturated_into<T>(self) -> Twhere
Self: UniqueSaturatedInto<T>,
fn saturated_into<T>(self) -> Twhere
Self: UniqueSaturatedInto<T>,
Consume self to return an equivalent value of
T
. Read moresourceimpl<S, T> UncheckedInto<T> for Swhere
T: UncheckedFrom<S>,
impl<S, T> UncheckedInto<T> for Swhere
T: UncheckedFrom<S>,
sourcefn unchecked_into(self) -> T
fn unchecked_into(self) -> T
The counterpart to
unchecked_from
.sourceimpl<T, S> UniqueSaturatedInto<T> for Swhere
T: Bounded,
S: TryInto<T>,
impl<T, S> UniqueSaturatedInto<T> for Swhere
T: Bounded,
S: TryInto<T>,
sourcefn unique_saturated_into(self) -> T
fn unique_saturated_into(self) -> T
Consume self to return an equivalent value of
T
.