From 6e64806b2f9bd77ec98296b4306c615880894a1c Mon Sep 17 00:00:00 2001 From: Nathan Reiner Date: Sat, 8 Jul 2023 16:25:49 +0200 Subject: add multithreading to merge and generate --- src/main.rs | 30 +++++++++++++++++++----------- 1 file changed, 19 insertions(+), 11 deletions(-) (limited to 'src/main.rs') diff --git a/src/main.rs b/src/main.rs index 8cb8466..9a18e7e 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,3 +1,4 @@ +#![feature(thread_id_value)] pub mod vector; pub mod dictionary; pub mod text; @@ -12,6 +13,7 @@ pub mod gui; use index::Index; use std::io::*; use std::env; +use crate::index::GenState; fn main() { let args: Vec<_> = env::args().collect(); @@ -27,8 +29,13 @@ fn main() { let input = args.get(2).unwrap(); let file = args.get(3).unwrap(); - let _ = Index::generate(input, |counter, nof| { - eprint!("\r\x1b[2K{} of {} files indexed ({}%)", counter, nof, (counter * 100) / nof); + let _ = Index::generate(input, |t, p| { + eprint!("\r\x1b[2K{}% ", p); + match t { + GenState::Fetching => { eprint!("fetched") } + GenState::Parsing => { eprint!("parsed") } + GenState::Merging => { eprint!("merged") } + }; std::io::stdout().flush().ok(); }).save(file.to_string()); } else if cmd == "-s" { @@ -48,18 +55,19 @@ fn main() { println!("{}", result.path); } } else if cmd == "-m" { - if args.len() != 5 { - eprintln!("{} -m ", args.get(0).unwrap()); + if args.len() < 5 { + eprintln!("{} -m index...", args.get(0).unwrap()); return; } - let index1 = args.get(2).unwrap().clone(); - let index2 = args.get(3).unwrap().clone(); - let merged = args.get(4).unwrap().clone(); - let _ = Index::merge( - Index::from_file(index1), - Index::from_file(index2) - ).save(merged); + let merged = args.get(2).unwrap().clone(); + let v : Vec = args.get(3..(args.len())).unwrap().into(); + let indexes = v.iter().map(|s| Index::from_file(s.clone())).collect(); + let _ = Index::merge(indexes, + |p| { + eprint!("\r\x1b[2K{}% merged", p); + } + ).save(merged); } } else { let _ = gui::run(); -- cgit v1.2.3-70-g09d2