From c4fe58d8df51e8f07142803ec0522f862fd30a3f Mon Sep 17 00:00:00 2001 From: Yiyu Lin Date: Sun, 17 May 2020 12:50:38 +0800 Subject: Return error if more than one listener calls `WorkerHandle::get_event()` (#5461) --- cli/worker.rs | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'cli/worker.rs') 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 { - 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, ErrBox> { + let mut receiver = self.receiver.try_lock()?; + Ok(receiver.next().await) } } -- cgit v1.2.3