use heim_common::prelude::{future, stream, Future, Stream, TryFutureExt};
use super::bindings;
use crate::sys::unix;
use crate::{Pid, ProcessError};
pub fn pids() -> impl Stream<Item = Result<Pid, ProcessError>> {
future::lazy(|_| {
let pids = bindings::processes()?
.into_iter()
.map(|proc| Ok(proc.kp_proc.p_pid))
.collect::<Vec<_>>();
Ok(stream::iter(pids))
})
.try_flatten_stream()
}
pub fn pid_exists(pid: Pid) -> impl Future<Output = Result<bool, ProcessError>> {
future::ok(unix::pid_exists(pid))
}