use libp2p::Multiaddr;
use serde::{Deserialize, Serialize};
#[cfg(test)]
use std::net::Ipv4Addr;
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
#[serde(default)]
#[cfg_attr(test, derive(derive_quickcheck_arbitrary::Arbitrary))]
pub struct Libp2pConfig {
#[cfg_attr(test, arbitrary(gen(
|g: &mut quickcheck::Gen| {
let addr = Ipv4Addr::arbitrary(&mut *g);
let n = u8::arbitrary(g) as usize;
vec![addr.into(); n]
}
)))]
pub listening_multiaddrs: Vec<Multiaddr>,
#[cfg_attr(test, arbitrary(gen(
|g| vec![Ipv4Addr::arbitrary(g).into()]
)))]
pub bootstrap_peers: Vec<Multiaddr>,
pub mdns: bool,
pub kademlia: bool,
pub target_peer_count: u32,
}
impl Default for Libp2pConfig {
fn default() -> Self {
Self {
listening_multiaddrs: vec![
"/ip4/0.0.0.0/tcp/0".parse().expect("Infallible"),
"/ip4/0.0.0.0/udp/0/quic-v1".parse().expect("Infallible"),
],
bootstrap_peers: vec![],
mdns: false,
kademlia: true,
target_peer_count: 75,
}
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn config_default() {
let _ = Libp2pConfig::default();
}
}