mirror of
https://github.com/GopeedLab/gopeed.git
synced 2026-11-09 18:10:29 +00:00
feat: move native communication to FFI (#1457)
This commit is contained in:
86 files changed
+4558
-886
No files matched your search
@@ -1,20 +1,9 @@
|
||||
import '../../database/database.dart';
|
||||
import '../../util/util.dart';
|
||||
|
||||
class AppInitializer {
|
||||
static Future<void>? _storageInitialization;
|
||||
static Future<void>? _databaseInitialization;
|
||||
|
||||
static Future<void> ensureStorageInitialized() {
|
||||
return _storageInitialization ??= Util.initStorageDir();
|
||||
}
|
||||
|
||||
static Future<void> ensureDatabaseInitialized() {
|
||||
return _databaseInitialization ??= _initializeDatabase();
|
||||
}
|
||||
|
||||
static Future<void> _initializeDatabase() async {
|
||||
await ensureStorageInitialized();
|
||||
await Database.instance.init();
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,8 @@
|
||||
import 'dart:async';
|
||||
|
||||
import '../common/api_server_state.dart';
|
||||
import '../common/start_config.dart';
|
||||
import '../common/task_event.dart';
|
||||
|
||||
import '../libgopeed_boot.dart';
|
||||
|
||||
@@ -13,4 +15,40 @@ class LibgopeedBootBrowser implements LibgopeedBoot {
|
||||
|
||||
@override
|
||||
Future<void> stop() async {}
|
||||
|
||||
@override
|
||||
Future<ApiServerOperationResult> getApiServerState() async => _unsupportedApiServerResult;
|
||||
|
||||
@override
|
||||
Future<ApiServerOperationResult> startApiServer() async => _unsupportedApiServerResult;
|
||||
|
||||
@override
|
||||
Future<ApiServerOperationResult> stopApiServer() async => _unsupportedApiServerResult;
|
||||
|
||||
@override
|
||||
Future<ApiServerOperationResult> restartApiServer() async => _unsupportedApiServerResult;
|
||||
|
||||
@override
|
||||
Future<String> invoke(String method, String path, {String query = '', String body = ''}) {
|
||||
throw UnsupportedError('Native Gopeed invoke is unavailable on web');
|
||||
}
|
||||
|
||||
@override
|
||||
Stream<TaskEvent> get taskEvents => const Stream.empty();
|
||||
|
||||
@override
|
||||
Future<void> subscribeTaskEvents(Set<TaskEventType> events) async {}
|
||||
}
|
||||
|
||||
const _unsupportedApiServerResult = ApiServerOperationResult(
|
||||
state: ApiServerState(
|
||||
enabled: false,
|
||||
running: false,
|
||||
network: '',
|
||||
address: '',
|
||||
runningPort: 0,
|
||||
pendingApply: false,
|
||||
lastError: '',
|
||||
),
|
||||
error: '',
|
||||
);
|
||||
@@ -6,7 +6,9 @@ import '../../util/util.dart';
|
||||
import '../common/libgopeed_channel.dart';
|
||||
import '../common/libgopeed_ffi.dart';
|
||||
import '../common/libgopeed_interface.dart';
|
||||
import '../common/api_server_state.dart';
|
||||
import '../common/start_config.dart';
|
||||
import '../common/task_event.dart';
|
||||
import '../ffi/libgopeed_bind.dart';
|
||||
import '../libgopeed_boot.dart';
|
||||
|
||||
@@ -43,6 +45,32 @@ class LibgopeedBootNative implements LibgopeedBoot {
|
||||
|
||||
@override
|
||||
Future<void> stop() async {
|
||||
await _libgopeed.subscribeTaskEvents({});
|
||||
await _libgopeed.stop();
|
||||
}
|
||||
|
||||
@override
|
||||
Future<ApiServerOperationResult> getApiServerState() => _libgopeed.getApiServerState();
|
||||
|
||||
@override
|
||||
Future<ApiServerOperationResult> startApiServer() => _libgopeed.startApiServer();
|
||||
|
||||
@override
|
||||
Future<ApiServerOperationResult> stopApiServer() => _libgopeed.stopApiServer();
|
||||
|
||||
@override
|
||||
Future<ApiServerOperationResult> restartApiServer() => _libgopeed.restartApiServer();
|
||||
|
||||
@override
|
||||
Future<String> invoke(String method, String path, {String query = '', String body = ''}) {
|
||||
return _libgopeed.invoke(method, path, query: query, body: body);
|
||||
}
|
||||
|
||||
@override
|
||||
Stream<TaskEvent> get taskEvents => _libgopeed.taskEvents;
|
||||
|
||||
@override
|
||||
Future<void> subscribeTaskEvents(Set<TaskEventType> events) {
|
||||
return _libgopeed.subscribeTaskEvents(events);
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user