restoreStartupProxyState static method
Future<void>
restoreStartupProxyState({
- required Future<
WindowsServiceStatus> queryStatus(), - required Future<
void> restoreViaHttp(),
启动期代理状态恢复的决策与执行(init 用)。
仅当服务 SCM 状态为 running 才经 helper HTTP /status 恢复 UI 代理状态
(覆盖「上次退出时代理还在跑」的场景);stopped 时 helper 进程不存在、
HTTP 必然连接拒绝,且代理状态初始即 ProxyState.stopped,无需探测。
notInstalled/unknown/error 同样跳过——恢复是 best-effort,探测不可信时
交由后续真实操作反馈。
HTTP 恢复失败(如 SCM running 但端口瞬态不可达)只记日志不上抛: 连接拒绝为立即失败(不占超时窗口),不值得以 Unhandled Exception 打扰启动链。
拆为静态注入式函数(queryStatus/restoreViaHttp 为注入的异步输入),
公共调用点 init 组装真实依赖——ProfileStorage 目录与 HTTP 客户端在
单测环境均不可用。
Implementation
@visibleForTesting
static Future<void> restoreStartupProxyState({
required Future<WindowsServiceStatus> Function() queryStatus,
required Future<void> Function() restoreViaHttp,
}) async {
if (await queryStatus() != WindowsServiceStatus.running) return;
try {
await restoreViaHttp();
} catch (e) {
debugPrint('启动期代理状态恢复失败(忽略): $e');
}
}