mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-07-15 00:55:44 +00:00
RPC: Pending Extrinsics (#563)
* Expose extrinsics in pool. * Add test. * Use latest transaction pool. * Fix compilation.
This commit is contained in:
@@ -16,6 +16,9 @@
|
||||
|
||||
//! External API for extrinsic pool.
|
||||
|
||||
use std::fmt::Debug;
|
||||
|
||||
use serde::{Serialize, de::DeserializeOwned};
|
||||
use txpool;
|
||||
use futures::sync::mpsc;
|
||||
|
||||
@@ -43,6 +46,9 @@ pub trait ExtrinsicPool<Ex, BlockId, Hash>: Send + Sync + 'static {
|
||||
/// Error type
|
||||
type Error: Error;
|
||||
|
||||
/// Pooled extrinsics
|
||||
type InPool: Debug + Serialize + DeserializeOwned + Send + Sync + 'static;
|
||||
|
||||
/// Submit a collection of extrinsics to the pool.
|
||||
fn submit(&self, block: BlockId, xt: Vec<Ex>) -> Result<Vec<Hash>, Self::Error>;
|
||||
|
||||
@@ -54,4 +60,7 @@ pub trait ExtrinsicPool<Ex, BlockId, Hash>: Send + Sync + 'static {
|
||||
|
||||
/// Return an event stream of transactions imported to the pool.
|
||||
fn import_notification_stream(&self) -> EventStream;
|
||||
|
||||
/// Return all extrinsics in the pool aggregated by the sender.
|
||||
fn all(&self) -> Self::InPool;
|
||||
}
|
||||
|
||||
@@ -149,4 +149,19 @@ impl<Hash, VEx, S, E> Pool<Hash, VEx, S, E> where
|
||||
{
|
||||
f(self.pool.read().pending(ready))
|
||||
}
|
||||
|
||||
/// Retrieve all transactions in the pool. The transactions might be unordered.
|
||||
pub fn all<F, T>(&self, f: F) -> T where
|
||||
F: FnOnce(txpool::UnorderedIterator<VEx, AlwaysReady, S>) -> T,
|
||||
{
|
||||
f(self.pool.read().unordered_pending(AlwaysReady))
|
||||
}
|
||||
}
|
||||
|
||||
/// A Readiness implementation that returns `Ready` for all transactions.
|
||||
pub struct AlwaysReady;
|
||||
impl<VEx> txpool::Ready<VEx> for AlwaysReady {
|
||||
fn is_ready(&mut self, _tx: &VEx) -> txpool::Readiness {
|
||||
txpool::Readiness::Ready
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user