use crate::rulog::ru_log;
use crate::ruweb::webrouter::{find_container, with_container};
use actix_web::{App, HttpServer};
use crate::rubase::BaseEntitySingle;
use crate::ruweb::webmiddle::ru_middle::RuMiddle;
#[derive(Debug, Default)]
pub struct RuApp {}
impl BaseEntitySingle for RuApp {}
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!("正在关闭...");
}
impl RuApp {
pub fn new() -> Self {
Self::default()
}
#[actix_web::main]
pub async fn run(&self, port: u16) -> std::io::Result<()> {
find_container().lock().unwrap().list_items();
ru_log::info2("ruwebframe server port =>", port);
HttpServer::new(move || {
App::new().configure(|config| with_container(|container| container.apply_routes(config)))
.wrap(actix_web::middleware::Logger::default())
.wrap(RuMiddle)
})
.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!("正在关闭...");
}
}