Fixed multithreading :)
This commit is contained in:
parent
2e8e9cd177
commit
cae166bc93
1 changed files with 18 additions and 34 deletions
52
src/main.rs
52
src/main.rs
|
@ -1,5 +1,5 @@
|
||||||
mod oop;
|
mod oop;
|
||||||
use std::{thread::{self, JoinHandle}, fs::copy, ops::Index, clone, borrow::Cow};
|
use std::thread::{self, JoinHandle};
|
||||||
use clap::Parser;
|
use clap::Parser;
|
||||||
use roxmltree::{self, Document};
|
use roxmltree::{self, Document};
|
||||||
|
|
||||||
|
@ -11,61 +11,45 @@ struct Args {
|
||||||
}
|
}
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
let mut arg = Args::parse();
|
let arg = Args::parse();
|
||||||
let mut objects_filenames: Vec<String> = Vec::new();
|
let mut objects_filenames: Vec<String> = Vec::new();
|
||||||
let mut messages_filenames: Vec<String> = Vec::new();
|
let mut messages_filenames: Vec<String> = Vec::new();
|
||||||
let mut docs: Vec<Document> = Vec::new();
|
let handles: Vec<thread::JoinHandle<()>> = Vec::new();
|
||||||
let mut handles: Vec<thread::JoinHandle<()>> = Vec::new();
|
let mut file_names: Vec<String> = Vec::new();
|
||||||
let mut file_name: Vec<String> = Vec::new();
|
|
||||||
|
|
||||||
let opt = roxmltree::ParsingOptions {
|
let opt = roxmltree::ParsingOptions {
|
||||||
allow_dtd: true,
|
allow_dtd: true,
|
||||||
..roxmltree::ParsingOptions::default()
|
..roxmltree::ParsingOptions::default()
|
||||||
};
|
};
|
||||||
|
|
||||||
let paths = std::fs::read_dir(arg.dir).expect("No directory found.");
|
let paths = std::fs::read_dir(arg.dir.clone()).expect("No directory found.");
|
||||||
let mut temp:Vec<JoinHandle<Document>> = Vec::new();
|
let paths2 = std::fs::read_dir(arg.dir.clone()).expect("No directory found.");
|
||||||
for path in paths {
|
let mut temp:Vec<JoinHandle<()>> = Vec::new();
|
||||||
|
for path in paths2 {
|
||||||
match path {
|
match path {
|
||||||
Ok(real_path) => {
|
Ok(real_path) => {
|
||||||
file_name.push(real_path.path().to_string_lossy().to_string());
|
file_names.push(real_path.path().to_string_lossy().to_string());
|
||||||
},
|
},
|
||||||
Err(unreal_path) => {panic!("Bad file path.")}
|
Err(_) => {panic!("Bad file path.")}
|
||||||
};
|
};
|
||||||
objects_filenames.push(file_name.last().unwrap().trim_end_matches(".xml").to_string() + "_objects.rs");
|
objects_filenames.push(file_names.last().unwrap().trim_end_matches(".xml").to_string() + "_objects.rs");
|
||||||
messages_filenames.push(file_name.last().unwrap().trim_end_matches(".xml").to_string() + "_messages.rs");
|
messages_filenames.push(file_names.last().unwrap().trim_end_matches(".xml").to_string() + "_messages.rs");
|
||||||
temp.push(thread::spawn(move || {
|
|
||||||
let new_file_name = file_name.last().unwrap().to_owned();
|
|
||||||
roxmltree::Document::parse_with_options(new_file_name.as_str(), opt).unwrap()
|
|
||||||
}));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
for path in paths {
|
for path in paths {
|
||||||
|
|
||||||
temp.push(thread::spawn(move || {
|
temp.push(thread::spawn(move || {
|
||||||
let file_name;
|
let file_names2;
|
||||||
match path {
|
match path {
|
||||||
Ok(real_path) => {
|
Ok(real_path) => {
|
||||||
file_name = real_path.path().to_string_lossy().to_string();
|
file_names2 = real_path.path().to_string_lossy().to_string();
|
||||||
},
|
},
|
||||||
Err(unreal_path) => {panic!("Bad file path.")}
|
Err(_) => {panic!("Bad file path.")}
|
||||||
};
|
};
|
||||||
roxmltree::Document::parse_with_options(&file_name, opt).unwrap()
|
let doc = roxmltree::Document::parse_with_options(&file_names2.as_str(), opt).unwrap();
|
||||||
|
output(parse(&doc));
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
|
|
||||||
/*for arg in 0..args.files.len() {
|
|
||||||
let temp = args.files.remove(0);
|
|
||||||
objects_filenames.push(temp.trim_end_matches(".xml").to_string() + "_objects.rs");
|
|
||||||
messages_filenames.push(temp.trim_end_matches(".xml").to_string() + "_messages.rs");
|
|
||||||
docs.push(roxmltree::Document::parse_with_options(&temp, opt).unwrap());
|
|
||||||
}*/
|
|
||||||
|
|
||||||
for doc in docs {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
for handle in handles {
|
for handle in handles {
|
||||||
handle.join().unwrap();
|
handle.join().unwrap();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue