nexus/client/src/networking/plugin.rs

28 lines
1.0 KiB
Rust

use std::net::SocketAddr;
use bevy::app::{App, Plugin};
use bevy::prelude::{Commands, EventReader, ResMut};
use bytes::Bytes;
use crossbeam_channel::{Receiver, Sender};
use qp2p::{Config, Endpoint};
use tokio::runtime::Runtime;
use bevy_add_events_macro::add_events;
use crate::networking::{event, resource};
pub struct NetworkingPlugin;
impl Plugin for NetworkingPlugin {
fn build(&self, app: &mut App) {
add_events!(app, ServerConnection, ServerSocketAddr);
app.add_startup_system(setup_networking_runtime());
}
}
pub fn setup_networking_runtime(mut commands: Commands) {
commands.insert_resource(resource::NetworkingRuntime(Runtime::new().expect("networking runtime needs to be init'd to work!")));
}
pub fn connection_added(mut commands: Commands, mut socket_addr: EventReader<event::ServerSocketAddr>, mut networking_runtime: ResMut<resource::NetworkingRuntime>) {
let mut config = Config::default();
config.idle_timeout = None;
let endpoint = Endpoint::new_client(SocketAddr::from)
}