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

Method handle_node_event

p2p/src/node.rs:608–955  ·  view source on GitHub ↗
(&mut self, event: Event)

Source from the content-addressed store, hash-verified

606
607 #[tracing::instrument(skip_all)]
608 async fn handle_node_event(&mut self, event: Event) -> Result<Option<SwarmEventResult>> {
609 match event {
610 Event::Bitswap(e) => {
611 match e {
612 BitswapEvent::Provide { key } => {
613 info!("bitswap provide {}", key);
614 if let Some(kad) = self.swarm.behaviour_mut().kad.as_mut() {
615 match kad.start_providing(key.hash().to_bytes().into()) {
616 Ok(_query_id) => {
617 // TODO: track query?
618 }
619 Err(err) => {
620 error!("failed to provide {}: {:?}", key, err);
621 }
622 }
623 };
624 Ok(None)
625 }
626 BitswapEvent::FindProviders {
627 key,
628 response,
629 limit,
630 } => {
631 info!("bitswap find providers {}", key);
632 self.handle_rpc_message(RpcMessage::ProviderRequest {
633 key: ProviderRequestKey::Dht(key.hash().to_bytes().into()),
634 response_channel: response,
635 limit,
636 })
637 .await?;
638 Ok(None)
639 }
640 BitswapEvent::Ping { peer, response } => {
641 match self.swarm.behaviour().peer_manager.info_for_peer(&peer) {
642 Some(info) => {
643 response.send(info.latency()).ok();
644 Ok(None)
645 }
646 None => {
647 response.send(None).ok();
648 Ok(None)
649 }
650 }
651 }
652 }
653 }
654 Event::Kademlia(e) => {
655 libp2p_metrics().record(&e);
656
657 if let kad::Event::OutboundQueryProgressed {
658 id, result, step, ..
659 } = e
660 {
661 match result {
662 QueryResult::StartProviding(_result) => Ok(None),
663 QueryResult::GetProviders(Ok(p)) => {
664 match p {
665 GetProvidersOk::FoundProviders { key, providers } => {

Callers 1

handle_swarm_eventMethod · 0.80

Calls 15

libp2p_metricsFunction · 0.85
newFunction · 0.85
handle_rpc_messageMethod · 0.80
info_for_peerMethod · 0.80
latencyMethod · 0.80
containsMethod · 0.80
into_iterMethod · 0.80
external_addressesMethod · 0.80
is_ceramic_peerMethod · 0.80

Tested by

no test coverage detected