mangayomi-mirror/lib/ffi/torrent_server_ffi.dart
kodjomoustapha 8ccf277374 -
2024-04-17 10:45:28 +01:00

35 lines
897 B
Dart

import 'dart:async';
import 'dart:ffi';
import 'dart:io';
import 'package:ffi/ffi.dart';
import 'generated_bindings.dart';
Future<int> start(String mcfg) async {
var completer = Completer<int>();
var res = _bindings.Start(mcfg.toNativeUtf8().cast());
if (res.r1 != nullptr) {
completer.completeError(Exception(res.r1.cast<Utf8>().toDartString()));
} else {
completer.complete(res.r0);
}
return completer.future;
}
const String _libName = 'libmtorrentserver';
final DynamicLibrary _dylib = () {
if (Platform.isMacOS) {
return DynamicLibrary.open('$_libName.dylib');
}
if (Platform.isLinux) {
return DynamicLibrary.open('$_libName.so');
}
if (Platform.isWindows) {
return DynamicLibrary.open('$_libName.dll');
}
throw UnsupportedError('Unknown platform: ${Platform.operatingSystem}');
}();
final TorrentLibrary _bindings = TorrentLibrary(_dylib);