snowstorm/net/behaviour/
mod.rs

1pub(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}