Refactor poll_oneoff and return stdin if immediately readable.

This commit is contained in:
Marcin Mielniczuk
2019-12-08 20:37:14 +01:00
parent 4695c95374
commit 98e84ae487
3 changed files with 95 additions and 66 deletions

View File

@@ -158,6 +158,7 @@ impl Error {
Self::Winx(err) => crate::sys::host_impl::errno_from_win(*err),
}
}
pub const ESUCCESS: Self = Error::Wasi(WasiError::ESUCCESS);
pub const E2BIG: Self = Error::Wasi(WasiError::E2BIG);
pub const EACCES: Self = Error::Wasi(WasiError::EACCES);
@@ -246,3 +247,18 @@ fn errno_from_ioerror(e: &std::io::Error) -> wasi::__wasi_errno_t {
}
}
}
pub(crate) type Result<T> = std::result::Result<T, Error>;
pub(crate) trait WasiErrno {
fn as_wasi_errno(&self) -> wasi::__wasi_errno_t;
}
impl<T> WasiErrno for Result<T> {
fn as_wasi_errno(&self) -> wasi::__wasi_errno_t {
self.as_ref()
.err()
.unwrap_or(&Error::ESUCCESS)
.as_wasi_errno()
}
}