huddle_core/network/
behavior.rs1use 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}