diff options
Diffstat (limited to 'cli/compilers')
-rw-r--r-- | cli/compilers/ts.rs | 11 | ||||
-rw-r--r-- | cli/compilers/wasm.rs | 11 |
2 files changed, 12 insertions, 10 deletions
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<Buf, ErrBox> { let (handle_sender, handle_receiver) = - std::sync::mpsc::sync_channel::<Result<WorkerHandle, ErrBox>>(1); + std::sync::mpsc::sync_channel::<Result<WebWorkerHandle, ErrBox>>(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) } diff --git a/cli/compilers/wasm.rs b/cli/compilers/wasm.rs index d81138482..4e8ba78f3 100644 --- a/cli/compilers/wasm.rs +++ b/cli/compilers/wasm.rs @@ -6,8 +6,8 @@ use crate::global_state::GlobalState; use crate::startup_data; use crate::state::*; use crate::tokio_util; +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; @@ -118,7 +118,7 @@ async fn execute_in_thread( req: Buf, ) -> Result<Buf, ErrBox> { let (handle_sender, handle_receiver) = - std::sync::mpsc::sync_channel::<Result<WorkerHandle, ErrBox>>(1); + std::sync::mpsc::sync_channel::<Result<WebWorkerHandle, ErrBox>>(1); let builder = std::thread::Builder::new().name("deno-wasm-compiler".to_string()); let join_handle = builder.spawn(move || { @@ -127,15 +127,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) } |