summaryrefslogtreecommitdiff
path: root/library/src/main/java/akono/AkoniJni.kt
diff options
context:
space:
mode:
authorFlorian Dold <florian.dold@gmail.com>2019-08-05 15:03:29 +0200
committerFlorian Dold <florian.dold@gmail.com>2019-08-05 15:03:29 +0200
commitda228cf9d71b747f1824e85127039e5afc7effd8 (patch)
treea19ec2f68fc377b18617d04903af729e50f5b4f2 /library/src/main/java/akono/AkoniJni.kt
parentaf62dfc6f3312c628bf851b7724c5925c1e839e9 (diff)
downloadakono-da228cf9d71b747f1824e85127039e5afc7effd8.tar.gz
akono-da228cf9d71b747f1824e85127039e5afc7effd8.tar.bz2
akono-da228cf9d71b747f1824e85127039e5afc7effd8.zip
WIP
Diffstat (limited to 'library/src/main/java/akono/AkoniJni.kt')
-rw-r--r--library/src/main/java/akono/AkoniJni.kt39
1 files changed, 39 insertions, 0 deletions
diff --git a/library/src/main/java/akono/AkoniJni.kt b/library/src/main/java/akono/AkoniJni.kt
new file mode 100644
index 00000000..2210a7ef
--- /dev/null
+++ b/library/src/main/java/akono/AkoniJni.kt
@@ -0,0 +1,39 @@
+package akono
+
+import java.nio.ByteBuffer
+
+typealias AkonoNativePointer = ByteBuffer
+
+class AkonoJni {
+ external fun stringFromJNI(): String
+
+ private external fun evalJs(source: String, p: AkonoNativePointer): String
+
+ private external fun destroyNative(b: AkonoNativePointer)
+ private external fun initNative(nodeArgv: Array<out String>): AkonoNativePointer
+
+ private external fun runNodeLoop(b: AkonoNativePointer)
+
+ private external fun postMessageToNode(message: String, b: AkonoNativePointer)
+
+ private external fun waitForMessageFromNode(b: AkonoNativePointer): String
+
+ private var internalNativePointer: AkonoNativePointer
+
+ fun evalJs(source: String): String = evalJs(source, internalNativePointer)
+
+ @Override
+ protected fun finalize() {
+ destroyNative(internalNativePointer)
+ }
+
+ constructor(vararg nodeArgv: String) {
+ internalNativePointer = initNative(nodeArgv)
+ }
+
+ companion object {
+ init {
+ System.loadLibrary("akono-jni")
+ }
+ }
+} \ No newline at end of file