summaryrefslogtreecommitdiff
path: root/QuickJS-android
diff options
context:
space:
mode:
authorIván Ávalos <avalos@disroot.org>2023-02-03 23:19:23 -0600
committerIván Ávalos <avalos@disroot.org>2023-02-03 23:19:23 -0600
commit070ddba80f117a6b142a19b354663dab02159e03 (patch)
treea3e2b7a74807d9c20456e669995f5e5d915e59b1 /QuickJS-android
parentaef4e84d3fbe27e3f479f5a8b3268df934ff944f (diff)
downloadquickjs-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.kt63
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)
+ }
+}