Files
hjsq_android/lib/hj_utils/local_server_guard.dart
谢宇宁andClaude Opus 5.5 2d26ea8f90 Initial commit
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-05 10:38:11 +07:00

45 lines
1.3 KiB
Dart

import 'dart:async';
import 'package:dio/dio.dart';
import '../tools_base/net/load_apk/dio_cli.dart';
import 'local_server.dart';
/// 缓存服务的守护程序,主要是一个timer定时器不断重启;
class LocalServerGuard {
final CacheServer cacheServer;
final _dio = DioCli();
bool _running = false;
bool _checking = false;
LocalServerGuard(this.cacheServer);
/// 运行localserver守护
Future run() async {
if (_running) return Future.value();
_running = true;
await cacheServer.start();
Timer.periodic(const Duration(seconds: 5), (Timer t) async {
if (_checking) {
csPrint("local_server_gard is _checking,please wait...");
return;
}
try {
_checking = true;
// csPrint("local_server_gard is called");
Uri uri = cacheServer.localServerUri;
uri = uri.replace(path: LOCAL_SERVER_PING_PATH);
var options = Options(responseType: ResponseType.bytes);
// l.i(local_server_tag, "begin ping local server");
final response = await _dio.getBytes(uri.toString(), options: options);
// l.i(local_server_tag, "end ping local server");
if ((response.data?.statusCode ?? 0) > 0) return;
await cacheServer.start();
} catch (e) {
} finally {
_checking = false;
}
});
}
}