refactor: remove unnecessary async/await from service and proxy functions
This commit is contained in:
@@ -3,13 +3,15 @@ use crate::{
|
|||||||
core::{service, CoreManager},
|
core::{service, CoreManager},
|
||||||
utils::i18n::t,
|
utils::i18n::t,
|
||||||
};
|
};
|
||||||
|
use anyhow::Result;
|
||||||
|
|
||||||
async fn execute_service_operation(
|
async fn execute_service_operation_sync<F, E>(service_op: F, op_type: &str) -> CmdResult
|
||||||
service_op: impl std::future::Future<Output = Result<(), impl ToString + std::fmt::Debug>>,
|
where
|
||||||
op_type: &str,
|
F: FnOnce() -> Result<(), E>,
|
||||||
) -> CmdResult {
|
E: ToString + std::fmt::Debug,
|
||||||
if service_op.await.is_err() {
|
{
|
||||||
let emsg = format!("{} {} failed", op_type, "Service");
|
if let Err(e) = service_op() {
|
||||||
|
let emsg = format!("{} {} failed: {}", op_type, "Service", e.to_string());
|
||||||
return Err(t(emsg.as_str()));
|
return Err(t(emsg.as_str()));
|
||||||
}
|
}
|
||||||
if CoreManager::global().restart_core().await.is_err() {
|
if CoreManager::global().restart_core().await.is_err() {
|
||||||
@@ -21,22 +23,22 @@ async fn execute_service_operation(
|
|||||||
|
|
||||||
#[tauri::command]
|
#[tauri::command]
|
||||||
pub async fn install_service() -> CmdResult {
|
pub async fn install_service() -> CmdResult {
|
||||||
execute_service_operation(service::install_service(), "Install").await
|
execute_service_operation_sync(service::install_service, "Install").await
|
||||||
}
|
}
|
||||||
|
|
||||||
#[tauri::command]
|
#[tauri::command]
|
||||||
pub async fn uninstall_service() -> CmdResult {
|
pub async fn uninstall_service() -> CmdResult {
|
||||||
execute_service_operation(service::uninstall_service(), "Uninstall").await
|
execute_service_operation_sync(service::uninstall_service, "Uninstall").await
|
||||||
}
|
}
|
||||||
|
|
||||||
#[tauri::command]
|
#[tauri::command]
|
||||||
pub async fn reinstall_service() -> CmdResult {
|
pub async fn reinstall_service() -> CmdResult {
|
||||||
execute_service_operation(service::reinstall_service(), "Reinstall").await
|
execute_service_operation_sync(service::reinstall_service, "Reinstall").await
|
||||||
}
|
}
|
||||||
|
|
||||||
#[tauri::command]
|
#[tauri::command]
|
||||||
pub async fn repair_service() -> CmdResult {
|
pub async fn repair_service() -> CmdResult {
|
||||||
execute_service_operation(service::force_reinstall_service(), "Repair").await
|
execute_service_operation_sync(service::force_reinstall_service, "Repair").await
|
||||||
}
|
}
|
||||||
|
|
||||||
#[tauri::command]
|
#[tauri::command]
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ mod platform {
|
|||||||
mod platform {
|
mod platform {
|
||||||
use super::CmdResult;
|
use super::CmdResult;
|
||||||
|
|
||||||
pub async fn invoke_uwp_tool() -> CmdResult {
|
pub fn invoke_uwp_tool() -> CmdResult {
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -24,5 +24,5 @@ mod platform {
|
|||||||
/// Command exposed to Tauri
|
/// Command exposed to Tauri
|
||||||
#[tauri::command]
|
#[tauri::command]
|
||||||
pub async fn invoke_uwp_tool() -> CmdResult {
|
pub async fn invoke_uwp_tool() -> CmdResult {
|
||||||
platform::invoke_uwp_tool().await
|
platform::invoke_uwp_tool()
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -96,8 +96,7 @@ impl Config {
|
|||||||
error_msg
|
error_msg
|
||||||
);
|
);
|
||||||
CoreManager::global()
|
CoreManager::global()
|
||||||
.use_default_config("config_validate::boot_error", &error_msg)
|
.use_default_config("config_validate::boot_error", &error_msg)?;
|
||||||
.await?;
|
|
||||||
Some(("config_validate::boot_error", error_msg))
|
Some(("config_validate::boot_error", error_msg))
|
||||||
} else {
|
} else {
|
||||||
logging!(info, Type::Config, true, "配置验证成功");
|
logging!(info, Type::Config, true, "配置验证成功");
|
||||||
@@ -107,16 +106,13 @@ impl Config {
|
|||||||
Err(err) => {
|
Err(err) => {
|
||||||
logging!(warn, Type::Config, true, "验证进程执行失败: {}", err);
|
logging!(warn, Type::Config, true, "验证进程执行失败: {}", err);
|
||||||
CoreManager::global()
|
CoreManager::global()
|
||||||
.use_default_config("config_validate::process_terminated", "")
|
.use_default_config("config_validate::process_terminated", "")?;
|
||||||
.await?;
|
|
||||||
Some(("config_validate::process_terminated", String::new()))
|
Some(("config_validate::process_terminated", String::new()))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
logging!(warn, Type::Config, true, "生成配置文件失败,使用默认配置");
|
logging!(warn, Type::Config, true, "生成配置文件失败,使用默认配置");
|
||||||
CoreManager::global()
|
CoreManager::global().use_default_config("config_validate::error", "")?;
|
||||||
.use_default_config("config_validate::error", "")
|
|
||||||
.await?;
|
|
||||||
Some(("config_validate::error", String::new()))
|
Some(("config_validate::error", String::new()))
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -135,7 +135,7 @@ impl CoreManager {
|
|||||||
Ok(false)
|
Ok(false)
|
||||||
}
|
}
|
||||||
/// 使用默认配置
|
/// 使用默认配置
|
||||||
pub async fn use_default_config(&self, msg_type: &str, msg_content: &str) -> Result<()> {
|
pub fn use_default_config(&self, msg_type: &str, msg_content: &str) -> Result<()> {
|
||||||
let runtime_path = dirs::app_home_dir()?.join(RUNTIME_CONFIG);
|
let runtime_path = dirs::app_home_dir()?.join(RUNTIME_CONFIG);
|
||||||
*Config::runtime().draft_mut() = Box::new(IRuntime {
|
*Config::runtime().draft_mut() = Box::new(IRuntime {
|
||||||
config: Some(Config::clash().latest_ref().0.clone()),
|
config: Some(Config::clash().latest_ref().0.clone()),
|
||||||
@@ -185,7 +185,7 @@ impl CoreManager {
|
|||||||
"检测到Merge文件,仅进行语法检查: {}",
|
"检测到Merge文件,仅进行语法检查: {}",
|
||||||
config_path
|
config_path
|
||||||
);
|
);
|
||||||
return self.validate_file_syntax(config_path).await;
|
return self.validate_file_syntax(config_path);
|
||||||
}
|
}
|
||||||
|
|
||||||
// 检查是否为脚本文件
|
// 检查是否为脚本文件
|
||||||
@@ -217,7 +217,7 @@ impl CoreManager {
|
|||||||
"检测到脚本文件,使用JavaScript验证: {}",
|
"检测到脚本文件,使用JavaScript验证: {}",
|
||||||
config_path
|
config_path
|
||||||
);
|
);
|
||||||
return self.validate_script_file(config_path).await;
|
return self.validate_script_file(config_path);
|
||||||
}
|
}
|
||||||
|
|
||||||
// 对YAML配置文件使用Clash内核验证
|
// 对YAML配置文件使用Clash内核验证
|
||||||
@@ -301,7 +301,7 @@ impl CoreManager {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
/// 只进行文件语法检查,不进行完整验证
|
/// 只进行文件语法检查,不进行完整验证
|
||||||
async fn validate_file_syntax(&self, config_path: &str) -> Result<(bool, String)> {
|
fn validate_file_syntax(&self, config_path: &str) -> Result<(bool, String)> {
|
||||||
logging!(info, Type::Config, true, "开始检查文件: {}", config_path);
|
logging!(info, Type::Config, true, "开始检查文件: {}", config_path);
|
||||||
|
|
||||||
// 读取文件内容
|
// 读取文件内容
|
||||||
@@ -329,7 +329,7 @@ impl CoreManager {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
/// 验证脚本文件语法
|
/// 验证脚本文件语法
|
||||||
async fn validate_script_file(&self, path: &str) -> Result<(bool, String)> {
|
fn validate_script_file(&self, path: &str) -> Result<(bool, String)> {
|
||||||
// 读取脚本内容
|
// 读取脚本内容
|
||||||
let content = match std::fs::read_to_string(path) {
|
let content = match std::fs::read_to_string(path) {
|
||||||
Ok(content) => content,
|
Ok(content) => content,
|
||||||
@@ -843,7 +843,7 @@ impl CoreManager {
|
|||||||
async fn attempt_service_init(&self) -> Result<()> {
|
async fn attempt_service_init(&self) -> Result<()> {
|
||||||
if service::check_service_needs_reinstall().await {
|
if service::check_service_needs_reinstall().await {
|
||||||
logging!(info, Type::Core, true, "服务版本不匹配或状态异常,执行重装");
|
logging!(info, Type::Core, true, "服务版本不匹配或状态异常,执行重装");
|
||||||
if let Err(e) = service::reinstall_service().await {
|
if let Err(e) = service::reinstall_service() {
|
||||||
logging!(
|
logging!(
|
||||||
warn,
|
warn,
|
||||||
Type::Core,
|
Type::Core,
|
||||||
@@ -960,7 +960,7 @@ impl CoreManager {
|
|||||||
true,
|
true,
|
||||||
"无服务安装记录 (首次运行或状态重置),尝试安装服务"
|
"无服务安装记录 (首次运行或状态重置),尝试安装服务"
|
||||||
);
|
);
|
||||||
match service::install_service().await {
|
match service::install_service() {
|
||||||
Ok(_) => {
|
Ok(_) => {
|
||||||
logging!(info, Type::Core, true, "服务安装成功(首次尝试)");
|
logging!(info, Type::Core, true, "服务安装成功(首次尝试)");
|
||||||
let mut new_state = service::ServiceState::default();
|
let mut new_state = service::ServiceState::default();
|
||||||
@@ -1065,7 +1065,7 @@ impl CoreManager {
|
|||||||
pub async fn start_core(&self) -> Result<()> {
|
pub async fn start_core(&self) -> Result<()> {
|
||||||
if service::is_service_available().await.is_ok() {
|
if service::is_service_available().await.is_ok() {
|
||||||
if service::check_service_needs_reinstall().await {
|
if service::check_service_needs_reinstall().await {
|
||||||
service::reinstall_service().await?;
|
service::reinstall_service()?;
|
||||||
}
|
}
|
||||||
logging!(info, Type::Core, true, "服务可用,使用服务模式启动");
|
logging!(info, Type::Core, true, "服务可用,使用服务模式启动");
|
||||||
self.start_core_by_service().await?;
|
self.start_core_by_service().await?;
|
||||||
|
|||||||
@@ -218,7 +218,7 @@ impl EventDrivenProxyManager {
|
|||||||
Self::enable_system_proxy(state).await;
|
Self::enable_system_proxy(state).await;
|
||||||
}
|
}
|
||||||
ProxyEvent::DisableProxy => {
|
ProxyEvent::DisableProxy => {
|
||||||
Self::disable_system_proxy(state).await;
|
Self::disable_system_proxy(state);
|
||||||
}
|
}
|
||||||
ProxyEvent::SwitchToPac => {
|
ProxyEvent::SwitchToPac => {
|
||||||
Self::switch_proxy_mode(state, true).await;
|
Self::switch_proxy_mode(state, true).await;
|
||||||
@@ -307,7 +307,7 @@ impl EventDrivenProxyManager {
|
|||||||
|
|
||||||
if !current.enable || current.url != expected.url {
|
if !current.enable || current.url != expected.url {
|
||||||
log::info!(target: "app", "PAC代理设置异常,正在恢复...");
|
log::info!(target: "app", "PAC代理设置异常,正在恢复...");
|
||||||
Self::restore_pac_proxy(&expected.url).await;
|
Self::restore_pac_proxy(&expected.url);
|
||||||
|
|
||||||
sleep(Duration::from_millis(500)).await;
|
sleep(Duration::from_millis(500)).await;
|
||||||
let restored = Self::get_auto_proxy_with_timeout().await;
|
let restored = Self::get_auto_proxy_with_timeout().await;
|
||||||
@@ -329,7 +329,7 @@ impl EventDrivenProxyManager {
|
|||||||
|
|
||||||
if !current.enable || current.host != expected.host || current.port != expected.port {
|
if !current.enable || current.host != expected.host || current.port != expected.port {
|
||||||
log::info!(target: "app", "系统代理设置异常,正在恢复...");
|
log::info!(target: "app", "系统代理设置异常,正在恢复...");
|
||||||
Self::restore_sys_proxy(&expected).await;
|
Self::restore_sys_proxy(&expected);
|
||||||
|
|
||||||
sleep(Duration::from_millis(500)).await;
|
sleep(Duration::from_millis(500)).await;
|
||||||
let restored = Self::get_sys_proxy_with_timeout().await;
|
let restored = Self::get_sys_proxy_with_timeout().await;
|
||||||
@@ -350,16 +350,16 @@ impl EventDrivenProxyManager {
|
|||||||
|
|
||||||
if pac_enabled {
|
if pac_enabled {
|
||||||
let expected = Self::get_expected_pac_config();
|
let expected = Self::get_expected_pac_config();
|
||||||
Self::restore_pac_proxy(&expected.url).await;
|
Self::restore_pac_proxy(&expected.url);
|
||||||
} else {
|
} else {
|
||||||
let expected = Self::get_expected_sys_proxy();
|
let expected = Self::get_expected_sys_proxy();
|
||||||
Self::restore_sys_proxy(&expected).await;
|
Self::restore_sys_proxy(&expected);
|
||||||
}
|
}
|
||||||
|
|
||||||
Self::check_and_restore_proxy(state).await;
|
Self::check_and_restore_proxy(state).await;
|
||||||
}
|
}
|
||||||
|
|
||||||
async fn disable_system_proxy(_state: &Arc<RwLock<ProxyState>>) {
|
fn disable_system_proxy(_state: &Arc<RwLock<ProxyState>>) {
|
||||||
log::info!(target: "app", "禁用系统代理");
|
log::info!(target: "app", "禁用系统代理");
|
||||||
|
|
||||||
#[cfg(not(target_os = "windows"))]
|
#[cfg(not(target_os = "windows"))]
|
||||||
@@ -380,13 +380,13 @@ impl EventDrivenProxyManager {
|
|||||||
logging_error!(Type::System, true, disabled_sys.set_system_proxy());
|
logging_error!(Type::System, true, disabled_sys.set_system_proxy());
|
||||||
|
|
||||||
let expected = Self::get_expected_pac_config();
|
let expected = Self::get_expected_pac_config();
|
||||||
Self::restore_pac_proxy(&expected.url).await;
|
Self::restore_pac_proxy(&expected.url);
|
||||||
} else {
|
} else {
|
||||||
let disabled_auto = Autoproxy::default();
|
let disabled_auto = Autoproxy::default();
|
||||||
logging_error!(Type::System, true, disabled_auto.set_auto_proxy());
|
logging_error!(Type::System, true, disabled_auto.set_auto_proxy());
|
||||||
|
|
||||||
let expected = Self::get_expected_sys_proxy();
|
let expected = Self::get_expected_sys_proxy();
|
||||||
Self::restore_sys_proxy(&expected).await;
|
Self::restore_sys_proxy(&expected);
|
||||||
}
|
}
|
||||||
|
|
||||||
Self::update_state_timestamp(state, |s| s.pac_enabled = to_pac);
|
Self::update_state_timestamp(state, |s| s.pac_enabled = to_pac);
|
||||||
@@ -506,7 +506,7 @@ impl EventDrivenProxyManager {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
async fn restore_pac_proxy(expected_url: &str) {
|
fn restore_pac_proxy(expected_url: &str) {
|
||||||
#[cfg(not(target_os = "windows"))]
|
#[cfg(not(target_os = "windows"))]
|
||||||
{
|
{
|
||||||
let new_autoproxy = Autoproxy {
|
let new_autoproxy = Autoproxy {
|
||||||
@@ -522,7 +522,7 @@ impl EventDrivenProxyManager {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
async fn restore_sys_proxy(expected: &Sysproxy) {
|
fn restore_sys_proxy(expected: &Sysproxy) {
|
||||||
#[cfg(not(target_os = "windows"))]
|
#[cfg(not(target_os = "windows"))]
|
||||||
{
|
{
|
||||||
logging_error!(Type::System, true, expected.set_system_proxy());
|
logging_error!(Type::System, true, expected.set_system_proxy());
|
||||||
|
|||||||
@@ -112,7 +112,7 @@ pub struct JsonResponse {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(target_os = "windows")]
|
#[cfg(target_os = "windows")]
|
||||||
pub async fn uninstall_service() -> Result<()> {
|
pub fn uninstall_service() -> Result<()> {
|
||||||
logging!(info, Type::Service, true, "uninstall service");
|
logging!(info, Type::Service, true, "uninstall service");
|
||||||
|
|
||||||
use deelevate::{PrivilegeLevel, Token};
|
use deelevate::{PrivilegeLevel, Token};
|
||||||
@@ -146,7 +146,7 @@ pub async fn uninstall_service() -> Result<()> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(target_os = "windows")]
|
#[cfg(target_os = "windows")]
|
||||||
pub async fn install_service() -> Result<()> {
|
pub fn install_service() -> Result<()> {
|
||||||
logging!(info, Type::Service, true, "install service");
|
logging!(info, Type::Service, true, "install service");
|
||||||
|
|
||||||
use deelevate::{PrivilegeLevel, Token};
|
use deelevate::{PrivilegeLevel, Token};
|
||||||
@@ -198,7 +198,7 @@ pub async fn reinstall_service() -> Result<()> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 先卸载服务
|
// 先卸载服务
|
||||||
if let Err(err) = uninstall_service().await {
|
if let Err(err) = uninstall_service() {
|
||||||
logging!(
|
logging!(
|
||||||
warn,
|
warn,
|
||||||
Type::Service,
|
Type::Service,
|
||||||
@@ -209,7 +209,7 @@ pub async fn reinstall_service() -> Result<()> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 再安装服务
|
// 再安装服务
|
||||||
match install_service().await {
|
match install_service() {
|
||||||
Ok(_) => {
|
Ok(_) => {
|
||||||
// 记录安装信息并保存
|
// 记录安装信息并保存
|
||||||
service_state.record_install();
|
service_state.record_install();
|
||||||
@@ -228,7 +228,7 @@ pub async fn reinstall_service() -> Result<()> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(target_os = "linux")]
|
#[cfg(target_os = "linux")]
|
||||||
pub async fn uninstall_service() -> Result<()> {
|
pub fn uninstall_service() -> Result<()> {
|
||||||
logging!(info, Type::Service, true, "uninstall service");
|
logging!(info, Type::Service, true, "uninstall service");
|
||||||
use users::get_effective_uid;
|
use users::get_effective_uid;
|
||||||
|
|
||||||
@@ -268,7 +268,7 @@ pub async fn uninstall_service() -> Result<()> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(target_os = "linux")]
|
#[cfg(target_os = "linux")]
|
||||||
pub async fn install_service() -> Result<()> {
|
pub fn install_service() -> Result<()> {
|
||||||
logging!(info, Type::Service, true, "install service");
|
logging!(info, Type::Service, true, "install service");
|
||||||
use users::get_effective_uid;
|
use users::get_effective_uid;
|
||||||
|
|
||||||
@@ -326,7 +326,7 @@ pub async fn reinstall_service() -> Result<()> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 先卸载服务
|
// 先卸载服务
|
||||||
if let Err(err) = uninstall_service().await {
|
if let Err(err) = uninstall_service() {
|
||||||
logging!(
|
logging!(
|
||||||
warn,
|
warn,
|
||||||
Type::Service,
|
Type::Service,
|
||||||
@@ -337,7 +337,7 @@ pub async fn reinstall_service() -> Result<()> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 再安装服务
|
// 再安装服务
|
||||||
match install_service().await {
|
match install_service() {
|
||||||
Ok(_) => {
|
Ok(_) => {
|
||||||
// 记录安装信息并保存
|
// 记录安装信息并保存
|
||||||
service_state.record_install();
|
service_state.record_install();
|
||||||
@@ -356,7 +356,7 @@ pub async fn reinstall_service() -> Result<()> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(target_os = "macos")]
|
#[cfg(target_os = "macos")]
|
||||||
pub async fn uninstall_service() -> Result<()> {
|
pub fn uninstall_service() -> Result<()> {
|
||||||
use crate::utils::i18n::t;
|
use crate::utils::i18n::t;
|
||||||
|
|
||||||
logging!(info, Type::Service, true, "uninstall service");
|
logging!(info, Type::Service, true, "uninstall service");
|
||||||
@@ -392,7 +392,7 @@ pub async fn uninstall_service() -> Result<()> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(target_os = "macos")]
|
#[cfg(target_os = "macos")]
|
||||||
pub async fn install_service() -> Result<()> {
|
pub fn install_service() -> Result<()> {
|
||||||
use crate::utils::i18n::t;
|
use crate::utils::i18n::t;
|
||||||
|
|
||||||
logging!(info, Type::Service, true, "install service");
|
logging!(info, Type::Service, true, "install service");
|
||||||
@@ -428,7 +428,7 @@ pub async fn install_service() -> Result<()> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(target_os = "macos")]
|
#[cfg(target_os = "macos")]
|
||||||
pub async fn reinstall_service() -> Result<()> {
|
pub fn reinstall_service() -> Result<()> {
|
||||||
logging!(info, Type::Service, true, "reinstall service");
|
logging!(info, Type::Service, true, "reinstall service");
|
||||||
|
|
||||||
// 获取当前服务状态
|
// 获取当前服务状态
|
||||||
@@ -446,7 +446,7 @@ pub async fn reinstall_service() -> Result<()> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 先卸载服务
|
// 先卸载服务
|
||||||
if let Err(err) = uninstall_service().await {
|
if let Err(err) = uninstall_service() {
|
||||||
logging!(
|
logging!(
|
||||||
warn,
|
warn,
|
||||||
Type::Service,
|
Type::Service,
|
||||||
@@ -457,7 +457,7 @@ pub async fn reinstall_service() -> Result<()> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 再安装服务
|
// 再安装服务
|
||||||
match install_service().await {
|
match install_service() {
|
||||||
Ok(_) => {
|
Ok(_) => {
|
||||||
// 记录安装信息并保存
|
// 记录安装信息并保存
|
||||||
service_state.record_install();
|
service_state.record_install();
|
||||||
@@ -862,11 +862,9 @@ pub(super) async fn run_core_by_service(config_file: &PathBuf) -> Result<()> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
log::info!(target: "app", "开始重装服务");
|
log::info!(target: "app", "开始重装服务");
|
||||||
if let Err(err) = reinstall_service().await {
|
if let Err(err) = reinstall_service() {
|
||||||
log::warn!(target: "app", "服务重装失败: {err}");
|
log::warn!(target: "app", "服务重装失败: {err}");
|
||||||
|
bail!("Failed to reinstall service: {}", err);
|
||||||
log::info!(target: "app", "尝试使用现有服务");
|
|
||||||
return start_with_existing_service(config_file).await;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
log::info!(target: "app", "服务重装成功,尝试启动");
|
log::info!(target: "app", "服务重装成功,尝试启动");
|
||||||
@@ -890,7 +888,7 @@ pub(super) async fn run_core_by_service(config_file: &PathBuf) -> Result<()> {
|
|||||||
if check_service_needs_reinstall().await {
|
if check_service_needs_reinstall().await {
|
||||||
log::info!(target: "app", "服务需要重装");
|
log::info!(target: "app", "服务需要重装");
|
||||||
|
|
||||||
if let Err(err) = reinstall_service().await {
|
if let Err(err) = reinstall_service() {
|
||||||
log::warn!(target: "app", "服务重装失败: {err}");
|
log::warn!(target: "app", "服务重装失败: {err}");
|
||||||
bail!("Failed to reinstall service: {}", err);
|
bail!("Failed to reinstall service: {}", err);
|
||||||
}
|
}
|
||||||
@@ -970,7 +968,7 @@ pub async fn is_service_available() -> Result<()> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// 强制重装服务(UI修复按钮)
|
/// 强制重装服务(UI修复按钮)
|
||||||
pub async fn force_reinstall_service() -> Result<()> {
|
pub fn force_reinstall_service() -> Result<()> {
|
||||||
log::info!(target: "app", "用户请求强制重装服务");
|
log::info!(target: "app", "用户请求强制重装服务");
|
||||||
|
|
||||||
let service_state = ServiceState::default();
|
let service_state = ServiceState::default();
|
||||||
@@ -978,7 +976,7 @@ pub async fn force_reinstall_service() -> Result<()> {
|
|||||||
|
|
||||||
log::info!(target: "app", "已重置服务状态,开始执行重装");
|
log::info!(target: "app", "已重置服务状态,开始执行重装");
|
||||||
|
|
||||||
match reinstall_service().await {
|
match reinstall_service() {
|
||||||
Ok(()) => {
|
Ok(()) => {
|
||||||
log::info!(target: "app", "服务重装成功");
|
log::info!(target: "app", "服务重装成功");
|
||||||
Ok(())
|
Ok(())
|
||||||
|
|||||||
@@ -157,7 +157,7 @@ impl LogsMonitor {
|
|||||||
let task = tokio::spawn(async move {
|
let task = tokio::spawn(async move {
|
||||||
loop {
|
loop {
|
||||||
// Get fresh IPC path and client for each connection attempt
|
// Get fresh IPC path and client for each connection attempt
|
||||||
let (_ipc_path_buf, client) = match Self::create_ipc_client().await {
|
let (_ipc_path_buf, client) = match Self::create_ipc_client() {
|
||||||
Ok((path, client)) => (path, client),
|
Ok((path, client)) => (path, client),
|
||||||
Err(e) => {
|
Err(e) => {
|
||||||
logging!(error, Type::Ipc, true, "Failed to create IPC client: {}", e);
|
logging!(error, Type::Ipc, true, "Failed to create IPC client: {}", e);
|
||||||
@@ -230,7 +230,7 @@ impl LogsMonitor {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
async fn create_ipc_client() -> Result<
|
fn create_ipc_client() -> Result<
|
||||||
(std::path::PathBuf, kode_bridge::IpcStreamClient),
|
(std::path::PathBuf, kode_bridge::IpcStreamClient),
|
||||||
Box<dyn std::error::Error + Send + Sync>,
|
Box<dyn std::error::Error + Send + Sync>,
|
||||||
> {
|
> {
|
||||||
|
|||||||
Reference in New Issue
Block a user