Skip to content

Commit dd286fe

Browse files
committed
feat: implement mdns and rendezvous peer discovery
1 parent b64b015 commit dd286fe

File tree

11 files changed

+445
-382
lines changed

11 files changed

+445
-382
lines changed

examples/chat/Cargo.toml

+3
Original file line numberDiff line numberDiff line change
@@ -10,14 +10,17 @@ license = "MIT OR Apache-2.0"
1010
clap = { version = "4.5.4", features = ["derive", "env"] }
1111
eyre = "0.6.12"
1212
libp2p = { version = "0.53.2", features = [
13+
"autonat",
1314
"dcutr",
1415
"dns",
1516
"gossipsub",
1617
"identify",
1718
"macros",
19+
"mdns",
1820
"noise",
1921
"ping",
2022
"quic",
23+
"rendezvous",
2124
"relay",
2225
"tokio",
2326
"tcp",

examples/chat/src/main.rs

+14-19
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,11 @@ struct Opt {
3131

3232
/// The listening address of a relay server to connect to.
3333
#[clap(long)]
34-
relay_address: Multiaddr,
34+
boot_nodes: Vec<Multiaddr>,
35+
36+
/// The listening address of a relay server to connect to.
37+
#[clap(long, default_value = "/calimero/devnet/examples/chat")]
38+
rendezvous_namespace: String,
3539

3640
/// Optional list of peer addresses to dial immediately after network bootstrap.
3741
#[clap(long)]
@@ -53,7 +57,7 @@ async fn main() -> eyre::Result<()> {
5357
tracing_subscriber::registry()
5458
// "info,chat_example=debug,{}",
5559
.with(EnvFilter::builder().parse(format!(
56-
"info,chat_example=debug,{}",
60+
"info,chat_example=info,libp2p_mdns=warn,{}",
5761
std::env::var("RUST_LOG").unwrap_or_default()
5862
))?)
5963
.with(tracing_subscriber::fmt::layer())
@@ -63,8 +67,14 @@ async fn main() -> eyre::Result<()> {
6367

6468
let keypair = generate_ed25519(opt.secret_key_seed);
6569

66-
let (network_client, mut network_events) =
67-
network::run(keypair.clone(), opt.port, opt.relay_address.clone()).await?;
70+
let (network_client, mut network_events) = network::run(
71+
keypair.clone(),
72+
opt.port,
73+
libp2p::rendezvous::Namespace::new(opt.rendezvous_namespace)?,
74+
opt.boot_nodes.clone(),
75+
opt.boot_nodes.clone(),
76+
)
77+
.await?;
6878

6979
if let Some(peer_addrs) = opt.dial_peer_addrs {
7080
for addr in peer_addrs {
@@ -128,18 +138,6 @@ async fn handle_network_event(
128138
is_echo: bool,
129139
) -> eyre::Result<()> {
130140
match event {
131-
network::types::NetworkEvent::IdentifySent { peer_id } => {
132-
debug!("Identify sent to {:?}", peer_id);
133-
}
134-
network::types::NetworkEvent::IdentifyReceived {
135-
peer_id,
136-
observed_addr,
137-
} => {
138-
debug!(
139-
"Identify received from {:?} at {:?}",
140-
peer_id, observed_addr
141-
);
142-
}
143141
network::types::NetworkEvent::Message { message, .. } => {
144142
let text = String::from_utf8_lossy(&message.data);
145143
println!("{LINE_START} Received message: {:?}", text);
@@ -166,9 +164,6 @@ async fn handle_network_event(
166164
network::types::NetworkEvent::ListeningOn { address, .. } => {
167165
info!("Listening on: {}", address);
168166
}
169-
event => {
170-
info!("Unhandled event: {:?}", event);
171-
}
172167
}
173168
Ok(())
174169
}

0 commit comments

Comments
 (0)