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

Method emit_network_event

p2p/src/node.rs:585–605  ·  view source on GitHub ↗
(&mut self, ev: NetworkEvent)

Source from the content-addressed store, hash-verified

583
584 #[tracing::instrument(skip(self))]
585 fn emit_network_event(&mut self, ev: NetworkEvent) {
586 let mut to_remove = Vec::new();
587 for (i, (open, sender)) in self.network_events.iter_mut().enumerate() {
588 if !open.load(Ordering::Relaxed) {
589 to_remove.push(i);
590 continue;
591 }
592 let ev = ev.clone();
593 let sender = sender.clone();
594 let open = open.clone();
595 tokio::task::spawn(async move {
596 if let Err(_e) = sender.send(ev.clone()).await {
597 // Mark sender as closed so we stop sending events to it
598 open.store(false, Ordering::Relaxed);
599 }
600 });
601 }
602 for idx in to_remove.iter().rev() {
603 self.network_events.swap_remove(*idx);
604 }
605 }
606
607 #[tracing::instrument(skip_all)]
608 async fn handle_node_event(&mut self, event: Event) -> Result<Option<SwarmEventResult>> {

Callers 2

handle_swarm_eventMethod · 0.80
handle_rpc_messageMethod · 0.80

Calls 5

newFunction · 0.85
pushMethod · 0.45
cloneMethod · 0.45
sendMethod · 0.45
iterMethod · 0.45

Tested by

no test coverage detected