mirror of
https://ghfast.top/https://github.com/StarCitizenToolBox/app.git
synced 2025-07-07 00:29:04 +08:00
update Rust
This commit is contained in:
@ -2,8 +2,8 @@ use std::sync::Arc;
|
||||
use crate::downloader::{do_cancel_download, do_start_download, DownloadCallbackData};
|
||||
use crate::frb_generated::StreamSink;
|
||||
|
||||
pub fn start_download(url: String, save_path: String, file_name: String, connection_count: u8, sink: StreamSink<DownloadCallbackData>) {
|
||||
let _ = do_start_download(url, save_path, file_name, connection_count, Arc::new(sink));
|
||||
pub async fn start_download(url: String, save_path: String, file_name: String, connection_count: u8, sink: StreamSink<DownloadCallbackData>) {
|
||||
do_start_download(url, save_path, file_name, connection_count, Arc::new(sink)).await.unwrap();
|
||||
}
|
||||
|
||||
pub async fn cancel_download(id: String) {
|
||||
|
@ -1,5 +1,4 @@
|
||||
use std::collections::HashMap;
|
||||
use std::error::Error;
|
||||
use std::num::{NonZeroU8, NonZeroUsize};
|
||||
use std::path::PathBuf;
|
||||
use std::sync::Arc;
|
||||
@ -63,8 +62,7 @@ pub async fn do_cancel_download(id: &str) {
|
||||
d.unwrap().cancel().await
|
||||
}
|
||||
|
||||
#[tokio::main]
|
||||
pub async fn do_start_download(url: String, save_path: String, file_name: String, connection_count: u8, sink: Arc<StreamSink<DownloadCallbackData>>) -> Result<(), Box<dyn Error>> {
|
||||
pub async fn do_start_download(url: String, save_path: String, file_name: String, connection_count: u8, sink: Arc<StreamSink<DownloadCallbackData>>) -> anyhow::Result<()> {
|
||||
let save_dir = PathBuf::from(save_path);
|
||||
let test_url = Url::parse(&*url)?;
|
||||
|
||||
|
@ -82,44 +82,17 @@ fn wire_start_download_impl(
|
||||
rust_vec_len_: i32,
|
||||
data_len_: i32,
|
||||
) {
|
||||
FLUTTER_RUST_BRIDGE_HANDLER.wrap_normal::<flutter_rust_bridge::for_generated::SseCodec, _, _>(
|
||||
flutter_rust_bridge::for_generated::TaskInfo {
|
||||
debug_name: "start_download",
|
||||
port: Some(port_),
|
||||
mode: flutter_rust_bridge::for_generated::FfiCallMode::Stream,
|
||||
},
|
||||
move || {
|
||||
let message = unsafe {
|
||||
flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire(
|
||||
ptr_,
|
||||
rust_vec_len_,
|
||||
data_len_,
|
||||
)
|
||||
};
|
||||
let mut deserializer =
|
||||
flutter_rust_bridge::for_generated::SseDeserializer::new(message);
|
||||
FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::<flutter_rust_bridge::for_generated::SseCodec,_,_,_>(flutter_rust_bridge::for_generated::TaskInfo{ debug_name: "start_download", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Stream }, move || {
|
||||
let message = unsafe { flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire(ptr_, rust_vec_len_, data_len_) };
|
||||
let mut deserializer = flutter_rust_bridge::for_generated::SseDeserializer::new(message);
|
||||
let api_url = <String>::sse_decode(&mut deserializer);
|
||||
let api_save_path = <String>::sse_decode(&mut deserializer);
|
||||
let api_file_name = <String>::sse_decode(&mut deserializer);
|
||||
let api_connection_count = <u8>::sse_decode(&mut deserializer);
|
||||
deserializer.end();
|
||||
move |context| {
|
||||
transform_result_sse((move || {
|
||||
Result::<_, ()>::Ok(crate::api::downloader_api::start_download(
|
||||
api_url,
|
||||
api_save_path,
|
||||
api_file_name,
|
||||
api_connection_count,
|
||||
StreamSink::new(
|
||||
context
|
||||
.rust2dart_context()
|
||||
.stream_sink::<_, crate::downloader::DownloadCallbackData>(),
|
||||
),
|
||||
))
|
||||
})())
|
||||
}
|
||||
},
|
||||
)
|
||||
let api_save_path = <String>::sse_decode(&mut deserializer);
|
||||
let api_file_name = <String>::sse_decode(&mut deserializer);
|
||||
let api_connection_count = <u8>::sse_decode(&mut deserializer);deserializer.end(); move |context| async move {
|
||||
transform_result_sse((move || async move {
|
||||
Result::<_,()>::Ok(crate::api::downloader_api::start_download(api_url, api_save_path, api_file_name, api_connection_count, StreamSink::new(context.rust2dart_context().stream_sink::<_,crate::downloader::DownloadCallbackData>())).await)
|
||||
})().await)
|
||||
} })
|
||||
}
|
||||
fn wire_fetch_impl(
|
||||
port_: flutter_rust_bridge::for_generated::MessagePort,
|
||||
|
@ -43,12 +43,12 @@ impl Iterator for SocketAddrs {
|
||||
}
|
||||
}
|
||||
|
||||
fn new_resolver() -> io::Result<TokioAsyncResolver> {
|
||||
fn new_resolver() -> anyhow::Result<TokioAsyncResolver> {
|
||||
let ali_ips: &[IpAddr] = &[
|
||||
IpAddr::V4(Ipv4Addr::new(223, 5, 5, 5)),
|
||||
IpAddr::V4(Ipv4Addr::new(223, 6, 6, 6)),
|
||||
IpAddr::V6("2400:3200::1".parse::<Ipv6Addr>().unwrap()),
|
||||
IpAddr::V6("2400:3200:baba::1".parse::<Ipv6Addr>().unwrap()),
|
||||
IpAddr::V6("2400:3200::1".parse::<Ipv6Addr>()?),
|
||||
IpAddr::V6("2400:3200:baba::1".parse::<Ipv6Addr>()?),
|
||||
];
|
||||
|
||||
let group =
|
||||
|
@ -48,7 +48,7 @@ pub async fn fetch(
|
||||
url: String,
|
||||
headers: Option<HashMap<String, String>>,
|
||||
input_data: Option<Vec<u8>>,
|
||||
) -> reqwest::Result<RustHttpResponse> {
|
||||
) -> anyhow::Result<RustHttpResponse> {
|
||||
let mut req = _mix_header(HTTP_CLIENT.request(method, url), headers);
|
||||
if input_data.is_some() {
|
||||
req = req.body(input_data.unwrap());
|
||||
|
Reference in New Issue
Block a user