feat(rendezvous): directly return error from register

Resolves #4070.

Pull-Request: #4073.
This commit is contained in:
Denis Garus
2023-06-17 14:19:41 +03:00
committed by GitHub
parent b8ceeccdc6
commit c4ab04c57c
5 changed files with 110 additions and 69 deletions

View File

@ -78,11 +78,14 @@ async fn main() {
SwarmEvent::Behaviour(MyBehaviourEvent::Identify(identify::Event::Received {
..
})) => {
swarm.behaviour_mut().rendezvous.register(
if let Err(error) = swarm.behaviour_mut().rendezvous.register(
rendezvous::Namespace::from_static("rendezvous"),
rendezvous_point,
None,
);
) {
log::error!("Failed to register: {error}");
return;
}
}
SwarmEvent::Behaviour(MyBehaviourEvent::Rendezvous(
rendezvous::client::Event::Registered {
@ -99,9 +102,18 @@ async fn main() {
);
}
SwarmEvent::Behaviour(MyBehaviourEvent::Rendezvous(
rendezvous::client::Event::RegisterFailed(error),
rendezvous::client::Event::RegisterFailed {
rendezvous_node,
namespace,
error,
},
)) => {
log::error!("Failed to register {}", error);
log::error!(
"Failed to register: rendezvous_node={}, namespace={}, error_code={:?}",
rendezvous_node,
namespace,
error
);
return;
}
SwarmEvent::Behaviour(MyBehaviourEvent::Ping(ping::Event {

View File

@ -74,11 +74,14 @@ async fn main() {
log::error!("Lost connection to rendezvous point {}", error);
}
SwarmEvent::ConnectionEstablished { peer_id, .. } if peer_id == rendezvous_point => {
swarm.behaviour_mut().rendezvous.register(
if let Err(error) = swarm.behaviour_mut().rendezvous.register(
rendezvous::Namespace::from_static("rendezvous"),
rendezvous_point,
None,
);
) {
log::error!("Failed to register: {error}");
return;
}
log::info!("Connection established with rendezvous point {}", peer_id);
}
// once `/identify` did its job, we know our external address and can register
@ -97,9 +100,18 @@ async fn main() {
);
}
SwarmEvent::Behaviour(MyBehaviourEvent::Rendezvous(
rendezvous::client::Event::RegisterFailed(error),
rendezvous::client::Event::RegisterFailed {
rendezvous_node,
namespace,
error,
},
)) => {
log::error!("Failed to register {}", error);
log::error!(
"Failed to register: rendezvous_node={}, namespace={}, error_code={:?}",
rendezvous_node,
namespace,
error
);
return;
}
SwarmEvent::Behaviour(MyBehaviourEvent::Ping(ping::Event {