MCPcopy Create free account
hub / github.com/ceramicnetwork/rust-ceramic / handle_swarm_event

Method handle_swarm_event

p2p/src/node.rs:490–582  ·  view source on GitHub ↗
(
        &mut self,
        event: NodeSwarmEvent<P, M, S>,
    )

Source from the content-addressed store, hash-verified

488 // TODO fix skip_all
489 #[tracing::instrument(skip_all)]
490 async fn handle_swarm_event(
491 &mut self,
492 event: NodeSwarmEvent<P, M, S>,
493 ) -> Result<Option<SwarmEventResult>> {
494 libp2p_metrics().record(&event);
495 match event {
496 // outbound events
497 SwarmEvent::Behaviour(event) => self.handle_node_event(event).await,
498 SwarmEvent::ConnectionEstablished {
499 peer_id,
500 num_established,
501 ..
502 } => {
503 if let Some(channels) = self.dial_queries.get_mut(&peer_id) {
504 while let Some(channel) = channels.pop() {
505 channel.send(Ok(())).ok();
506 }
507 }
508
509 if num_established == 1.try_into().unwrap() {
510 self.emit_network_event(NetworkEvent::PeerConnected(peer_id));
511 }
512 trace!("ConnectionEstablished: {:}", peer_id);
513 Ok(None)
514 }
515 SwarmEvent::ConnectionClosed {
516 peer_id,
517 num_established,
518 ..
519 } => {
520 if num_established == 0 {
521 self.emit_network_event(NetworkEvent::PeerDisconnected(peer_id));
522 }
523
524 trace!("ConnectionClosed: {:}", peer_id);
525 Ok(None)
526 }
527 SwarmEvent::OutgoingConnectionError { peer_id, error, .. } => {
528 trace!("failed to dial: {:?}, {:?}", peer_id, error);
529
530 if let Some(peer_id) = peer_id {
531 if let Some(channels) = self.dial_queries.get_mut(&peer_id) {
532 while let Some(channel) = channels.pop() {
533 channel
534 .send(Err(anyhow!("Error dialing peer {:?}: {}", peer_id, error)))
535 .ok();
536 }
537 }
538 }
539 Ok(None)
540 }
541 SwarmEvent::ExternalAddrConfirmed { address } => {
542 if let Err(err) = self
543 .peers_tx
544 .send(peers::Message::NewLocalAddresses(vec![address]))
545 .await
546 {
547 warn!(

Callers

nothing calls this directly

Calls 8

libp2p_metricsFunction · 0.85
handle_node_eventMethod · 0.80
popMethod · 0.80
unwrapMethod · 0.80
try_intoMethod · 0.80
emit_network_eventMethod · 0.80
recordMethod · 0.45
sendMethod · 0.45

Tested by

no test coverage detected