Files
umbrix/lib/services/singbox/singbox_service.dart

49 lines
1.3 KiB
Dart
Raw Normal View History

2023-08-19 22:27:23 +03:30
import 'dart:io';
import 'package:fpdart/fpdart.dart';
2023-09-10 20:25:04 +03:30
import 'package:hiddify/domain/connectivity/connectivity.dart';
2023-09-01 15:00:41 +03:30
import 'package:hiddify/domain/singbox/singbox.dart';
2023-08-19 22:27:23 +03:30
import 'package:hiddify/services/singbox/ffi_singbox_service.dart';
import 'package:hiddify/services/singbox/mobile_singbox_service.dart';
abstract interface class SingboxService {
factory SingboxService() {
if (Platform.isAndroid) {
return MobileSingboxService();
2023-09-10 20:25:04 +03:30
} else if (Platform.isLinux || Platform.isWindows || Platform.isMacOS) {
return FFISingboxService();
2023-08-19 22:27:23 +03:30
}
2023-09-10 20:25:04 +03:30
throw Exception("unsupported platform");
2023-08-19 22:27:23 +03:30
}
2023-09-10 20:25:04 +03:30
Future<void> init();
2023-08-19 22:27:23 +03:30
TaskEither<String, Unit> setup(
String baseDir,
String workingDir,
String tempDir,
);
TaskEither<String, Unit> parseConfig(String path);
2023-09-01 15:00:41 +03:30
TaskEither<String, Unit> changeConfigOptions(ConfigOptions options);
2023-09-10 20:25:04 +03:30
TaskEither<String, Unit> start(String configPath);
2023-08-19 22:27:23 +03:30
TaskEither<String, Unit> stop();
2023-09-10 20:25:04 +03:30
TaskEither<String, Unit> restart(String configPath);
2023-08-29 19:32:31 +03:30
Stream<String> watchOutbounds();
TaskEither<String, Unit> selectOutbound(String groupTag, String outboundTag);
TaskEither<String, Unit> urlTest(String groupTag);
2023-09-10 20:25:04 +03:30
Stream<ConnectionStatus> watchConnectionStatus();
Stream<String> watchStats();
2023-08-28 13:15:57 +03:30
2023-08-19 22:27:23 +03:30
Stream<String> watchLogs(String path);
}