Use Sender instead of boxed closure in vfs

This commit is contained in:
mo8it 2024-08-09 23:40:32 +02:00
parent cb6b2ab5ba
commit 3b560a550a
6 changed files with 38 additions and 31 deletions

View file

@ -119,18 +119,19 @@ impl NotifyActor {
self.watched_dir_entries.clear();
self.watched_file_entries.clear();
let send = |msg| (self.sender)(msg);
send(loader::Message::Progress {
n_total,
n_done: LoadingProgress::Started,
config_version,
dir: None,
});
self.sender
.send(loader::Message::Progress {
n_total,
n_done: LoadingProgress::Started,
config_version,
dir: None,
})
.unwrap();
let (entry_tx, entry_rx) = unbounded();
let (watch_tx, watch_rx) = unbounded();
let processed = AtomicUsize::new(0);
config.load.into_par_iter().enumerate().for_each(move |(i, entry)| {
config.load.into_par_iter().enumerate().for_each(|(i, entry)| {
let do_watch = config.watch.contains(&i);
if do_watch {
_ = entry_tx.send(entry.clone());
@ -140,25 +141,31 @@ impl NotifyActor {
entry,
do_watch,
|file| {
send(loader::Message::Progress {
n_total,
n_done: LoadingProgress::Progress(
processed.load(std::sync::atomic::Ordering::Relaxed),
),
dir: Some(file),
config_version,
})
self.sender
.send(loader::Message::Progress {
n_total,
n_done: LoadingProgress::Progress(
processed
.load(std::sync::atomic::Ordering::Relaxed),
),
dir: Some(file),
config_version,
})
.unwrap()
},
);
send(loader::Message::Loaded { files });
send(loader::Message::Progress {
n_total,
n_done: LoadingProgress::Progress(
processed.fetch_add(1, std::sync::atomic::Ordering::AcqRel) + 1,
),
config_version,
dir: None,
});
self.sender.send(loader::Message::Loaded { files }).unwrap();
self.sender
.send(loader::Message::Progress {
n_total,
n_done: LoadingProgress::Progress(
processed.fetch_add(1, std::sync::atomic::Ordering::AcqRel)
+ 1,
),
config_version,
dir: None,
})
.unwrap();
});
for path in watch_rx {
self.watch(&path);
@ -317,7 +324,7 @@ impl NotifyActor {
}
fn send(&self, msg: loader::Message) {
(self.sender)(msg);
self.sender.send(msg).unwrap();
}
}