summaryrefslogtreecommitdiff
path: root/cli/worker.rs
diff options
context:
space:
mode:
Diffstat (limited to 'cli/worker.rs')
-rw-r--r--cli/worker.rs39
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());
})
}