Skip to main content

fuel_core_p2p/
lib.rs

1#![deny(clippy::arithmetic_side_effects)]
2#![deny(clippy::cast_possible_truncation)]
3#![deny(unused_crate_dependencies)]
4#![deny(warnings)]
5
6use yamux as _;
7
8pub mod behavior;
9pub mod codecs;
10pub mod config;
11pub mod discovery;
12mod dnsaddr_resolution;
13pub mod gossipsub;
14pub mod heartbeat;
15pub mod p2p_service;
16pub mod peer_manager;
17pub mod peer_report;
18pub mod ports;
19pub mod request_response;
20pub mod service;
21mod utils;
22
23mod cached_view;
24mod connection_limits;
25mod limited_behaviour;
26
27pub use gossipsub::config as gossipsub_config;
28pub use heartbeat::Config;
29
30pub use libp2p::{
31    Multiaddr,
32    PeerId,
33    multiaddr::Protocol,
34};
35use tracing::warn;
36
37#[cfg(feature = "test-helpers")]
38pub mod network_service {
39    pub use crate::p2p_service::*;
40}
41
42pub trait TryPeerId {
43    /// Tries convert `Self` into `PeerId`.
44    fn try_to_peer_id(&self) -> Option<PeerId>;
45}
46
47impl TryPeerId for Multiaddr {
48    fn try_to_peer_id(&self) -> Option<PeerId> {
49        self.iter().last().and_then(|p| match p {
50            Protocol::P2p(peer_id) => Some(peer_id),
51            Protocol::Dnsaddr(multiaddr) => {
52                warn!(
53                    "synchronous recursive dnsaddr resolution is not yet supported: {:?}",
54                    multiaddr
55                );
56                None
57            }
58            _ => None,
59        })
60    }
61}
62
63#[cfg(test)]
64fuel_core_trace::enable_tracing!();