66 lines
1.2 KiB
Rust
66 lines
1.2 KiB
Rust
use ::log::{debug, error, info, trace, warn};
|
|
use tokio::runtime::Runtime;
|
|
|
|
mod log;
|
|
mod network;
|
|
|
|
#[cxx::bridge]
|
|
mod ffi {
|
|
extern "Rust" {
|
|
fn download_file(url: &str, path: &str) -> Result<()>;
|
|
|
|
fn http_get(url: &str) -> Result<String>;
|
|
|
|
fn init_log(is_debug: bool);
|
|
|
|
fn log_trace(msg: &str);
|
|
|
|
fn log_debug(msg: &str);
|
|
|
|
fn log_info(msg: &str);
|
|
|
|
fn log_warning(msg: &str);
|
|
|
|
fn log_error(msg: &str);
|
|
}
|
|
}
|
|
|
|
fn log_error(msg: &str) {
|
|
error!("{}", msg);
|
|
}
|
|
|
|
fn log_warning(msg: &str) {
|
|
warn!("{}", msg);
|
|
}
|
|
|
|
fn log_info(msg: &str) {
|
|
info!("{}", msg);
|
|
}
|
|
|
|
fn log_debug(msg: &str) {
|
|
debug!("{}", msg);
|
|
}
|
|
|
|
fn log_trace(msg: &str) {
|
|
trace!("{}", msg);
|
|
}
|
|
|
|
fn init_log(is_debug: bool) {
|
|
log::init_log(is_debug);
|
|
}
|
|
|
|
fn get_runtime() -> Runtime {
|
|
Runtime::new().expect("创建Tokio运行时失败")
|
|
}
|
|
|
|
fn download_file(url: &str, path: &str) -> Result<(), Box<dyn std::error::Error>> {
|
|
let rt = get_runtime();
|
|
rt.block_on(network::download_file(url, path))?;
|
|
Ok(())
|
|
}
|
|
|
|
fn http_get(url: &str) -> Result<String, Box<dyn std::error::Error>> {
|
|
let rt = get_runtime();
|
|
rt.block_on(network::http_get(url))
|
|
}
|