Upgrade to event-listener v3.0.0 (#43)

Signed-off-by: John Nunley <dev@notgull.net>
This commit is contained in:
John Nunley 2023-09-10 12:57:24 -07:00 committed by GitHub
parent ac1c639e3e
commit 5e8e0b7c7b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 13 additions and 6 deletions

View File

@ -17,7 +17,7 @@ exclude = ["/.*"]
[dependencies]
async-lock = "2.6.0"
cfg-if = "1.0"
event-listener = "2.4.0"
event-listener = "3.0.0"
futures-lite = "1.11.0"
[target.'cfg(unix)'.dependencies]

View File

@ -75,7 +75,7 @@ use std::os::unix::io::{AsFd, AsRawFd, BorrowedFd, OwnedFd, RawFd};
use blocking::Unblock;
use async_lock::OnceCell;
use event_listener::Event;
use event_listener::{Event, EventListener};
use futures_lite::{future, io, prelude::*};
#[doc(no_inline)]
@ -381,14 +381,21 @@ impl Child {
let child = self.child.clone();
async move {
let mut listener = None;
let listener = EventListener::new(&SIGCHLD);
let mut listening = false;
futures_lite::pin!(listener);
loop {
if let Some(status) = child.lock().unwrap().get_mut().try_wait()? {
return Ok(status);
}
match listener.take() {
None => listener = Some(SIGCHLD.listen()),
Some(listener) => listener.await,
if listening {
listener.as_mut().await;
listening = false;
} else {
listener.as_mut().listen();
listening = true;
}
}
}