mirror of
https://github.com/logos-blockchain/logos-blockchain-testing.git
synced 2026-01-07 15:53:10 +00:00
Split cfgsync network helpers into address/peers modules
This commit is contained in:
parent
eb80a16c7c
commit
f4f15e1e83
19
testing-framework/tools/cfgsync/src/network/address.rs
Normal file
19
testing-framework/tools/cfgsync/src/network/address.rs
Normal file
@ -0,0 +1,19 @@
|
||||
use nomos_libp2p::{Multiaddr, Protocol};
|
||||
|
||||
pub fn extract_udp_port(addr: &Multiaddr) -> Option<u16> {
|
||||
addr.iter().find_map(|protocol| {
|
||||
if let Protocol::Udp(port) = protocol {
|
||||
Some(port)
|
||||
} else {
|
||||
None
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
pub fn find_matching_host(addr: &Multiaddr, original_ports: &[u16]) -> Option<usize> {
|
||||
extract_udp_port(addr).and_then(|port| {
|
||||
original_ports
|
||||
.iter()
|
||||
.position(|candidate| *candidate == port)
|
||||
})
|
||||
}
|
||||
@ -1,49 +1,4 @@
|
||||
use std::str::FromStr;
|
||||
pub mod address;
|
||||
pub mod peers;
|
||||
|
||||
use nomos_libp2p::{Multiaddr, PeerId, Protocol};
|
||||
|
||||
use crate::host::Host;
|
||||
|
||||
pub fn rewrite_initial_peers(
|
||||
templates: &[Vec<Multiaddr>],
|
||||
original_ports: &[u16],
|
||||
hosts: &[Host],
|
||||
peer_ids: &[PeerId],
|
||||
) -> Vec<Vec<Multiaddr>> {
|
||||
templates
|
||||
.iter()
|
||||
.enumerate()
|
||||
.map(|(node_idx, peers)| {
|
||||
peers
|
||||
.iter()
|
||||
.filter_map(|addr| find_matching_host(addr, original_ports))
|
||||
.filter(|&peer_idx| peer_idx != node_idx)
|
||||
.map(|peer_idx| {
|
||||
<Multiaddr as FromStr>::from_str(&format!(
|
||||
"/ip4/{}/udp/{}/quic-v1/p2p/{}",
|
||||
hosts[peer_idx].ip, hosts[peer_idx].network_port, peer_ids[peer_idx]
|
||||
))
|
||||
.expect("valid peer multiaddr")
|
||||
})
|
||||
.collect()
|
||||
})
|
||||
.collect()
|
||||
}
|
||||
|
||||
pub fn find_matching_host(addr: &Multiaddr, original_ports: &[u16]) -> Option<usize> {
|
||||
extract_udp_port(addr).and_then(|port| {
|
||||
original_ports
|
||||
.iter()
|
||||
.position(|candidate| *candidate == port)
|
||||
})
|
||||
}
|
||||
|
||||
pub fn extract_udp_port(addr: &Multiaddr) -> Option<u16> {
|
||||
addr.iter().find_map(|protocol| {
|
||||
if let Protocol::Udp(port) = protocol {
|
||||
Some(port)
|
||||
} else {
|
||||
None
|
||||
}
|
||||
})
|
||||
}
|
||||
pub use peers::rewrite_initial_peers;
|
||||
|
||||
32
testing-framework/tools/cfgsync/src/network/peers.rs
Normal file
32
testing-framework/tools/cfgsync/src/network/peers.rs
Normal file
@ -0,0 +1,32 @@
|
||||
use std::str::FromStr;
|
||||
|
||||
use nomos_libp2p::{Multiaddr, PeerId};
|
||||
|
||||
use super::address::find_matching_host;
|
||||
use crate::host::Host;
|
||||
|
||||
pub fn rewrite_initial_peers(
|
||||
templates: &[Vec<Multiaddr>],
|
||||
original_ports: &[u16],
|
||||
hosts: &[Host],
|
||||
peer_ids: &[PeerId],
|
||||
) -> Vec<Vec<Multiaddr>> {
|
||||
templates
|
||||
.iter()
|
||||
.enumerate()
|
||||
.map(|(node_idx, peers)| {
|
||||
peers
|
||||
.iter()
|
||||
.filter_map(|addr| find_matching_host(addr, original_ports))
|
||||
.filter(|&peer_idx| peer_idx != node_idx)
|
||||
.map(|peer_idx| {
|
||||
Multiaddr::from_str(&format!(
|
||||
"/ip4/{}/udp/{}/quic-v1/p2p/{}",
|
||||
hosts[peer_idx].ip, hosts[peer_idx].network_port, peer_ids[peer_idx]
|
||||
))
|
||||
.expect("valid peer multiaddr")
|
||||
})
|
||||
.collect()
|
||||
})
|
||||
.collect()
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user