use anyhow::*;
use ignix::*;
use std::net::ToSocketAddrs;
#[global_allocator]
static GLOBAL: mimalloc::MiMalloc = mimalloc::MiMalloc;
fn main() -> Result<()> {
env_logger::init();
let args: Vec<String> = std::env::args().collect();
let use_uring = args.iter().any(|a| a == "--backend=uring");
let addr = DEFAULT_ADDR.to_socket_addrs()?.next().unwrap();
let aof = aof::spawn_aof_writer("ignix.aof").ok();
let shard = shard::Shard::new(0, aof);
println!("ignix running on {}", addr);
#[cfg(target_os = "linux")]
if use_uring {
return net_uring::run_shard(0, addr, shard);
}
if use_uring {
eprintln!("Warning: io_uring backend is only available on Linux. Falling back to mio/epoll.");
}
net::run_shard(0, addr, shard)
}