Skip to main content

bevy_s2n_quic/
lib.rs

1pub mod async_plugin;
2pub mod client;
3pub mod common;
4pub mod server;
5
6use bevy::app::{PluginGroup, PluginGroupBuilder};
7
8use crate::{
9    async_plugin::QuicAsyncPlugin,
10    client::acceptor::SimpleClientAcceptorPlugin,
11    common::{
12        connection::plugin::ConnectionAttemptPlugin,
13        plugin::DisconnectHandlerPlugin,
14        stream::{
15            plugin::StreamAttemptPlugin,
16            session::{QuicAeronetEventPlugin, QuicAeronetPacketPlugin},
17        },
18    },
19    server::acceptor::SimpleServerAcceptorPlugin,
20};
21
22/// The default set of plugins needed to make the Bevy Quic components
23/// function and handle errors and connection attempts.
24pub struct QuicDefaultPlugins;
25
26impl PluginGroup for QuicDefaultPlugins {
27    fn build(self) -> bevy::app::PluginGroupBuilder {
28        PluginGroupBuilder::start::<Self>()
29            .add(QuicAsyncPlugin::default())
30            .add(ConnectionAttemptPlugin)
31            .add(StreamAttemptPlugin)
32            .add(SimpleServerAcceptorPlugin)
33            .add(SimpleClientAcceptorPlugin)
34            .add(DisconnectHandlerPlugin)
35    }
36}
37
38/// The plugin group for Aeronet event handling.
39pub struct QuicAeronetPlugins;
40
41impl PluginGroup for QuicAeronetPlugins {
42    fn build(self) -> bevy::app::PluginGroupBuilder {
43        PluginGroupBuilder::start::<Self>()
44            .add(QuicAeronetPacketPlugin)
45            .add(QuicAeronetEventPlugin)
46    }
47}