Add progress bar to decryption progress

master
trivernis 4 years ago
parent 96da5e629d
commit 1fb5300a9a

@ -208,8 +208,10 @@ fn decrypt_with_dictionary_file(
data_checksum: &Vec<u8>,
) -> Option<Vec<u8>> {
let sp = spinner("Reading dictionary...");
let f = File::open(filename).expect("Failed to open dictionary file.");
let f = File::open(&filename).expect("Failed to open dictionary file.");
let reader = BufReader::new(f);
let mut pb =
ProgressBar::new((get_line_count(&filename) as f64 / LINES_PER_CHUNK as f64).ceil() as u64);
let (rx, tx) = sync_channel::<Vec<String>>(10);
let handle = thread::spawn(move || {
let mut line_vec: Vec<String> = vec![];
@ -226,7 +228,7 @@ fn decrypt_with_dictionary_file(
if let Err(_) = rx.send(line_vec.clone()) {}
line_vec.clear();
});
sp.message("Dictionary decrypting file multithreaded".into());
sp.stop();
let mut result_data: Option<Vec<u8>> = None;
for lines in tx {
let pw_table: Vec<PassKey> = lines
@ -240,13 +242,19 @@ fn decrypt_with_dictionary_file(
(pw, key)
})
.collect();
pb.inc();
if let Some(dec_data) = decrypt_with_dictionary(&data, pw_table, &data_checksum) {
result_data = Some(dec_data);
break;
}
}
handle.join().expect("Failed to wait for thread.");
sp.stop();
pb.finish();
result_data
}
fn get_line_count(fname: &str) -> usize {
let f = File::open(fname).expect("Failed to open file to get the line count.");
let reader = BufReader::new(f);
return reader.lines().count();
}

Loading…
Cancel
Save