Skip to content

Commit 35a77ff

Browse files
authored
m: Port to event-listener v5.0.0
cc smol-rs/event-listener#104 Signed-off-by: John Nunley <[email protected]>
1 parent d23ab0b commit 35a77ff

File tree

2 files changed

+12
-12
lines changed

2 files changed

+12
-12
lines changed

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ exclude = ["/.*"]
1717
[dependencies]
1818
async-lock = "3.0.0"
1919
cfg-if = "1.0"
20-
event-listener = "4.0.0"
20+
event-listener = "5.0.0"
2121
futures-lite = "2.0.0"
2222

2323
[target.'cfg(unix)'.dependencies]

src/lib.rs

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ use std::os::unix::io::{AsFd, AsRawFd, BorrowedFd, OwnedFd, RawFd};
7676
use blocking::Unblock;
7777

7878
use async_lock::{Mutex as AsyncMutex, OnceCell};
79-
use event_listener::{Event, EventListener};
79+
use event_listener::Event;
8080
use futures_lite::{future, io, prelude::*};
8181

8282
#[doc(no_inline)]
@@ -510,22 +510,22 @@ impl Child {
510510
let child = self.child.clone();
511511

512512
async move {
513-
let listener = EventListener::new();
514-
let mut listening = false;
515-
futures_lite::pin!(listener);
516-
517513
loop {
514+
// Wait on the child process.
518515
if let Some(status) = child.lock().unwrap().get_mut().try_wait()? {
519516
return Ok(status);
520517
}
521518

522-
if listening {
523-
listener.as_mut().await;
524-
listening = false;
525-
} else {
526-
listener.as_mut().listen(&Reaper::get().sigchld);
527-
listening = true;
519+
// Start listening.
520+
event_listener::listener!(Reaper::get().sigchld => listener);
521+
522+
// Try again.
523+
if let Some(status) = child.lock().unwrap().get_mut().try_wait()? {
524+
return Ok(status);
528525
}
526+
527+
// Wait on the listener.
528+
listener.await;
529529
}
530530
}
531531
}

0 commit comments

Comments
 (0)