use crate::rubase::BaseEntitySingle;
use crate::rulog::ru_log;
use crate::ruweb::webrouter::with_container_mut;
use actix_web::{App, HttpServer};
#[derive(Debug, Default)]
pub struct RuApp {}
impl BaseEntitySingle for RuApp {}
impl RuApp {
pub fn new() -> Self {
Self::default()
}
#[actix_web::main]
pub async fn run(&self, port: u16) -> std::io::Result<()> {
ru_log::info2("ruwebframe server port =>", port);
HttpServer::new(move || {
App::new().configure(|cfg| with_container_mut(|container| container.apply_routes(cfg)))
})
.bind(("0.0.0.0", port))?
.workers(4)
.run()
.await
}
pub fn ctlc() {
ru_log::info("服务已启动,按 Ctrl+C 退出");
let (tx, rx) = std::sync::mpsc::channel();
ctrlc::set_handler(move || {
tx.send(()).unwrap();
})
.unwrap();
rx.recv().unwrap();
println!("正在关闭...");
}
}