diff --git a/crates/net/network/src/config.rs b/crates/net/network/src/config.rs index f97f4004f949..5e229dbdbbd0 100644 --- a/crates/net/network/src/config.rs +++ b/crates/net/network/src/config.rs @@ -169,6 +169,9 @@ pub struct NetworkConfigBuilder { head: Option, /// Whether tx gossip is disabled tx_gossip_disabled: bool, + /// The block importer type + #[serde(skip)] + block_import: Option>, /// Optimism Network Config Builder #[cfg(feature = "optimism")] optimism_network_config: OptimismNetworkConfigBuilder, @@ -204,6 +207,7 @@ impl NetworkConfigBuilder { extra_protocols: Default::default(), head: None, tx_gossip_disabled: false, + block_import: None, #[cfg(feature = "optimism")] optimism_network_config: OptimismNetworkConfigBuilder::default(), } @@ -396,6 +400,12 @@ impl NetworkConfigBuilder { self } + /// Sets the block import type. + pub fn block_import(mut self, block_import: Box) -> Self { + self.block_import = Some(block_import); + self + } + /// Sets the sequencer HTTP endpoint. #[cfg(feature = "optimism")] pub fn sequencer_endpoint(mut self, endpoint: Option) -> Self { @@ -427,6 +437,7 @@ impl NetworkConfigBuilder { extra_protocols, head, tx_gossip_disabled, + block_import, #[cfg(feature = "optimism")] optimism_network_config: OptimismNetworkConfigBuilder { sequencer_endpoint }, } = self; @@ -473,7 +484,7 @@ impl NetworkConfigBuilder { peers_config: peers_config.unwrap_or_default(), sessions_config: sessions_config.unwrap_or_default(), chain_spec, - block_import: Box::::default(), + block_import: block_import.unwrap_or(Box::::default()), network_mode, executor: executor.unwrap_or_else(|| Box::::default()), status, diff --git a/crates/net/network/src/import.rs b/crates/net/network/src/import.rs index f7564f977088..d127dab8fed7 100644 --- a/crates/net/network/src/import.rs +++ b/crates/net/network/src/import.rs @@ -1,3 +1,5 @@ +//! This module provides an abstraction over block import in the form of the `BlockImport` trait. + use crate::message::NewBlockMessage; use reth_primitives::PeerId; use std::task::{Context, Poll}; diff --git a/crates/net/network/src/lib.rs b/crates/net/network/src/lib.rs index eec19ee1c127..4c102b78f40e 100644 --- a/crates/net/network/src/lib.rs +++ b/crates/net/network/src/lib.rs @@ -122,10 +122,10 @@ pub mod error; pub mod eth_requests; mod fetch; mod flattened_response; -mod import; +pub mod import; mod listener; mod manager; -mod message; +pub mod message; mod metrics; mod network; pub mod peers; diff --git a/crates/net/network/src/message.rs b/crates/net/network/src/message.rs index 3e9ba3c4df75..17d202733d18 100644 --- a/crates/net/network/src/message.rs +++ b/crates/net/network/src/message.rs @@ -158,11 +158,17 @@ impl PeerRequest { /// Corresponding variant for [`PeerRequest`]. #[derive(Debug)] +#[allow(missing_docs)] pub enum PeerResponse { + /// Response to a [`GetBlockHeaders`] request. BlockHeaders { response: oneshot::Receiver> }, + /// Response to a [`GetBlockBodies`] request. BlockBodies { response: oneshot::Receiver> }, + /// Response to a [`GetPooledTransactions`] request. PooledTransactions { response: oneshot::Receiver> }, + /// Response to a [`GetNodeData`] request. NodeData { response: oneshot::Receiver> }, + /// Response to a [`GetReceipts`] request. Receipts { response: oneshot::Receiver> }, }