summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--cli/ops/worker_host.rs2
-rw-r--r--cli/tsc.rs2
-rw-r--r--cli/web_worker.rs8
-rw-r--r--cli/worker.rs10
4 files changed, 11 insertions, 11 deletions
diff --git a/cli/ops/worker_host.rs b/cli/ops/worker_host.rs
index 479fcceaf..d1b4bb80f 100644
--- a/cli/ops/worker_host.rs
+++ b/cli/ops/worker_host.rs
@@ -306,7 +306,7 @@ fn op_host_get_message(
};
let state_ = state.clone();
let op = async move {
- let response = match worker_handle.get_event().await {
+ let response = match worker_handle.get_event().await? {
Some(event) => {
// Terminal error means that worker should be removed from worker table.
if let WorkerEvent::TerminalError(_) = &event {
diff --git a/cli/tsc.rs b/cli/tsc.rs
index 483d84963..4d1d2368c 100644
--- a/cli/tsc.rs
+++ b/cli/tsc.rs
@@ -794,7 +794,7 @@ async fn execute_in_thread(
})?;
let handle = handle_receiver.recv().unwrap()?;
handle.post_message(req)?;
- let event = handle.get_event().await.expect("Compiler didn't respond");
+ 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),
diff --git a/cli/web_worker.rs b/cli/web_worker.rs
index 490d9a5f3..46f03da36 100644
--- a/cli/web_worker.rs
+++ b/cli/web_worker.rs
@@ -300,13 +300,13 @@ mod tests {
let r = handle.post_message(msg.clone());
assert!(r.is_ok());
- let maybe_msg = handle.get_event().await;
+ let maybe_msg = handle.get_event().await.unwrap();
assert!(maybe_msg.is_some());
let r = handle.post_message(msg.clone());
assert!(r.is_ok());
- let maybe_msg = handle.get_event().await;
+ let maybe_msg = handle.get_event().await.unwrap();
assert!(maybe_msg.is_some());
match maybe_msg {
Some(WorkerEvent::Message(buf)) => {
@@ -321,7 +321,7 @@ mod tests {
.into_boxed_bytes();
let r = handle.post_message(msg);
assert!(r.is_ok());
- let event = handle.get_event().await;
+ let event = handle.get_event().await.unwrap();
assert!(event.is_none());
handle.sender.close_channel();
});
@@ -348,7 +348,7 @@ mod tests {
let msg = json!("hi").to_string().into_boxed_str().into_boxed_bytes();
let r = handle.post_message(msg.clone());
assert!(r.is_ok());
- let event = handle.get_event().await;
+ let event = handle.get_event().await.unwrap();
assert!(event.is_none());
handle.sender.close_channel();
});
diff --git a/cli/worker.rs b/cli/worker.rs
index d52d96594..b66c1cb06 100644
--- a/cli/worker.rs
+++ b/cli/worker.rs
@@ -51,11 +51,11 @@ impl WorkerHandle {
sender.try_send(buf).map_err(ErrBox::from)
}
- // TODO: should use `try_lock` and return error if
- // more than one listener tries to get event
- pub async fn get_event(&self) -> Option<WorkerEvent> {
- let mut receiver = self.receiver.lock().await;
- receiver.next().await
+ /// Get the event with lock.
+ /// Return error if more than one listener tries to get event
+ pub async fn get_event(&self) -> Result<Option<WorkerEvent>, ErrBox> {
+ let mut receiver = self.receiver.try_lock()?;
+ Ok(receiver.next().await)
}
}