Skip to main content

huddle_core/network/
behavior.rs

1use libp2p::swarm::behaviour::toggle::Toggle;
2use libp2p::swarm::NetworkBehaviour;
3use libp2p::{gossipsub, identify, mdns, ping};
4
5#[derive(NetworkBehaviour)]
6#[behaviour(to_swarm = "HuddleBehaviorEvent")]
7pub struct HuddleBehavior {
8    pub mdns: Toggle<mdns::tokio::Behaviour>,
9    pub identify: identify::Behaviour,
10    pub ping: ping::Behaviour,
11    pub gossipsub: gossipsub::Behaviour,
12}
13
14#[derive(Debug)]
15pub enum HuddleBehaviorEvent {
16    Mdns(mdns::Event),
17    Identify(identify::Event),
18    Ping(ping::Event),
19    Gossipsub(gossipsub::Event),
20}
21
22impl From<mdns::Event> for HuddleBehaviorEvent {
23    fn from(event: mdns::Event) -> Self {
24        Self::Mdns(event)
25    }
26}
27
28impl From<identify::Event> for HuddleBehaviorEvent {
29    fn from(event: identify::Event) -> Self {
30        Self::Identify(event)
31    }
32}
33
34impl From<ping::Event> for HuddleBehaviorEvent {
35    fn from(event: ping::Event) -> Self {
36        Self::Ping(event)
37    }
38}
39
40impl From<gossipsub::Event> for HuddleBehaviorEvent {
41    fn from(event: gossipsub::Event) -> Self {
42        Self::Gossipsub(event)
43    }
44}