Struct Emitter

Source
pub struct Emitter<C> { /* private fields */ }
Expand description

The Emitter is used to emit data sourced from bitcoincore_rpc::Client.

Refer to module-level documentation for more.

Implementations§

Source§

impl<C> Emitter<C>
where C: Deref, C::Target: RpcApi,

Source

pub fn new( client: C, last_cp: CheckPoint, start_height: u32, expected_mempool_txs: impl IntoIterator<Item = impl Into<Arc<Transaction>>>, ) -> Self

Construct a new Emitter.

last_cp informs the emitter of the chain we are starting off with. This way, the emitter can start emission from a block that connects to the original chain.

start_height starts emission from a given height (if there are no conflicts with the original chain).

expected_mempool_txs is the initial set of unconfirmed transactions provided by the wallet. This allows the Emitter to inform the wallet about relevant mempool evictions. If it is known that the wallet is empty, NO_EXPECTED_MEMPOOL_TXS can be used.

Source

pub fn mempool(&mut self) -> Result<MempoolEvent, Error>

Emit mempool transactions and any evicted Txids.

This method returns a MempoolEvent containing the full transactions (with their first-seen unix timestamps) that were emitted, and MempoolEvent::evicted which are any Txids which were previously seen in the mempool and are now missing. Evicted txids are only reported once the emitter’s checkpoint matches the RPC’s best block in both height and hash. Until next_block() advances the checkpoint to tip, mempool() will always return an empty evicted set.

Source

pub fn mempool_at(&mut self, sync_time: u64) -> Result<MempoolEvent, Error>

Emit mempool transactions and any evicted Txids at the given sync_time.

sync_time is in unix seconds.

This is the no-std version of mempool.

Source

pub fn next_block(&mut self) -> Result<Option<BlockEvent<Block>>, Error>

Emit the next block height and block (if any).

Auto Trait Implementations§

§

impl<C> Freeze for Emitter<C>
where C: Freeze,

§

impl<C> RefUnwindSafe for Emitter<C>
where C: RefUnwindSafe,

§

impl<C> Send for Emitter<C>
where C: Send,

§

impl<C> Sync for Emitter<C>
where C: Sync,

§

impl<C> Unpin for Emitter<C>
where C: Unpin,

§

impl<C> UnwindSafe for Emitter<C>
where C: UnwindSafe,

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V