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 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!();