calimero-network 0.10.0

Core Calimero infrastructure and tools
Documentation
use calimero_network_primitives::messages::NetworkEvent;
use libp2p::gossipsub::Event;
use libp2p_metrics::Recorder;
use owo_colors::OwoColorize;
use tracing::{debug, warn};

use super::{EventHandler, NetworkManager};

impl EventHandler<Event> for NetworkManager {
    fn handle(&mut self, event: Event) {
        self.metrics.record(&event);
        debug!("{}: {:?}", "gossipsub".yellow(), event);

        match event {
            Event::Message {
                message_id: id,
                message,
                ..
            } => {
                if !self
                    .event_dispatcher
                    .dispatch(NetworkEvent::Message { id, message })
                {
                    warn!("Failed to dispatch gossipsub message event");
                }
            }
            Event::Subscribed { peer_id, topic } => {
                if !self
                    .event_dispatcher
                    .dispatch(NetworkEvent::Subscribed { peer_id, topic })
                {
                    warn!("Failed to dispatch subscribed event");
                }
            }
            Event::Unsubscribed { peer_id, topic } => {
                if !self
                    .event_dispatcher
                    .dispatch(NetworkEvent::Unsubscribed { peer_id, topic })
                {
                    warn!("Failed to dispatch unsubscribed event");
                }
            }
            Event::GossipsubNotSupported { .. } => {}
            Event::SlowPeer { .. } => {}
        }
    }
}