kabu_core_mempool/
mempool_builder.rs

1use 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/// Builder for the mempool component
9#[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        // For now, create dummy channels
28        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, // influxdb_tx
39        ))
40    }
41}