use std::future::Future;
use std::time::Duration;
#[cfg(not(feature = "runtime-monoio"))]
pub fn spawn<F>(future: F) -> tokio::task::JoinHandle<F::Output>
where
F: Future + Send + 'static,
F::Output: Send + 'static,
{
tokio::spawn(future)
}
#[cfg(feature = "runtime-monoio")]
pub fn spawn<F>(future: F)
where
F: Future + 'static,
F::Output: 'static,
{
monoio::spawn(future);
}
#[cfg(not(feature = "runtime-monoio"))]
pub async fn sleep(duration: Duration) {
tokio::time::sleep(duration).await;
}
#[cfg(feature = "runtime-monoio")]
pub async fn sleep(duration: Duration) {
monoio::time::sleep(duration).await;
}
#[cfg(not(feature = "runtime-monoio"))]
pub fn interval(period: Duration) -> tokio::time::Interval {
tokio::time::interval(period)
}
pub struct RuntimeInfo {
pub name: &'static str,
pub io_uring: bool,
pub send_tasks: bool,
}
pub fn info() -> RuntimeInfo {
#[cfg(not(feature = "runtime-monoio"))]
{
RuntimeInfo {
name: "tokio",
io_uring: false,
send_tasks: true,
}
}
#[cfg(feature = "runtime-monoio")]
{
RuntimeInfo {
name: "monoio",
io_uring: cfg!(target_os = "linux"),
send_tasks: false,
}
}
}