mirror of
https://github.com/clash-verge-rev/clash-verge-rev
synced 2025-05-05 06:23:44 +08:00
feat: make get system and auto proxy functions async, use spawn_blocking for blocking tasks
This commit is contained in:
parent
ce42ca77a9
commit
d8df283e93
@ -3,11 +3,16 @@ use crate::wrap_err;
|
|||||||
use network_interface::NetworkInterface;
|
use network_interface::NetworkInterface;
|
||||||
use serde_yaml::Mapping;
|
use serde_yaml::Mapping;
|
||||||
use sysproxy::{Autoproxy, Sysproxy};
|
use sysproxy::{Autoproxy, Sysproxy};
|
||||||
|
use tokio::task::spawn_blocking;
|
||||||
|
|
||||||
/// get the system proxy
|
/// get the system proxy
|
||||||
#[tauri::command]
|
#[tauri::command]
|
||||||
pub fn get_sys_proxy() -> CmdResult<Mapping> {
|
pub async fn get_sys_proxy() -> CmdResult<Mapping> {
|
||||||
let current = wrap_err!(Sysproxy::get_system_proxy())?;
|
let current = spawn_blocking(move || Sysproxy::get_system_proxy())
|
||||||
|
.await
|
||||||
|
.map_err(|e| format!("Failed to spawn blocking task for sysproxy: {}", e))?
|
||||||
|
.map_err(|e| format!("Failed to get system proxy: {}", e))?;
|
||||||
|
|
||||||
let mut map = Mapping::new();
|
let mut map = Mapping::new();
|
||||||
map.insert("enable".into(), current.enable.into());
|
map.insert("enable".into(), current.enable.into());
|
||||||
map.insert(
|
map.insert(
|
||||||
@ -21,8 +26,11 @@ pub fn get_sys_proxy() -> CmdResult<Mapping> {
|
|||||||
|
|
||||||
/// get the system proxy
|
/// get the system proxy
|
||||||
#[tauri::command]
|
#[tauri::command]
|
||||||
pub fn get_auto_proxy() -> CmdResult<Mapping> {
|
pub async fn get_auto_proxy() -> CmdResult<Mapping> {
|
||||||
let current = wrap_err!(Autoproxy::get_auto_proxy())?;
|
let current = spawn_blocking(move || Autoproxy::get_auto_proxy())
|
||||||
|
.await
|
||||||
|
.map_err(|e| format!("Failed to spawn blocking task for autoproxy: {}", e))?
|
||||||
|
.map_err(|e| format!("Failed to get auto proxy: {}", e))?;
|
||||||
|
|
||||||
let mut map = Mapping::new();
|
let mut map = Mapping::new();
|
||||||
map.insert("enable".into(), current.enable.into());
|
map.insert("enable".into(), current.enable.into());
|
||||||
|
@ -29,12 +29,12 @@ impl MihomoManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn update_proxies(&self, proxies: serde_json::Value) {
|
fn update_proxies(&self, proxies: serde_json::Value) {
|
||||||
let mut data = self.data.lock().unwrap();
|
let mut data = self.data.lock().expect("Mutex poisoned");
|
||||||
data.proxies = proxies;
|
data.proxies = proxies;
|
||||||
}
|
}
|
||||||
|
|
||||||
fn update_providers_proxies(&self, providers_proxies: serde_json::Value) {
|
fn update_providers_proxies(&self, providers_proxies: serde_json::Value) {
|
||||||
let mut data = self.data.lock().unwrap();
|
let mut data = self.data.lock().expect("Mutex poisoned");
|
||||||
data.providers_proxies = providers_proxies;
|
data.providers_proxies = providers_proxies;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -43,12 +43,12 @@ impl MihomoManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub fn get_proxies(&self) -> serde_json::Value {
|
pub fn get_proxies(&self) -> serde_json::Value {
|
||||||
let data = self.data.lock().unwrap();
|
let data = self.data.lock().expect("Mutex poisoned");
|
||||||
data.proxies.clone()
|
data.proxies.clone()
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn get_providers_proxies(&self) -> serde_json::Value {
|
pub fn get_providers_proxies(&self) -> serde_json::Value {
|
||||||
let data = self.data.lock().unwrap();
|
let data = self.data.lock().expect("Mutex poisoned");
|
||||||
data.providers_proxies.clone()
|
data.providers_proxies.clone()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user