初始化
This commit is contained in:
@@ -0,0 +1,46 @@
|
||||
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) : assert(cacheServer != null);
|
||||
|
||||
/// 运行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;
|
||||
if (uri != null) {
|
||||
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;
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user