Files
MWClash/lib/core/lib.dart
chen08209 a1edaba5c9 Add android separates the core process
Support core status check and force restart

Update flutter and pub dependencies
2025-08-27 19:13:43 +08:00

61 lines
1.3 KiB
Dart

import 'dart:async';
import 'package:fl_clash/common/common.dart';
import 'package:fl_clash/enum/enum.dart';
import 'package:fl_clash/models/core.dart';
import 'package:fl_clash/plugins/service.dart';
import 'interface.dart';
class CoreLib extends CoreHandlerInterface {
static CoreLib? _instance;
Completer<bool> _connectedCompleter = Completer();
CoreLib._internal();
@override
Future<bool> preload() async {
await service?.init();
_connectedCompleter.complete(true);
return true;
}
factory CoreLib() {
_instance ??= CoreLib._internal();
return _instance!;
}
@override
destroy() async {
return true;
}
@override
Future<bool> shutdown() async {
_connectedCompleter = Completer();
return true;
}
@override
Future<T?> invoke<T>({
required ActionMethod method,
dynamic data,
Duration? timeout,
}) async {
final id = '${method.name}#${utils.id}';
final result = await service
?.invokeAction(Action(id: id, method: method, data: data))
.withTimeout(onTimeout: () => null);
if (result == null) {
return null;
}
return parasResult<T>(result);
}
@override
Future get connected => _connectedCompleter.future;
}
CoreLib? get coreLib => system.isAndroid ? CoreLib() : null;