x_one/xserver/server.rs
1//! Server trait 定义
2//!
3//! 实现该 trait 即可接入框架的生命周期管理(`init → run → signal → shutdown`)。
4#![allow(async_fn_in_trait)]
5
6use crate::error::XOneError;
7
8/// 服务器 trait
9///
10/// 实现此 trait 后通过 `run_server(&server)` 运行,
11/// 框架自动处理 `init()`、信号监听和 `shutdown()`。
12///
13/// ```ignore
14/// use x_one::{Server, XOneError};
15///
16/// struct MyServer;
17///
18/// impl Server for MyServer {
19/// async fn run(&self) -> Result<(), XOneError> {
20/// // 启动监听或阻塞运行
21/// Ok(())
22/// }
23/// async fn stop(&self) -> Result<(), XOneError> {
24/// // 收到退出信号后的清理逻辑
25/// Ok(())
26/// }
27/// }
28/// ```
29pub trait Server: Send + Sync {
30 /// 启动服务(阻塞运行)
31 ///
32 /// 框架以异步方式调用此方法,同时监听 SIGINT/SIGTERM 信号。
33 /// 收到信号后框架会调用 `stop()` 通知服务退出。
34 async fn run(&self) -> Result<(), XOneError>;
35
36 /// 停止服务
37 ///
38 /// 收到退出信号时由框架调用,应在此方法中停止接收新请求、
39 /// 通知 `run()` 退出。框架会在 `stop()` 后等待 `run()` 返回。
40 async fn stop(&self) -> Result<(), XOneError>;
41}