huddle_core/network/
behavior.rs1use libp2p::swarm::behaviour::toggle::Toggle;
2use libp2p::swarm::NetworkBehaviour;
3use libp2p::{autonat, dcutr, gossipsub, identify, mdns, ping, relay};
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 pub relay_client: relay::client::Behaviour,
17 pub autonat_client: autonat::v2::client::Behaviour,
26 pub autonat_server: autonat::v2::server::Behaviour,
27 pub dcutr: dcutr::Behaviour,
28}
29
30#[derive(Debug)]
31pub enum HuddleBehaviorEvent {
32 Mdns(mdns::Event),
33 Identify(identify::Event),
34 Ping(ping::Event),
35 Gossipsub(gossipsub::Event),
36 RelayClient(relay::client::Event),
37 AutonatClient(autonat::v2::client::Event),
38 AutonatServer(autonat::v2::server::Event),
39 Dcutr(dcutr::Event),
40}
41
42impl From<mdns::Event> for HuddleBehaviorEvent {
43 fn from(event: mdns::Event) -> Self {
44 Self::Mdns(event)
45 }
46}
47
48impl From<identify::Event> for HuddleBehaviorEvent {
49 fn from(event: identify::Event) -> Self {
50 Self::Identify(event)
51 }
52}
53
54impl From<ping::Event> for HuddleBehaviorEvent {
55 fn from(event: ping::Event) -> Self {
56 Self::Ping(event)
57 }
58}
59
60impl From<gossipsub::Event> for HuddleBehaviorEvent {
61 fn from(event: gossipsub::Event) -> Self {
62 Self::Gossipsub(event)
63 }
64}
65
66impl From<relay::client::Event> for HuddleBehaviorEvent {
67 fn from(event: relay::client::Event) -> Self {
68 Self::RelayClient(event)
69 }
70}
71
72impl From<autonat::v2::client::Event> for HuddleBehaviorEvent {
73 fn from(event: autonat::v2::client::Event) -> Self {
74 Self::AutonatClient(event)
75 }
76}
77
78impl From<autonat::v2::server::Event> for HuddleBehaviorEvent {
79 fn from(event: autonat::v2::server::Event) -> Self {
80 Self::AutonatServer(event)
81 }
82}
83
84impl From<dcutr::Event> for HuddleBehaviorEvent {
85 fn from(event: dcutr::Event) -> Self {
86 Self::Dcutr(event)
87 }
88}