diff --git a/src/client/track.rs b/src/client/track.rs index 8abf3f1..bd3471a 100644 --- a/src/client/track.rs +++ b/src/client/track.rs @@ -2,8 +2,8 @@ use bevy::{prelude::*, utils::HashSet}; use bevy_renet::renet::{DefaultChannel, RenetClient}; use crate::{ - lib_priv::SyncTrackerRes, networking::assets::SyncAssetTransfer, proto::Message, - proto::SyncAssetType, binreflect::reflect_to_bin, SyncMark, SyncUp, + binreflect::reflect_to_bin, lib_priv::SyncTrackerRes, networking::assets::SyncAssetTransfer, + proto::Message, proto::SyncAssetType, SyncMark, SyncUp, }; pub(crate) fn track_spawn_client( diff --git a/src/lib.rs b/src/lib.rs index 7144b75..9a0daa3 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -3,13 +3,13 @@ **state is in development** */ +mod binreflect; mod bundle_fix; mod client; mod lib_priv; mod logging; mod networking; mod proto; -mod binreflect; mod server; pub mod prelude { diff --git a/src/lib_priv.rs b/src/lib_priv.rs index 9b7acdf..776f4fb 100644 --- a/src/lib_priv.rs +++ b/src/lib_priv.rs @@ -10,9 +10,9 @@ use bevy::{ use bevy_renet::renet::ClientId; use crate::{ - bundle_fix::BundleFixPlugin, client::ClientSyncPlugin, proto::AssId, binreflect::bin_to_reflect, - server::ServerSyncPlugin, ClientPlugin, ServerPlugin, SyncComponent, SyncDown, SyncExclude, - SyncMark, SyncPlugin, SyncUp, + binreflect::bin_to_reflect, bundle_fix::BundleFixPlugin, client::ClientSyncPlugin, + proto::AssId, server::ServerSyncPlugin, ClientPlugin, ServerPlugin, SyncComponent, SyncDown, + SyncExclude, SyncMark, SyncPlugin, SyncUp, }; #[derive(PartialEq, Eq, Hash)] diff --git a/src/networking/assets/mod.rs b/src/networking/assets/mod.rs index 6c93915..3c4a82e 100644 --- a/src/networking/assets/mod.rs +++ b/src/networking/assets/mod.rs @@ -60,22 +60,26 @@ pub(crate) struct SyncAssetTransfer { impl SyncAssetTransfer { pub(crate) fn new(addr: IpAddr, port: u16, max_transfer: usize) -> Self { - let bind = SocketAddr::new(addr, port); + let base_url = format!("http://{}:{}", addr, port); + debug!("Starting asset server on {}", base_url); + let server = Server::http(SocketAddr::new(addr, port)).unwrap(); + let server_pool = ThreadPool::new(128); let download_pool = ThreadPool::new(127); + let meshes = Arc::new(RwLock::new(HashMap::>::new())); let meshes_to_apply = Arc::new(RwLock::new(HashMap::>::new())); - let (server_tx, server_rx) = channel::(); - let server = Server::http(bind).unwrap(); let result = Self { - base_url: format!("http://{}:{}", addr, port), + base_url, server_pool, download_pool, meshes, meshes_to_apply, max_transfer, }; + + let (server_tx, server_rx) = channel::(); result.server_pool.execute(move || { for request in server.incoming_requests() { debug!("Queuing response to {}", request.url()); @@ -117,7 +121,7 @@ impl SyncAssetTransfer { loop { match lock { Ok(mut map) => { - debug!("Received mesh {}", id); + debug!("Received mesh {} with size {}", id, len); map.insert(id, bytes); break; } @@ -158,7 +162,6 @@ impl SyncAssetTransfer { continue; }; - debug!("Responding to {}", url); let Ok(meshesmap) = meshes.read() else { request .respond(Response::from_string("").with_status_code(449)) @@ -171,6 +174,7 @@ impl SyncAssetTransfer { .unwrap_or(()); continue; }; + debug!("Responding to {} with size {}", url, mesh.len()); request .respond(Response::from_data(mesh.clone()).with_chunked_threshold(max_size)) .unwrap_or(()); diff --git a/src/server/initial_sync.rs b/src/server/initial_sync.rs index 27548df..c6a43db 100644 --- a/src/server/initial_sync.rs +++ b/src/server/initial_sync.rs @@ -1,8 +1,8 @@ use std::error::Error; use crate::{ - lib_priv::SyncTrackerRes, networking::assets::SyncAssetTransfer, proto::Message, - proto::SyncAssetType, binreflect::reflect_to_bin, SyncDown, + binreflect::reflect_to_bin, lib_priv::SyncTrackerRes, networking::assets::SyncAssetTransfer, + proto::Message, proto::SyncAssetType, SyncDown, }; use bevy::utils::Uuid; use bevy::{prelude::*, utils::HashSet}; diff --git a/src/server/track.rs b/src/server/track.rs index 357a102..05e04e9 100644 --- a/src/server/track.rs +++ b/src/server/track.rs @@ -2,11 +2,11 @@ use bevy::{prelude::*, utils::HashSet}; use bevy_renet::renet::{DefaultChannel, RenetServer}; use crate::{ + binreflect::reflect_to_bin, lib_priv::{SyncClientGeneratedEntity, SyncTrackerRes}, networking::assets::SyncAssetTransfer, proto::Message, proto::SyncAssetType, - binreflect::reflect_to_bin, SyncDown, SyncMark, };