aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_lsp_server/src/thread_watcher.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/ra_lsp_server/src/thread_watcher.rs')
-rw-r--r--crates/ra_lsp_server/src/thread_watcher.rs19
1 files changed, 13 insertions, 6 deletions
diff --git a/crates/ra_lsp_server/src/thread_watcher.rs b/crates/ra_lsp_server/src/thread_watcher.rs
index 3257effcb..67952eb74 100644
--- a/crates/ra_lsp_server/src/thread_watcher.rs
+++ b/crates/ra_lsp_server/src/thread_watcher.rs
@@ -1,7 +1,8 @@
1use std::thread;
2use crossbeam_channel::{bounded, unbounded, Sender, Receiver};
3use drop_bomb::DropBomb;
4use crate::Result; 1use crate::Result;
2use crossbeam_channel::{bounded, unbounded, Receiver, Sender};
3use drop_bomb::DropBomb;
4
5use std::thread;
5 6
6pub struct Worker<I, O> { 7pub struct Worker<I, O> {
7 pub inp: Sender<I>, 8 pub inp: Sender<I>,
@@ -50,11 +51,13 @@ impl ThreadWatcher {
50 info!("waiting for {} to finish ...", self.name); 51 info!("waiting for {} to finish ...", self.name);
51 let name = self.name; 52 let name = self.name;
52 self.bomb.defuse(); 53 self.bomb.defuse();
53 let res = self.thread.join() 54 let res = self
55 .thread
56 .join()
54 .map_err(|_| format_err!("ThreadWatcher {} died", name)); 57 .map_err(|_| format_err!("ThreadWatcher {} died", name));
55 match &res { 58 match &res {
56 Ok(()) => info!("... {} terminated with ok", name), 59 Ok(()) => info!("... {} terminated with ok", name),
57 Err(_) => error!("... {} terminated with err", name) 60 Err(_) => error!("... {} terminated with err", name),
58 } 61 }
59 res 62 res
60 } 63 }
@@ -66,5 +69,9 @@ impl ThreadWatcher {
66fn worker_chan<I, O>(buf: usize) -> ((Sender<I>, Receiver<O>), Receiver<I>, Sender<O>) { 69fn worker_chan<I, O>(buf: usize) -> ((Sender<I>, Receiver<O>), Receiver<I>, Sender<O>) {
67 let (input_sender, input_receiver) = bounded::<I>(buf); 70 let (input_sender, input_receiver) = bounded::<I>(buf);
68 let (output_sender, output_receiver) = unbounded::<O>(); 71 let (output_sender, output_receiver) = unbounded::<O>();
69 ((input_sender, output_receiver), input_receiver, output_sender) 72 (
73 (input_sender, output_receiver),
74 input_receiver,
75 output_sender,
76 )
70} 77}