rat_engine/
lib.rs

1//! RAT Engine - 高性能 Web 框架
2//! 
3//! RAT Engine 是一个基于 Rust 的高性能 Web 框架,提供:
4//! - 高性能工作窃取调度器
5//! - 零拷贝网络 I/O
6//! - 内存池管理
7//! - 原子性能监控
8//! - 内容压缩支持
9//! - Python 集成支持
10//! - Flask 风格的 API
11
12#[macro_use]
13extern crate lazy_static;
14
15// 核心模块
16pub mod engine;
17pub mod server;
18#[cfg(any(feature = "client", feature = "http-client", feature = "grpc-client", feature = "reqwest"))]
19pub mod client;
20pub mod utils;
21pub mod error;
22pub mod error_i18n;
23#[cfg(feature = "compression")]
24pub mod compression;
25pub mod cache;
26
27// 公共模块
28pub mod common;
29
30// 在库加载时确保 CryptoProvider 只安装一次
31lazy_static! {
32    static ref _CRYPTO_PROVIDER_INIT: () = {
33        utils::crypto_provider::ensure_crypto_provider_installed();
34        // 初始化错误信息多语言支持
35        error_i18n::init_error_translations();
36    };
37}
38
39// Python API 模块(暂时禁用,等主库迁移完成后再处理)
40#[cfg(feature = "python")]
41pub mod python_api;
42
43// 导出核心类型
44pub use server::{ServerConfig, Router, WorkerPool};
45#[allow(deprecated)]
46pub use server::run_server_with_router;
47pub use engine::RatEngine;
48
49// 重新导出 hyper 常用类型,让用户无需直接引入 hyper
50pub use hyper::{Method, Response, StatusCode, Version, HeaderMap, Error};
51pub use hyper::body::{Bytes, Incoming, Frame};
52pub use hyper::http::Uri;
53pub use hyper::Request;
54pub use http_body_util::{Full, Empty, BodyExt};
55// 导出客户端相关类型
56#[cfg(feature = "client")]
57pub use client::{
58    // RatHttpClient, RatHttpClientBuilder,  // 已移除HTTP客户端,只保留gRPC客户端
59    RatGrpcClient, RatGrpcClientBuilder,
60    GrpcRequest, GrpcResponse, GrpcCompressionMode,
61    GrpcStreamResponse,
62    // RatHttpResponse, HttpMethod, HttpStatusCode, HttpHeaders, HttpRequestBuilder,  // 已移除HTTP客户端,只保留gRPC客户端
63    download_metadata::{DownloadMetadataManager, DownloadMetadata, ChunkInfo, DownloadStatus},
64    connection_pool::ClientConnectionPool,
65};
66
67// 导出独立HTTP客户端类型
68#[cfg(feature = "reqwest")]
69pub use client::independent_http_client::{
70    RatIndependentHttpClient, RatIndependentHttpClientBuilder, RatIndependentHttpResponse,
71    SseStream, SseEvent, CompressionTestResult,
72};
73// 导出统一的 GrpcStreamMessage
74pub use server::grpc_types::GrpcStreamMessage;
75pub use utils::sys_info::SystemInfo;
76pub use utils::logger::{Logger, LogLevel, LogConfig};
77pub use utils::logger::{error, warn, info, debug, trace};
78pub use error::{RatError, RatResult, CacheError};
79
80// 导出性能优化函数
81pub use server::performance::optimize_for_throughput;
82
83// 导出缓存相关类型
84#[cfg(feature = "cache")]
85pub use cache::{CacheBuilder, Cache, RatMemCache};
86
87// 导出压缩相关类型
88#[cfg(feature = "compression")]
89pub use compression::{CompressionType, CompressionConfig, Compressor};
90#[cfg(feature = "compression")]
91pub use server::compression_middleware::CompressionMiddleware;
92#[cfg(feature = "compression")]
93pub use server::compression_middleware_impl;
94
95// 重新导出智能传输相关类型
96pub use engine::smart_transfer::SmartTransferManager;
97
98// 引入构建时生成的版本信息
99include!(concat!(env!("OUT_DIR"), "/version_info.rs"));
100
101// 常量定义
102pub const VERSION: &str = env!("CARGO_PKG_VERSION");
103pub const DEFAULT_PORT: u16 = 8080;
104pub const MIN_WORKERS: usize = 1;
105pub const MAX_WORKERS: usize = 1024;
106pub const DEFAULT_TIMEOUT: u64 = 30;
107
108/// 获取版本信息
109pub fn version_info() -> &'static VersionInfo {
110    &VERSION_INFO
111}
112
113// Python 模块定义
114#[cfg(feature = "python")]
115use pyo3::prelude::*;
116
117#[cfg(feature = "python")]
118#[pymodule]
119fn rat_engine(py: Python, m: &PyModule) -> PyResult<()> {
120    // 确保 OpenSSL 已初始化(Python 模块初始化时)
121    utils::crypto_provider::ensure_crypto_provider_installed();
122    
123    // 注意:日志系统现在由用户手动初始化,不再在模块加载时自动初始化
124    
125    // 注册 Python API 模块
126    python_api::register_python_api_module(py, m)?;
127    
128    // 添加版本信息
129    m.add("__version__", VERSION)?;
130    
131    Ok(())
132}