Move ChangeReceiver main block into its own function

This commit is contained in:
Lucien Greathouse
2019-09-23 16:13:19 -07:00
parent 2440d9fc48
commit 5a4189a770

View File

@@ -5,7 +5,7 @@
use std::sync::{Arc, Mutex}; use std::sync::{Arc, Mutex};
use crossbeam_channel::{select, Sender}; use crossbeam_channel::{select, Receiver, Sender};
use jod_thread::JoinHandle; use jod_thread::JoinHandle;
use crate::{ use crate::{
@@ -26,16 +26,31 @@ impl ChangeProcessor {
imfs: Arc<Mutex<Imfs<F>>>, imfs: Arc<Mutex<Imfs<F>>>,
) -> Self { ) -> Self {
let (shutdown_sender, shutdown_receiver) = crossbeam_channel::bounded(1); let (shutdown_sender, shutdown_receiver) = crossbeam_channel::bounded(1);
let thread_handle = jod_thread::Builder::new()
.name("ChangeProcessor thread".to_owned())
.spawn(move || Self::main_task(shutdown_receiver, tree, message_queue, imfs))
.expect("Could not start ChangeProcessor thread");
Self {
shutdown_sender,
thread_handle,
}
}
fn main_task<F: ImfsFetcher>(
shutdown_receiver: Receiver<()>,
tree: Arc<Mutex<RojoTree>>,
message_queue: Arc<MessageQueue<AppliedPatchSet>>,
imfs: Arc<Mutex<Imfs<F>>>,
) {
log::trace!("ChangeProcessor thread started");
let imfs_receiver = { let imfs_receiver = {
let imfs = imfs.lock().unwrap(); let imfs = imfs.lock().unwrap();
imfs.change_receiver() imfs.change_receiver()
}; };
let thread_handle = jod_thread::Builder::new()
.name("ChangeProcessor thread".to_owned())
.spawn(move || {
log::trace!("ChangeProcessor thread started");
loop { loop {
select! { select! {
recv(imfs_receiver) -> event => { recv(imfs_receiver) -> event => {
@@ -67,13 +82,6 @@ impl ChangeProcessor {
} }
log::trace!("ChangeProcessor thread stopping"); log::trace!("ChangeProcessor thread stopping");
})
.expect("Could not start ChangeProcessor thread");
Self {
shutdown_sender,
thread_handle,
}
} }
} }