feat: add NetworkManager::eth (#13936)

This commit is contained in:
Matthias Seitz
2025-01-23 00:05:36 +01:00
committed by GitHub
parent 24c5234a50
commit 4dcc135495
5 changed files with 28 additions and 14 deletions

View File

@ -142,7 +142,25 @@ pub struct NetworkManager<N: NetworkPrimitives = EthNetworkPrimitives> {
disconnect_metrics: DisconnectMetrics,
}
// === impl NetworkManager ===
impl NetworkManager {
/// Creates the manager of a new network with [`EthNetworkPrimitives`] types.
///
/// ```no_run
/// # async fn f() {
/// use reth_chainspec::MAINNET;
/// use reth_network::{NetworkConfig, NetworkManager};
/// let config =
/// NetworkConfig::builder_with_rng_secret_key().build_with_noop_provider(MAINNET.clone());
/// let manager = NetworkManager::eth(config).await;
/// # }
/// ```
pub async fn eth<C: BlockNumReader + 'static>(
config: NetworkConfig<C, EthNetworkPrimitives>,
) -> Result<Self, NetworkError> {
Self::new(config).await
}
}
impl<N: NetworkPrimitives> NetworkManager<N> {
/// Sets the dedicated channel for events indented for the
/// [`TransactionsManager`](crate::transactions::TransactionsManager).

View File

@ -14,9 +14,7 @@
use chainspec::{boot_nodes, bsc_chain_spec};
use reth_discv4::Discv4ConfigBuilder;
use reth_network::{
EthNetworkPrimitives, NetworkConfig, NetworkEvent, NetworkEventListenerProvider, NetworkManager,
};
use reth_network::{NetworkConfig, NetworkEvent, NetworkEventListenerProvider, NetworkManager};
use reth_network_api::{
events::{PeerEvent, SessionInfo},
PeersInfo,
@ -69,7 +67,7 @@ async fn main() {
// latest BSC forkId, we need to override this to allow connections from BSC nodes
let fork_id = ForkId { hash: ForkHash([0x07, 0xb5, 0x43, 0x28]), next: 0 };
net_cfg.fork_filter.set_current_fork_id(fork_id);
let net_manager = NetworkManager::<EthNetworkPrimitives>::new(net_cfg).await.unwrap();
let net_manager = NetworkManager::eth(net_cfg).await.unwrap();
// The network handle is our entrypoint into the network.
let net_handle = net_manager.handle().clone();

View File

@ -14,8 +14,8 @@ use std::net::{Ipv4Addr, SocketAddr, SocketAddrV4};
use reth::builder::NodeHandle;
use reth_network::{
config::SecretKey, protocol::IntoRlpxSubProtocol, EthNetworkPrimitives, NetworkConfig,
NetworkManager, NetworkProtocols,
config::SecretKey, protocol::IntoRlpxSubProtocol, NetworkConfig, NetworkManager,
NetworkProtocols,
};
use reth_network_api::{test_utils::PeersHandleProvider, NetworkInfo};
use reth_node_ethereum::EthereumNode;
@ -53,7 +53,7 @@ fn main() -> eyre::Result<()> {
.build_with_noop_provider(node.chain_spec());
// spawn the second network instance
let subnetwork = NetworkManager::<EthNetworkPrimitives>::new(net_cfg).await?;
let subnetwork = NetworkManager::eth(net_cfg).await?;
let subnetwork_peer_id = *subnetwork.peer_id();
let subnetwork_peer_addr = subnetwork.local_addr();
let subnetwork_handle = subnetwork.peers_handle();

View File

@ -8,8 +8,7 @@
use futures::StreamExt;
use reth_network::{
config::rng_secret_key, EthNetworkPrimitives, NetworkConfig, NetworkEventListenerProvider,
NetworkManager,
config::rng_secret_key, NetworkConfig, NetworkEventListenerProvider, NetworkManager,
};
use reth_provider::test_utils::NoopProvider;
@ -25,7 +24,7 @@ async fn main() -> eyre::Result<()> {
let config = NetworkConfig::builder(local_key).mainnet_boot_nodes().build(client);
// create the network instance
let network = NetworkManager::<EthNetworkPrimitives>::new(config).await?;
let network = NetworkManager::eth(config).await?;
// get a handle to the network to interact with it
let handle = network.handle().clone();

View File

@ -12,8 +12,7 @@
use chain_cfg::{boot_nodes, head, polygon_chain_spec};
use reth_discv4::Discv4ConfigBuilder;
use reth_network::{
config::NetworkMode, EthNetworkPrimitives, NetworkConfig, NetworkEvent,
NetworkEventListenerProvider, NetworkManager,
config::NetworkMode, NetworkConfig, NetworkEvent, NetworkEventListenerProvider, NetworkManager,
};
use reth_network_api::events::SessionInfo;
use reth_tracing::{
@ -59,7 +58,7 @@ async fn main() {
discv4_cfg.add_boot_nodes(boot_nodes()).lookup_interval(interval);
let net_cfg = net_cfg.set_discovery_v4(discv4_cfg.build());
let net_manager = NetworkManager::<EthNetworkPrimitives>::new(net_cfg).await.unwrap();
let net_manager = NetworkManager::eth(net_cfg).await.unwrap();
// The network handle is our entrypoint into the network.
let net_handle = net_manager.handle();