1pub mod chat;
6pub mod discovery;
7pub mod mailbox;
8
9use anyhow::Result;
10use libp2p::{
11 core::{transport::Boxed, upgrade::Version},
12 identity, noise, tcp, yamux, PeerId, Transport,
13};
14
15type BoxedTransport = Boxed<(PeerId, libp2p::core::muxing::StreamMuxerBox)>;
17
18pub use chat::ChatBehaviour;
19pub use discovery::DiscoveryBehaviour;
20pub use mailbox::MailboxBehaviour;
21
22pub fn build_transport(keypair: &identity::Keypair) -> Result<BoxedTransport> {
35 let tcp = tcp::tokio::Transport::new(tcp::Config::default().nodelay(true));
36 let noise = noise::Config::new(keypair)?;
37 let yamux = yamux::Config::default();
38
39 let transport = tcp
40 .upgrade(Version::V1)
41 .authenticate(noise)
42 .multiplex(yamux)
43 .boxed();
44
45 Ok(transport)
46}