snowstorm/net/behaviour/
mod.rs1pub(super) mod config;
2use crate::config::Config;
3
4use libp2p::swarm::behaviour::toggle::Toggle;
5pub use libp2p::{
6 identify,
7 ping,
8 rendezvous,
9 swarm::NetworkBehaviour,
10 upnp,
11};
12use libp2p_stream as stream;
13
14#[derive(NetworkBehaviour)]
15pub struct SnowstormBehaviour {
16 ping: Toggle<ping::Behaviour>,
17 upnp: Toggle<upnp::tokio::Behaviour>,
18 identify: Toggle<identify::Behaviour>,
19 rendezvous_server: Toggle<rendezvous::server::Behaviour>,
20 rendezvous_client: Toggle<rendezvous::client::Behaviour>,
21 stream: Toggle<stream::Behaviour>,
22}
23
24impl SnowstormBehaviour {
25 pub fn new(config: &Config) -> Self {
26 Self::from(config)
27 }
28
29 pub fn ping(&self) -> Option<&ping::Behaviour> {
30 self.ping.as_ref()
31 }
32
33 pub fn upnp(&self) -> Option<&upnp::tokio::Behaviour> {
34 self.upnp.as_ref()
35 }
36
37 pub fn identify(&self) -> Option<&identify::Behaviour> {
38 self.identify.as_ref()
39 }
40
41 pub fn rendezvous_server(&self) -> Option<&rendezvous::server::Behaviour> {
42 self.rendezvous_server.as_ref()
43 }
44
45 pub fn rendezvous_client(&mut self) -> Option<&mut rendezvous::client::Behaviour> {
46 self.rendezvous_client.as_mut()
47 }
48
49 pub fn stream(&self) -> Option<&stream::Behaviour> {
50 self.stream.as_ref()
51 }
52}