diff options
Diffstat (limited to 'cli/worker.rs')
-rw-r--r-- | cli/worker.rs | 39 |
1 files changed, 19 insertions, 20 deletions
diff --git a/cli/worker.rs b/cli/worker.rs index d5cc801d8..1b931a85d 100644 --- a/cli/worker.rs +++ b/cli/worker.rs @@ -144,12 +144,17 @@ impl Worker { /// Post message to worker as a host. /// /// This method blocks current thread. - pub fn post_message(self: &Self, buf: Buf) -> Result<(), ErrBox> { + pub fn post_message( + self: &Self, + buf: Buf, + ) -> impl Future<Output = Result<(), ErrBox>> { let channels = self.external_channels.lock().unwrap(); let mut sender = channels.sender.clone(); - futures::executor::block_on(sender.send(buf)) - .map(|_| ()) - .map_err(ErrBox::from) + async move { + let result = sender.send(buf).map_err(ErrBox::from).await; + drop(sender); + result + } } /// Get message from worker as a host. @@ -199,6 +204,7 @@ mod tests { use crate::startup_data; use crate::state::ThreadSafeState; use crate::tokio_util; + use futures::executor::block_on; use std::sync::atomic::Ordering; #[test] @@ -391,11 +397,10 @@ mod tests { let msg = json!("hi").to_string().into_boxed_str().into_boxed_bytes(); - let r = worker_.post_message(msg); + let r = block_on(worker_.post_message(msg)); assert!(r.is_ok()); - let maybe_msg = - futures::executor::block_on(worker_.get_message()).unwrap(); + let maybe_msg = block_on(worker_.get_message()).unwrap(); assert!(maybe_msg.is_some()); // Check if message received is [1, 2, 3] in json assert_eq!(*maybe_msg.unwrap(), *b"[1,2,3]"); @@ -404,7 +409,7 @@ mod tests { .to_string() .into_boxed_str() .into_boxed_bytes(); - let r = worker_.post_message(msg); + let r = block_on(worker_.post_message(msg)); assert!(r.is_ok()); }) } @@ -434,10 +439,10 @@ mod tests { ); let msg = json!("hi").to_string().into_boxed_str().into_boxed_bytes(); - let r = worker_.post_message(msg); + let r = block_on(worker_.post_message(msg)); assert!(r.is_ok()); - futures::executor::block_on(worker_future).unwrap(); + block_on(worker_future).unwrap(); }) } @@ -448,11 +453,8 @@ mod tests { let mut worker = create_test_worker(); let module_specifier = ModuleSpecifier::resolve_url_or_path("does-not-exist").unwrap(); - let result = futures::executor::block_on(worker.execute_mod_async( - &module_specifier, - None, - false, - )); + let result = + block_on(worker.execute_mod_async(&module_specifier, None, false)); assert!(result.is_err()); }) } @@ -470,11 +472,8 @@ mod tests { .to_owned(); let module_specifier = ModuleSpecifier::resolve_url_or_path(&p.to_string_lossy()).unwrap(); - let result = futures::executor::block_on(worker.execute_mod_async( - &module_specifier, - None, - false, - )); + let result = + block_on(worker.execute_mod_async(&module_specifier, None, false)); assert!(result.is_ok()); }) } |