summaryrefslogtreecommitdiff
path: root/library/src/main/java/akono/AkoniJni.kt
blob: 2210a7ef43384d850135e3225afa1a91eec6cd2a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
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")
        }
    }
}