kabu_core_mempool/
mempool_builder.rs1use crate::MempoolComponent;
2use eyre::Result;
3use kabu_core_blockchain::AppState;
4use kabu_core_components::{BuilderContext, PoolBuilder};
5use reth_node_types::NodePrimitives;
6use tokio::sync::broadcast;
7
8#[derive(Clone, Default)]
10pub struct MempoolBuilder;
11
12impl MempoolBuilder {
13 pub fn new() -> Self {
14 Self
15 }
16}
17
18impl<NP> PoolBuilder<AppState<NP>> for MempoolBuilder
19where
20 NP: NodePrimitives + Default + 'static,
21{
22 type Pool = MempoolComponent<NP>;
23
24 async fn build_pool(self, ctx: &BuilderContext<AppState<NP>>) -> Result<Self::Pool> {
25 let state = &ctx.state;
26
27 let (_mempool_tx, mempool_rx) = broadcast::channel(1000);
29 let (_market_events_tx, market_events_rx) = broadcast::channel(1000);
30 let (mempool_events_tx, _) = broadcast::channel(1000);
31
32 Ok(MempoolComponent::new(
33 state.chain_parameters.clone(),
34 state.mempool.clone(),
35 mempool_rx,
36 market_events_rx,
37 mempool_events_tx,
38 None, ))
40 }
41}