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 msg, IntPtr len, Pointer userData); typedef WakuCallBackDart = void Function( int callerRet, Pointer msg, int len, Pointer userData); /// waku_new typedefs typedef WakuNewC = Pointer Function(Pointer configJson, Pointer> callback, Pointer userData); typedef WakuNewDart = Pointer Function(Pointer configJson, Pointer> callback, Pointer userData); /// no params functions typedefs typedef WakuNoParamsC = Pointer Function(Pointer ctx, Pointer> callback, Pointer userData); typedef WakuNoParamsDart = Pointer Function(Pointer ctx, Pointer> callback, Pointer 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('waku_new'); final WakuNoParamsDart waku_destroy = wakuLib.lookupFunction('waku_destroy'); final WakuNoParamsDart waku_start = wakuLib.lookupFunction('waku_start'); final WakuNoParamsDart waku_stop = wakuLib.lookupFunction('waku_stop');