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/wasm.rs | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) (limited to 'cli/compilers/wasm.rs') 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 { 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-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) } -- cgit v1.2.3