From be71885628c3820cc4e62d229326de16a6830fec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bartek=20Iwa=C5=84czuk?= Date: Fri, 10 Apr 2020 00:15:17 +0200 Subject: implement Worker.terminate() and self.close() (#4684) --- cli/compilers/ts.rs | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) (limited to 'cli/compilers/ts.rs') diff --git a/cli/compilers/ts.rs b/cli/compilers/ts.rs index 641f16bca..c78d7ef57 100644 --- a/cli/compilers/ts.rs +++ b/cli/compilers/ts.rs @@ -16,8 +16,8 @@ use crate::startup_data; use crate::state::*; use crate::tokio_util; use crate::version; +use crate::web_worker::WebWorkerHandle; use crate::worker::WorkerEvent; -use crate::worker::WorkerHandle; use deno_core::Buf; use deno_core::ErrBox; use deno_core::ModuleSpecifier; @@ -609,7 +609,7 @@ async fn execute_in_thread( req: Buf, ) -> Result { let (handle_sender, handle_receiver) = - std::sync::mpsc::sync_channel::>(1); + std::sync::mpsc::sync_channel::>(1); let builder = std::thread::Builder::new().name("deno-ts-compiler".to_string()); let join_handle = builder.spawn(move || { @@ -618,15 +618,16 @@ async fn execute_in_thread( drop(handle_sender); tokio_util::run_basic(worker).expect("Panic in event loop"); })?; - let mut handle = handle_receiver.recv().unwrap()?; - handle.post_message(req).await?; + let handle = handle_receiver.recv().unwrap()?; + handle.post_message(req)?; let event = handle.get_event().await.expect("Compiler didn't respond"); let buf = match event { WorkerEvent::Message(buf) => Ok(buf), WorkerEvent::Error(error) => Err(error), + WorkerEvent::TerminalError(error) => Err(error), }?; // Shutdown worker and wait for thread to finish - handle.sender.close_channel(); + handle.terminate(); join_handle.join().unwrap(); Ok(buf) } -- cgit v1.2.3