diff --git a/src-tauri/src/downloads/game_download.rs b/src-tauri/src/downloads/game_download.rs index 94c03ea..22d54f8 100644 --- a/src-tauri/src/downloads/game_download.rs +++ b/src-tauri/src/downloads/game_download.rs @@ -1,15 +1,20 @@ use std::sync::Arc; use std::sync::atomic::AtomicUsize; +use serde::{Deserialize, Serialize}; use versions::Version; use crate::downloads::progress::ProgressChecker; +#[derive(Serialize, Deserialize, Clone)] +#[serde(rename_all="camelCase")] pub struct GameDownload { id: String, version: Version, progress: Arc } +#[derive(Serialize, Deserialize)] +#[serde(rename_all="camelCase")] pub struct GameChunkCtx { - + chunk_id: usize, } impl GameDownload { @@ -22,9 +27,10 @@ impl GameDownload { } pub async fn download(&self, max_threads: usize, contexts: Vec) { let progress = ProgressChecker::new(Box::new(download_game_chunk), self.progress.clone()); - progress.run_contexts_sequentially_async(contexts).await; + progress.run_contexts_parallel_async(contexts, max_threads).await; } } fn download_game_chunk(ctx: GameChunkCtx) { - todo!() + todo!(); + // Need to implement actual download logic } \ No newline at end of file diff --git a/src-tauri/src/downloads/mod.rs b/src-tauri/src/downloads/mod.rs index ecf9742..44fba89 100644 --- a/src-tauri/src/downloads/mod.rs +++ b/src-tauri/src/downloads/mod.rs @@ -1,4 +1,4 @@ mod downloads; mod manifest; pub mod progress; -mod game_download; \ No newline at end of file +pub mod game_download; \ No newline at end of file diff --git a/src-tauri/src/lib.rs b/src-tauri/src/lib.rs index 4291c3f..1277d5f 100644 --- a/src-tauri/src/lib.rs +++ b/src-tauri/src/lib.rs @@ -21,6 +21,7 @@ use std::{ }; use tauri_plugin_deep_link::DeepLinkExt; use crate::db::DatabaseImpls; +use crate::downloads::game_download::GameDownload; #[derive(Clone, Copy, Serialize)] pub enum AppStatus { @@ -45,6 +46,7 @@ pub struct AppState { status: AppStatus, user: Option, games: HashMap, + game_downloads: Vec } #[tauri::command] @@ -64,6 +66,7 @@ fn setup() -> AppState { status: AppStatus::NotConfigured, user: None, games: HashMap::new(), + game_downloads: vec![], }; } @@ -72,6 +75,7 @@ fn setup() -> AppState { status: auth_result.0, user: auth_result.1, games: HashMap::new(), + game_downloads: vec![], } }