1#[macro_use]
13extern crate lazy_static;
14
15pub 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
27pub mod common;
29
30lazy_static! {
32 static ref _CRYPTO_PROVIDER_INIT: () = {
33 utils::crypto_provider::ensure_crypto_provider_installed();
34 error_i18n::init_error_translations();
36 };
37}
38
39#[cfg(feature = "python")]
41pub mod python_api;
42
43pub use server::{ServerConfig, Router, WorkerPool};
45#[allow(deprecated)]
46pub use server::run_server_with_router;
47pub use engine::RatEngine;
48
49pub 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#[cfg(feature = "client")]
57pub use client::{
58 RatGrpcClient, RatGrpcClientBuilder,
60 GrpcRequest, GrpcResponse, GrpcCompressionMode,
61 GrpcStreamResponse,
62 download_metadata::{DownloadMetadataManager, DownloadMetadata, ChunkInfo, DownloadStatus},
64 connection_pool::ClientConnectionPool,
65};
66
67#[cfg(feature = "reqwest")]
69pub use client::independent_http_client::{
70 RatIndependentHttpClient, RatIndependentHttpClientBuilder, RatIndependentHttpResponse,
71 SseStream, SseEvent, CompressionTestResult,
72};
73pub 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
80pub use server::performance::optimize_for_throughput;
82
83#[cfg(feature = "cache")]
85pub use cache::{CacheBuilder, Cache, RatMemCache};
86
87#[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
95pub use engine::smart_transfer::SmartTransferManager;
97
98include!(concat!(env!("OUT_DIR"), "/version_info.rs"));
100
101pub 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
108pub fn version_info() -> &'static VersionInfo {
110 &VERSION_INFO
111}
112
113#[cfg(feature = "python")]
115use pyo3::prelude::*;
116
117#[cfg(feature = "python")]
118#[pymodule]
119fn rat_engine(py: Python, m: &PyModule) -> PyResult<()> {
120 utils::crypto_provider::ensure_crypto_provider_installed();
122
123 python_api::register_python_api_module(py, m)?;
127
128 m.add("__version__", VERSION)?;
130
131 Ok(())
132}