Ivan Folgueira Bande 27de79bda4
First commit
2025-10-16 13:38:59 +02:00

52 lines
1.6 KiB
Dart

import 'dart:ffi';
import 'dart:io';
import 'package:ffi/ffi.dart';
class CallbackResult {
late int callerRet;
late String msg;
}
/// Callback typedef
typedef WakuCallBackC = Void Function(
Int32 callerRet, Pointer<Utf8> msg, IntPtr len, Pointer<Void> userData);
typedef WakuCallBackDart = void Function(
int callerRet, Pointer<Utf8> msg, int len, Pointer<Void> userData);
/// waku_new typedefs
typedef WakuNewC = Pointer<Void> Function(Pointer<Utf8> configJson,
Pointer<NativeFunction<WakuCallBackC>> callback, Pointer<Void> userData);
typedef WakuNewDart = Pointer<Void> Function(Pointer<Utf8> configJson,
Pointer<NativeFunction<WakuCallBackC>> callback, Pointer<Void> userData);
/// no params functions typedefs
typedef WakuNoParamsC = Pointer<Void> Function(Pointer<Void> ctx,
Pointer<NativeFunction<WakuCallBackC>> callback, Pointer<Void> userData);
typedef WakuNoParamsDart = Pointer<Void> Function(Pointer<Void> ctx,
Pointer<NativeFunction<WakuCallBackC>> callback, Pointer<Void> userData);
/// Load the shared library
final DynamicLibrary wakuLib = DynamicLibrary.open(
Platform.isMacOS
? 'libwaku.dylib'
: Platform.isLinux
? 'libwaku.so'
: 'waku.dll',
);
/// Lookup functions
final WakuNewDart waku_new =
wakuLib.lookupFunction<WakuNewC, WakuNewDart>('waku_new');
final WakuNoParamsDart waku_destroy =
wakuLib.lookupFunction<WakuNoParamsC, WakuNoParamsDart>('waku_destroy');
final WakuNoParamsDart waku_start =
wakuLib.lookupFunction<WakuNoParamsC, WakuNoParamsDart>('waku_start');
final WakuNoParamsDart waku_stop =
wakuLib.lookupFunction<WakuNoParamsC, WakuNoParamsDart>('waku_stop');