diff options
author | Iván Ávalos <avalos@disroot.org> | 2023-02-03 23:19:23 -0600 |
---|---|---|
committer | Iván Ávalos <avalos@disroot.org> | 2023-02-03 23:19:23 -0600 |
commit | 070ddba80f117a6b142a19b354663dab02159e03 (patch) | |
tree | a3e2b7a74807d9c20456e669995f5e5d915e59b1 /QuickJS-android | |
parent | aef4e84d3fbe27e3f479f5a8b3268df934ff944f (diff) | |
download | quickjs-tart-070ddba80f117a6b142a19b354663dab02159e03.tar.gz quickjs-tart-070ddba80f117a6b142a19b354663dab02159e03.tar.bz2 quickjs-tart-070ddba80f117a6b142a19b354663dab02159e03.zip |
TalerWalletCore now wraps the native methods nicely
Diffstat (limited to 'QuickJS-android')
-rw-r--r-- | QuickJS-android/qtart/src/main/java/net/taler/qtart/TalerWalletCore.kt | 63 |
1 files changed, 48 insertions, 15 deletions
diff --git a/QuickJS-android/qtart/src/main/java/net/taler/qtart/TalerWalletCore.kt b/QuickJS-android/qtart/src/main/java/net/taler/qtart/TalerWalletCore.kt index 783390b..6e0c605 100644 --- a/QuickJS-android/qtart/src/main/java/net/taler/qtart/TalerWalletCore.kt +++ b/QuickJS-android/qtart/src/main/java/net/taler/qtart/TalerWalletCore.kt @@ -37,25 +37,58 @@ import com.sun.jna.Library import com.sun.jna.Native import com.sun.jna.Pointer -interface TalerWalletCore: Library { - companion object { - val INSTANCE: TalerWalletCore by lazy { - Native.load("talerwalletcore", TalerWalletCore::class.java) +class TalerWalletCore { + private interface TalerNative: Library { + companion object { + val INSTANCE: TalerNative by lazy { + Native.load("talerwalletcore", TalerNative::class.java) + } } + + interface TALER_WALLET_MessageHandlerFn: Callback { + fun invoke(handler_p: Pointer, message: String) + } + + interface TALER_LogFn: Callback { + fun invoke(cls: Pointer, stream: Int, msg: String) + } + + fun TALER_WALLET_create(): Pointer + fun TALER_WALLET_set_message_handler(twi: Pointer, handler_f: TALER_WALLET_MessageHandlerFn, handler_p: Pointer) + fun TALER_WALLET_send_request(twi: Pointer, request: String): Int + fun TALER_WALLET_run(twi: Pointer): Int + fun TALER_WALLET_join(twi: Pointer) + fun TALER_start_redirect_std(logfn: TALER_LogFn, cls: Pointer) } - interface TALER_WALLET_MessageHandlerFn: Callback { - fun invoke(handler_p: Pointer, message: String) + private val walletInstance: Pointer = TalerNative.INSTANCE.TALER_WALLET_create() + + fun setMessageHandler(handler: (msg: String) -> Unit) { + TalerNative.INSTANCE.TALER_WALLET_set_message_handler( + walletInstance, object : TalerNative.TALER_WALLET_MessageHandlerFn { + override fun invoke(handler_p: Pointer, message: String) { + handler(message) + } + }, walletInstance) } - interface TALER_LogFn: Callback { - fun invoke(cls: Pointer, stream: Int, msg: String) + fun setStdoutHandler(handler: (msg: String) -> Unit) { + TalerNative.INSTANCE.TALER_start_redirect_std(object : TalerNative.TALER_LogFn { + override fun invoke(cls: Pointer, stream: Int, msg: String) { + handler(msg) + } + }, walletInstance) } - fun TALER_WALLET_create(): Pointer - fun TALER_WALLET_set_message_handler(twi: Pointer, handler_f: TALER_WALLET_MessageHandlerFn, handler_p: Pointer) - fun TALER_WALLET_send_request(twi: Pointer, request: String): Int - fun TALER_WALLET_run(twi: Pointer): Int - fun TALER_WALLET_join(twi: Pointer) - fun TALER_start_redirect_std(logfn: TALER_LogFn, cls: Pointer) -}
\ No newline at end of file + fun sendRequest(request: String) { + TalerNative.INSTANCE.TALER_WALLET_send_request(walletInstance, request) + } + + fun run() { + TalerNative.INSTANCE.TALER_WALLET_run(walletInstance) + } + + fun join() { + TalerNative.INSTANCE.TALER_WALLET_join(walletInstance) + } +} |