#![forbid(unsafe_code)]
use permit::Permit;
use safina::executor::Executor;
use servlin::{HttpServerBuilder, Response, socket_addr_127_0_0_1};
use signal_hook::consts::{SIGINT, SIGTERM};
use signal_hook::iterator::Signals;
use std::sync::Arc;
pub fn main() {
safina::timer::start_timer_thread();
let executor: Arc<Executor> = Arc::default();
let permit = Permit::new();
safina::timer::start_timer_thread();
let handler = |_req| Response::text(200, "Hello, World!");
let (_addr, _stopped_receiver) = executor
.block_on(
HttpServerBuilder::new()
.listen_addr(socket_addr_127_0_0_1(3000))
.max_conns(1000)
.small_body_len(64 * 1024)
.permit(permit.new_sub())
.spawn(handler),
)
.unwrap();
Signals::new([SIGTERM, SIGINT]).unwrap().into_iter().next();
}