summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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)
+ }
+}