(
&mut self,
event: NodeSwarmEvent<P, M, S>,
)
| 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!( |
nothing calls this directly
no test coverage detected