mirror of
https://github.com/sreedevk/deduplicator.git
synced 2026-10-23 03:34:54 +00:00
reorganization
This commit is contained in:
10 files changed
+25
-18
No files matched your search
@@ -0,0 +1,55 @@
|
||||
use anyhow::Result;
|
||||
use std::collections::HashMap;
|
||||
use std::sync::mpsc::Receiver;
|
||||
use std::sync::{Arc, Mutex};
|
||||
|
||||
use super::file::FileMeta;
|
||||
use super::store::{Index, Store};
|
||||
use super::{FileQueue, Message};
|
||||
|
||||
const BATCH_SIZE: usize = 10;
|
||||
|
||||
pub struct Processor {
|
||||
files: FileQueue,
|
||||
duplicates: Arc<Store>,
|
||||
msg_rx: Receiver<Message>,
|
||||
}
|
||||
|
||||
impl Processor {
|
||||
pub fn new(files: FileQueue, duplicates: Arc<Store>, msg_rx: Receiver<Message>) -> Self {
|
||||
Self {
|
||||
files,
|
||||
duplicates,
|
||||
msg_rx,
|
||||
}
|
||||
}
|
||||
|
||||
pub fn process(&self) -> Result<()> {
|
||||
loop {
|
||||
match self.msg_rx.try_recv() {
|
||||
Ok(Message::Exit) | Err(_) => break,
|
||||
_ => {}
|
||||
}
|
||||
|
||||
let next_file = {
|
||||
let mut cfiles = self.files.lock().unwrap();
|
||||
cfiles.pop()
|
||||
};
|
||||
|
||||
match next_file {
|
||||
None => continue,
|
||||
Some(file_res) => match FileMeta::new(file_res) {
|
||||
Err(_) => continue,
|
||||
Ok(fm) => {
|
||||
// self.duplicates.add(Index::Partial(fm_arc.partial), fm_arc.clone());
|
||||
let fm_arc = Arc::new(fm);
|
||||
self.duplicates
|
||||
.add(Index::Size(fm_arc.size), fm_arc.clone());
|
||||
}
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user