summaryrefslogtreecommitdiff
path: root/app/src/main/java/net/taler/wallet/backend
diff options
context:
space:
mode:
authorFlorian Dold <florian.dold@gmail.com>2019-12-03 14:42:32 +0100
committerFlorian Dold <florian.dold@gmail.com>2019-12-03 14:42:32 +0100
commit80cd3c9d6d83798316a1222f3875d3a0e74ca278 (patch)
tree77bb114b1c47199d41d788c1e968c692eb07a727 /app/src/main/java/net/taler/wallet/backend
parent87c1b63c4cf2b81963735feb0bce8b8f0b004dba (diff)
downloadwallet-android-80cd3c9d6d83798316a1222f3875d3a0e74ca278.tar.gz
wallet-android-80cd3c9d6d83798316a1222f3875d3a0e74ca278.tar.bz2
wallet-android-80cd3c9d6d83798316a1222f3875d3a0e74ca278.zip
UI tweaks
Diffstat (limited to 'app/src/main/java/net/taler/wallet/backend')
-rw-r--r--app/src/main/java/net/taler/wallet/backend/WalletBackendApi.kt4
-rw-r--r--app/src/main/java/net/taler/wallet/backend/WalletBackendService.kt65
2 files changed, 36 insertions, 33 deletions
diff --git a/app/src/main/java/net/taler/wallet/backend/WalletBackendApi.kt b/app/src/main/java/net/taler/wallet/backend/WalletBackendApi.kt
index 45c719d..31e0f08 100644
--- a/app/src/main/java/net/taler/wallet/backend/WalletBackendApi.kt
+++ b/app/src/main/java/net/taler/wallet/backend/WalletBackendApi.kt
@@ -43,6 +43,8 @@ class WalletBackendApi(private val app: Application) {
when (msg.what) {
WalletBackendService.MSG_REPLY -> {
val requestID = msg.data.getInt("requestID", 0)
+ val operation = msg.data.getString("operation", "??")
+ Log.i(TAG, "got reply for operation $operation ($requestID)")
val h = api.handlers.get(requestID)
if (h == null) {
Log.e(TAG, "request ID not associated with a handler")
@@ -87,8 +89,8 @@ class WalletBackendApi(private val app: Application) {
args: JSONObject?,
onResponse: (message: JSONObject) -> Unit = { }
) {
- Log.i(TAG, "sending request for operation $operation")
val requestID = nextRequestID++
+ Log.i(TAG, "sending request for operation $operation ($requestID)")
val msg = Message.obtain(null, WalletBackendService.MSG_COMMAND)
handlers.put(requestID, onResponse)
msg.replyTo = incomingMessenger
diff --git a/app/src/main/java/net/taler/wallet/backend/WalletBackendService.kt b/app/src/main/java/net/taler/wallet/backend/WalletBackendService.kt
index 916dfdb..b72ce6b 100644
--- a/app/src/main/java/net/taler/wallet/backend/WalletBackendService.kt
+++ b/app/src/main/java/net/taler/wallet/backend/WalletBackendService.kt
@@ -14,11 +14,13 @@ import net.taler.wallet.HostCardEmulatorService
import org.json.JSONObject
import java.io.File
import java.io.InputStream
+import java.lang.Process
import java.lang.ref.WeakReference
import java.util.*
import java.util.concurrent.ConcurrentHashMap
+import kotlin.system.exitProcess
-val TAG = "taler-wallet-backend"
+private const val TAG = "taler-wallet-backend"
/**
* Module loader to handle module loading requests from the wallet-core running on node/v8.
@@ -110,17 +112,7 @@ private class AssetModuleLoader(
private class AssetDataHandler(private val assetManager: AssetManager) : AkonoJni.GetDataHandler {
override fun handleGetData(what: String): ByteArray? {
- if (what == "taler-emscripten-lib.wasm") {
- Log.i(TAG, "loading emscripten binary from taler-wallet")
- val stream =
- assetManager.open("node_modules/taler-wallet/emscripten/taler-emscripten-lib.wasm")
- val bytes: ByteArray = stream.readBytes()
- Log.i(TAG, "size of emscripten binary: ${bytes.size}")
- return bytes
- } else {
- Log.w(TAG, "data '$what' requested by akono not found")
- return null
- }
+ return null
}
}
@@ -144,6 +136,7 @@ class WalletBackendService : Service() {
private val subscribers = LinkedList<Messenger>()
override fun onCreate() {
+ Log.i(TAG, "onCreate in wallet backend service")
akono = AkonoJni()
akono.setLoadModuleHandler(AssetModuleLoader(application.assets))
akono.setGetDataHandler(AssetDataHandler(application.assets))
@@ -161,13 +154,12 @@ class WalletBackendService : Service() {
super.onCreate()
}
- fun sendInitMessage() {
+ private fun sendInitMessage() {
val msg = JSONObject()
msg.put("operation", "init")
val args = JSONObject()
msg.put("args", args)
args.put("persistentStoragePath", "${application.filesDir}/talerwalletdb.json")
-
akono.sendMessage(msg.toString())
}
@@ -242,30 +234,34 @@ class WalletBackendService : Service() {
return messenger.binder
}
+ private fun sendNotify() {
+ var rm: LinkedList<Messenger>? = null
+ for (s in subscribers) {
+ val m = Message.obtain(null, MSG_NOTIFY)
+ try {
+ s.send(m)
+ } catch (e: RemoteException) {
+ if (rm == null) {
+ rm = LinkedList<Messenger>()
+ }
+ rm.add(s)
+ subscribers.remove(s)
+ }
+ }
+ if (rm != null) {
+ for (s in rm) {
+ subscribers.remove(s)
+ }
+ }
+ }
+
private fun handleAkonoMessage(messageStr: String) {
Log.v(TAG, "got back message: ${messageStr}")
val message = JSONObject(messageStr)
val type = message.getString("type")
when (type) {
"notification" -> {
- var rm: LinkedList<Messenger>? = null
- for (s in subscribers) {
- val m = Message.obtain(null, MSG_NOTIFY)
- try {
- s.send(m)
- } catch (e: RemoteException) {
- if (rm == null) {
- rm = LinkedList<Messenger>()
- }
- rm.add(s)
- subscribers.remove(s)
- }
- }
- if (rm != null) {
- for (s in rm) {
- subscribers.remove(s)
- }
- }
+ sendNotify()
}
"tunnelHttp" -> {
Log.v(TAG, "got http tunnel request!")
@@ -280,6 +276,10 @@ class WalletBackendService : Service() {
when (operation) {
"init" -> {
Log.v(TAG, "got response for init operation")
+ sendNotify()
+ }
+ "reset" -> {
+ exitProcess(1)
}
else -> {
val id = message.getInt("id")
@@ -298,6 +298,7 @@ class WalletBackendService : Service() {
b.putString("response", "{}")
}
b.putInt("requestID", rd.clientRequestID)
+ b.putString("operation", operation)
rd.messenger.send(m)
}
}