summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFlorian Dold <florian.dold@gmail.com>2019-12-06 02:00:34 +0100
committerFlorian Dold <florian.dold@gmail.com>2019-12-06 02:00:34 +0100
commitcb3eb410fbf79cb2bb9ddb969b771259ea9acf6e (patch)
tree0fcc0e7f3703735330b9432f3df1fa2f2b33f22a
parent307baaf5eb716f8ea327374c09cb328305e29c51 (diff)
downloadakono-cb3eb410fbf79cb2bb9ddb969b771259ea9acf6e.tar.gz
akono-cb3eb410fbf79cb2bb9ddb969b771259ea9acf6e.tar.bz2
akono-cb3eb410fbf79cb2bb9ddb969b771259ea9acf6e.zip
simplifications / threading
-rw-r--r--.gitignore2
-rw-r--r--.idea/encodings.xml4
-rw-r--r--.idea/gradle.xml3
-rw-r--r--.idea/inspectionProfiles/Project_Default.xml6
-rw-r--r--.idea/vcs.xml1
-rw-r--r--akono.iml14
-rw-r--r--akono/akono-akono.iml249
-rw-r--r--akono/build.gradle.kts2
-rw-r--r--akono/src/main/cpp/akono-jni.cpp253
-rw-r--r--akono/src/main/java/akono/AkonoJni.kt58
10 files changed, 99 insertions, 493 deletions
diff --git a/.gitignore b/.gitignore
index 4c3dd889..9a06e233 100644
--- a/.gitignore
+++ b/.gitignore
@@ -14,6 +14,8 @@
/.idea/modules.xml
/.idea/workspace.xml
/.idea/tasks.xml
+/.idea/libraries/*
+/.idea/inspectionProfiles/*
/.idea/gradle.xml
/.idea/usage.statistics.xml
/.idea/caches/build_file_checksums.ser
diff --git a/.idea/encodings.xml b/.idea/encodings.xml
deleted file mode 100644
index 15a15b21..00000000
--- a/.idea/encodings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project version="4">
- <component name="Encoding" addBOMForNewFiles="with NO BOM" />
-</project> \ No newline at end of file
diff --git a/.idea/gradle.xml b/.idea/gradle.xml
index 94946c6a..2db3c7d0 100644
--- a/.idea/gradle.xml
+++ b/.idea/gradle.xml
@@ -8,10 +8,11 @@
<option name="modules">
<set>
<option value="$PROJECT_DIR$" />
- <option value="$PROJECT_DIR$/library" />
+ <option value="$PROJECT_DIR$/akono" />
</set>
</option>
<option name="resolveModulePerSourceSet" value="false" />
+ <option name="testRunner" value="PLATFORM" />
</GradleProjectSettings>
</option>
</component>
diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml
deleted file mode 100644
index 769fc1d4..00000000
--- a/.idea/inspectionProfiles/Project_Default.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<component name="InspectionProjectProfileManager">
- <profile version="1.0">
- <option name="myName" value="Project Default" />
- <inspection_tool class="JniGetMethod" enabled="false" level="WARNING" enabled_by_default="false" />
- </profile>
-</component> \ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
index 35eb1ddf..f65dd08c 100644
--- a/.idea/vcs.xml
+++ b/.idea/vcs.xml
@@ -2,5 +2,6 @@
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="" vcs="Git" />
+ <mapping directory="$PROJECT_DIR$/deps/android-node-v8" vcs="Git" />
</component>
</project> \ No newline at end of file
diff --git a/akono.iml b/akono.iml
index 88923156..a1bb1648 100644
--- a/akono.iml
+++ b/akono.iml
@@ -1,25 +1,27 @@
<?xml version="1.0" encoding="UTF-8"?>
-<module external.linked.project.id="akono" external.linked.project.path="$MODULE_DIR$/../.." external.root.project.path="$MODULE_DIR$/../.." external.system.id="GRADLE" type="JAVA_MODULE" version="4">
+<module external.linked.project.id="akono" external.linked.project.path="$MODULE_DIR$" external.root.project.path="$MODULE_DIR$" external.system.id="GRADLE" type="JAVA_MODULE" version="4">
<component name="FacetManager">
<facet type="android-gradle" name="Android-Gradle">
<configuration>
<option name="GRADLE_PROJECT_PATH" value=":" />
+ <option name="LAST_SUCCESSFUL_SYNC_AGP_VERSION" />
+ <option name="LAST_KNOWN_AGP_VERSION" />
</configuration>
</facet>
<facet type="java-gradle" name="Java-Gradle">
<configuration>
- <option name="BUILD_FOLDER_PATH" value="$MODULE_DIR$/../../build" />
+ <option name="BUILD_FOLDER_PATH" value="$MODULE_DIR$/build" />
<option name="BUILDABLE" value="false" />
</configuration>
</facet>
</component>
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_7" inherit-compiler-output="true">
<exclude-output />
- <content url="file://$MODULE_DIR$/../..">
- <excludeFolder url="file://$MODULE_DIR$/../../.gradle" />
- <excludeFolder url="file://$MODULE_DIR$/../../build" />
+ <content url="file://$MODULE_DIR$">
+ <excludeFolder url="file://$MODULE_DIR$/.gradle" />
+ <excludeFolder url="file://$MODULE_DIR$/build" />
</content>
- <orderEntry type="inheritedJdk" />
+ <orderEntry type="jdk" jdkName="JDK" jdkType="JavaSDK" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module> \ No newline at end of file
diff --git a/akono/akono-akono.iml b/akono/akono-akono.iml
index 6f731674..7719671c 100644
--- a/akono/akono-akono.iml
+++ b/akono/akono-akono.iml
@@ -1,9 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
-<module external.linked.project.id=":akono" external.linked.project.path="$MODULE_DIR$/../../../akono" external.root.project.path="$MODULE_DIR$/../../.." external.system.id="GRADLE" type="JAVA_MODULE" version="4">
+<module external.linked.project.id=":akono" external.linked.project.path="$MODULE_DIR$" external.root.project.path="$MODULE_DIR$/.." external.system.id="GRADLE" type="JAVA_MODULE" version="4">
<component name="FacetManager">
<facet type="android-gradle" name="Android-Gradle">
<configuration>
<option name="GRADLE_PROJECT_PATH" value=":akono" />
+ <option name="LAST_SUCCESSFUL_SYNC_AGP_VERSION" value="3.3.2" />
+ <option name="LAST_KNOWN_AGP_VERSION" value="3.3.2" />
</configuration>
</facet>
<facet type="native-android-gradle" name="Native-Android-Gradle">
@@ -22,17 +24,17 @@
<option name="ALLOW_USER_CONFIGURATION" value="false" />
<option name="MANIFEST_FILE_RELATIVE_PATH" value="/src/main/AndroidManifest.xml" />
<option name="RES_FOLDER_RELATIVE_PATH" value="/src/main/res" />
- <option name="RES_FOLDERS_RELATIVE_PATH" value="file://$MODULE_DIR$/../../../akono/build/generated/res/rs/debug;file://$MODULE_DIR$/../../../akono/build/generated/res/resValues/debug" />
- <option name="TEST_RES_FOLDERS_RELATIVE_PATH" value="file://$MODULE_DIR$/../../../akono/build/generated/res/rs/androidTest/debug;file://$MODULE_DIR$/../../../akono/build/generated/res/resValues/androidTest/debug" />
+ <option name="RES_FOLDERS_RELATIVE_PATH" value="file://$MODULE_DIR$/build/generated/res/rs/debug;file://$MODULE_DIR$/build/generated/res/resValues/debug" />
+ <option name="TEST_RES_FOLDERS_RELATIVE_PATH" value="" />
<option name="ASSETS_FOLDER_RELATIVE_PATH" value="/src/main/assets" />
<option name="PROJECT_TYPE" value="1" />
</configuration>
</facet>
<facet type="kotlin-language" name="Kotlin">
- <configuration version="3" platform="JVM 1.6" useProjectSettings="false">
+ <configuration version="3" platform="JVM 1.6" allPlatforms="JVM [1.6]" useProjectSettings="false">
<compilerSettings />
<compilerArguments>
- <option name="destination" value="$MODULE_DIR$/../../../akono/build/tmp/kotlin-classes/debug" />
+ <option name="destination" value="$MODULE_DIR$/build/tmp/kotlin-classes/debug" />
<option name="classpath" value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib-jdk7/1.3.21/d207ce2c9bcf17dc8e51bab4dbfdac4d013e7138/kotlin-stdlib-jdk7-1.3.21.jar:/home/dold/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib/1.3.21/4bcc2012b84840e19e1e28074284cac908be0295/kotlin-stdlib-1.3.21.jar:/home/dold/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib-common/1.3.21/f30e4a9897913e53d778f564110bafa1fef46643/kotlin-stdlib-common-1.3.21.jar:/home/dold/.gradle/caches/modules-2/files-2.1/org.jetbrains/annotations/13.0/919f0dfe192fb4e063e7dacadee7f8bb9a2672a9/annotations-13.0.jar:/home/dold/repos/akono/akono/build/intermediates/compile_only_not_namespaced_r_class_jar/debug/generateDebugRFile/R.jar:/home/dold/opt/android-sdk/platforms/android-28/android.jar:/home/dold/opt/android-sdk/platforms/android-28/optional/android.test.mock.jar:/home/dold/opt/android-sdk/platforms/android-28/optional/android.test.base.jar:/home/dold/opt/android-sdk/platforms/android-28/optional/android.test.runner.jar" />
<option name="noStdlib" value="true" />
<option name="noReflect" value="true" />
@@ -59,23 +61,23 @@
</facet>
</component>
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_7">
- <output url="file://$MODULE_DIR$/../../../akono/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes" />
- <output-test url="file://$MODULE_DIR$/../../../akono/build/intermediates/javac/debugUnitTest/compileDebugUnitTestJavaWithJavac/classes" />
+ <output url="file://$MODULE_DIR$/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes" />
+ <output-test url="file://$MODULE_DIR$/build/intermediates/javac/debugUnitTest/compileDebugUnitTestJavaWithJavac/classes" />
<exclude-output />
- <content url="file://$MODULE_DIR$/../../../akono">
- <sourceFolder url="file://$MODULE_DIR$/../../../akono/src/main/cpp" isTestSource="false" />
- <sourceFolder url="file://$MODULE_DIR$/../../../akono/build/generated/source/apt/debug" isTestSource="false" generated="true" />
+ <content url="file://$MODULE_DIR$">
+ <sourceFolder url="file://$MODULE_DIR$/src/main/cpp" isTestSource="false" />
+ <sourceFolder url="file://$MODULE_DIR$/build/generated/source/apt/debug" isTestSource="false" generated="true" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/aidl_source_output_dir/debug/compileDebugAidl/out" isTestSource="false" generated="true" />
- <sourceFolder url="file://$MODULE_DIR$/../../../akono/build/generated/source/buildConfig/debug" isTestSource="false" generated="true" />
- <sourceFolder url="file://$MODULE_DIR$/../../../akono/build/generated/renderscript_source_output_dir/debug/compileDebugRenderscript/out" isTestSource="false" generated="true" />
- <sourceFolder url="file://$MODULE_DIR$/../../../akono/build/generated/res/rs/debug" type="java-resource" />
- <sourceFolder url="file://$MODULE_DIR$/../../../akono/build/generated/res/resValues/debug" type="java-resource" />
- <sourceFolder url="file://$MODULE_DIR$/../../../akono/build/generated/source/apt/androidTest/debug" isTestSource="true" generated="true" />
+ <sourceFolder url="file://$MODULE_DIR$/build/generated/source/buildConfig/debug" isTestSource="false" generated="true" />
+ <sourceFolder url="file://$MODULE_DIR$/build/generated/renderscript_source_output_dir/debug/compileDebugRenderscript/out" isTestSource="false" generated="true" />
+ <sourceFolder url="file://$MODULE_DIR$/build/generated/res/rs/debug" type="java-resource" generated="true" />
+ <sourceFolder url="file://$MODULE_DIR$/build/generated/res/resValues/debug" type="java-resource" generated="true" />
+ <sourceFolder url="file://$MODULE_DIR$/build/generated/source/apt/androidTest/debug" isTestSource="true" generated="true" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/aidl_source_output_dir/debugAndroidTest/compileDebugAndroidTestAidl/out" isTestSource="true" generated="true" />
- <sourceFolder url="file://$MODULE_DIR$/../../../akono/build/generated/source/buildConfig/androidTest/debug" isTestSource="true" generated="true" />
- <sourceFolder url="file://$MODULE_DIR$/../../../akono/build/generated/renderscript_source_output_dir/debugAndroidTest/compileDebugAndroidTestRenderscript/out" isTestSource="true" generated="true" />
- <sourceFolder url="file://$MODULE_DIR$/../../../akono/build/generated/res/rs/androidTest/debug" type="java-test-resource" />
- <sourceFolder url="file://$MODULE_DIR$/../../../akono/build/generated/res/resValues/androidTest/debug" type="java-test-resource" />
+ <sourceFolder url="file://$MODULE_DIR$/build/generated/source/buildConfig/androidTest/debug" isTestSource="true" generated="true" />
+ <sourceFolder url="file://$MODULE_DIR$/build/generated/renderscript_source_output_dir/debugAndroidTest/compileDebugAndroidTestRenderscript/out" isTestSource="true" generated="true" />
+ <sourceFolder url="file://$MODULE_DIR$/build/generated/res/rs/androidTest/debug" type="java-test-resource" generated="true" />
+ <sourceFolder url="file://$MODULE_DIR$/build/generated/res/resValues/androidTest/debug" type="java-test-resource" generated="true" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/apt/test/debug" isTestSource="true" generated="true" />
<sourceFolder url="file://$MODULE_DIR$/src/debug/res" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/debug/resources" type="java-resource" />
@@ -85,14 +87,6 @@
<sourceFolder url="file://$MODULE_DIR$/src/debug/jni" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/debug/rs" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/debug/shaders" isTestSource="false" />
- <sourceFolder url="file://$MODULE_DIR$/src/testDebug/res" type="java-test-resource" />
- <sourceFolder url="file://$MODULE_DIR$/src/testDebug/resources" type="java-test-resource" />
- <sourceFolder url="file://$MODULE_DIR$/src/testDebug/assets" type="java-test-resource" />
- <sourceFolder url="file://$MODULE_DIR$/src/testDebug/aidl" isTestSource="true" />
- <sourceFolder url="file://$MODULE_DIR$/src/testDebug/java" isTestSource="true" />
- <sourceFolder url="file://$MODULE_DIR$/src/testDebug/jni" isTestSource="true" />
- <sourceFolder url="file://$MODULE_DIR$/src/testDebug/rs" isTestSource="true" />
- <sourceFolder url="file://$MODULE_DIR$/src/testDebug/shaders" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTestDebug/res" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTestDebug/resources" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTestDebug/assets" type="java-test-resource" />
@@ -101,11 +95,19 @@
<sourceFolder url="file://$MODULE_DIR$/src/androidTestDebug/jni" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTestDebug/rs" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTestDebug/shaders" isTestSource="true" />
+ <sourceFolder url="file://$MODULE_DIR$/src/testDebug/res" type="java-test-resource" />
+ <sourceFolder url="file://$MODULE_DIR$/src/testDebug/resources" type="java-test-resource" />
+ <sourceFolder url="file://$MODULE_DIR$/src/testDebug/assets" type="java-test-resource" />
+ <sourceFolder url="file://$MODULE_DIR$/src/testDebug/aidl" isTestSource="true" />
+ <sourceFolder url="file://$MODULE_DIR$/src/testDebug/java" isTestSource="true" />
+ <sourceFolder url="file://$MODULE_DIR$/src/testDebug/jni" isTestSource="true" />
+ <sourceFolder url="file://$MODULE_DIR$/src/testDebug/rs" isTestSource="true" />
+ <sourceFolder url="file://$MODULE_DIR$/src/testDebug/shaders" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/main/res" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/main/assets" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/main/aidl" isTestSource="false" />
- <sourceFolder url="file://$MODULE_DIR$/../../../akono/src/main/java" isTestSource="false" />
+ <sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/main/jni" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/main/rs" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/main/shaders" isTestSource="false" />
@@ -113,7 +115,7 @@
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/resources" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/assets" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/aidl" isTestSource="true" />
- <sourceFolder url="file://$MODULE_DIR$/../../../akono/src/androidTest/java" isTestSource="true" />
+ <sourceFolder url="file://$MODULE_DIR$/src/androidTest/java" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/jni" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/rs" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/shaders" isTestSource="true" />
@@ -121,181 +123,46 @@
<sourceFolder url="file://$MODULE_DIR$/src/test/resources" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/test/assets" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/test/aidl" isTestSource="true" />
- <sourceFolder url="file://$MODULE_DIR$/../../../akono/src/test/java" isTestSource="true" />
+ <sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/test/jni" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/test/rs" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/test/shaders" isTestSource="true" />
- <sourceFolder url="file://$MODULE_DIR$/../../akono/build/generated/aidl_source_output_dir/debug/compileDebugAidl/out" isTestSource="false" generated="true" />
- <sourceFolder url="file://$MODULE_DIR$/../../akono/build/generated/aidl_source_output_dir/debugAndroidTest/compileDebugAndroidTestAidl/out" isTestSource="true" generated="true" />
- <sourceFolder url="file://$MODULE_DIR$/../../akono/build/generated/source/apt/test/debug" isTestSource="true" generated="true" />
- <sourceFolder url="file://$MODULE_DIR$/../../akono/src/debug/res" type="java-resource" />
- <sourceFolder url="file://$MODULE_DIR$/../../akono/src/debug/resources" type="java-resource" />
- <sourceFolder url="file://$MODULE_DIR$/../../akono/src/debug/assets" type="java-resource" />
- <sourceFolder url="file://$MODULE_DIR$/../../akono/src/debug/aidl" isTestSource="false" />
- <sourceFolder url="file://$MODULE_DIR$/../../akono/src/debug/java" isTestSource="false" />
- <sourceFolder url="file://$MODULE_DIR$/../../akono/src/debug/jni" isTestSource="false" />
- <sourceFolder url="file://$MODULE_DIR$/../../akono/src/debug/rs" isTestSource="false" />
- <sourceFolder url="file://$MODULE_DIR$/../../akono/src/debug/shaders" isTestSource="false" />
- <sourceFolder url="file://$MODULE_DIR$/../../akono/src/testDebug/res" type="java-test-resource" />
- <sourceFolder url="file://$MODULE_DIR$/../../akono/src/testDebug/resources" type="java-test-resource" />
- <sourceFolder url="file://$MODULE_DIR$/../../akono/src/testDebug/assets" type="java-test-resource" />
- <sourceFolder url="file://$MODULE_DIR$/../../akono/src/testDebug/aidl" isTestSource="true" />
- <sourceFolder url="file://$MODULE_DIR$/../../akono/src/testDebug/java" isTestSource="true" />
- <sourceFolder url="file://$MODULE_DIR$/../../akono/src/testDebug/jni" isTestSource="true" />
- <sourceFolder url="file://$MODULE_DIR$/../../akono/src/testDebug/rs" isTestSource="true" />
- <sourceFolder url="file://$MODULE_DIR$/../../akono/src/testDebug/shaders" isTestSource="true" />
- <sourceFolder url="file://$MODULE_DIR$/../../akono/src/androidTestDebug/res" type="java-test-resource" />
- <sourceFolder url="file://$MODULE_DIR$/../../akono/src/androidTestDebug/resources" type="java-test-resource" />
- <sourceFolder url="file://$MODULE_DIR$/../../akono/src/androidTestDebug/assets" type="java-test-resource" />
- <sourceFolder url="file://$MODULE_DIR$/../../akono/src/androidTestDebug/aidl" isTestSource="true" />
- <sourceFolder url="file://$MODULE_DIR$/../../akono/src/androidTestDebug/java" isTestSource="true" />
- <sourceFolder url="file://$MODULE_DIR$/../../akono/src/androidTestDebug/jni" isTestSource="true" />
- <sourceFolder url="file://$MODULE_DIR$/../../akono/src/androidTestDebug/rs" isTestSource="true" />
- <sourceFolder url="file://$MODULE_DIR$/../../akono/src/androidTestDebug/shaders" isTestSource="true" />
- <sourceFolder url="file://$MODULE_DIR$/../../akono/src/main/res" type="java-resource" />
- <sourceFolder url="file://$MODULE_DIR$/../../akono/src/main/resources" type="java-resource" />
- <sourceFolder url="file://$MODULE_DIR$/../../akono/src/main/assets" type="java-resource" />
- <sourceFolder url="file://$MODULE_DIR$/../../akono/src/main/aidl" isTestSource="false" />
- <sourceFolder url="file://$MODULE_DIR$/../../akono/src/main/jni" isTestSource="false" />
- <sourceFolder url="file://$MODULE_DIR$/../../akono/src/main/rs" isTestSource="false" />
- <sourceFolder url="file://$MODULE_DIR$/../../akono/src/main/shaders" isTestSource="false" />
- <sourceFolder url="file://$MODULE_DIR$/../../akono/src/androidTest/res" type="java-test-resource" />
- <sourceFolder url="file://$MODULE_DIR$/../../akono/src/androidTest/resources" type="java-test-resource" />
- <sourceFolder url="file://$MODULE_DIR$/../../akono/src/androidTest/assets" type="java-test-resource" />
- <sourceFolder url="file://$MODULE_DIR$/../../akono/src/androidTest/aidl" isTestSource="true" />
- <sourceFolder url="file://$MODULE_DIR$/../../akono/src/androidTest/jni" isTestSource="true" />
- <sourceFolder url="file://$MODULE_DIR$/../../akono/src/androidTest/rs" isTestSource="true" />
- <sourceFolder url="file://$MODULE_DIR$/../../akono/src/androidTest/shaders" isTestSource="true" />
- <sourceFolder url="file://$MODULE_DIR$/../../akono/src/test/res" type="java-test-resource" />
- <sourceFolder url="file://$MODULE_DIR$/../../akono/src/test/resources" type="java-test-resource" />
- <sourceFolder url="file://$MODULE_DIR$/../../akono/src/test/assets" type="java-test-resource" />
- <sourceFolder url="file://$MODULE_DIR$/../../akono/src/test/aidl" isTestSource="true" />
- <sourceFolder url="file://$MODULE_DIR$/../../akono/src/test/jni" isTestSource="true" />
- <sourceFolder url="file://$MODULE_DIR$/../../akono/src/test/rs" isTestSource="true" />
- <sourceFolder url="file://$MODULE_DIR$/../../akono/src/test/shaders" isTestSource="true" />
- <sourceFolder url="file://$MODULE_DIR$/../../../akono/build/generated/aidl_source_output_dir/debug/compileDebugAidl/out" isTestSource="false" generated="true" />
- <sourceFolder url="file://$MODULE_DIR$/../../../akono/build/generated/aidl_source_output_dir/debugAndroidTest/compileDebugAndroidTestAidl/out" isTestSource="true" generated="true" />
- <sourceFolder url="file://$MODULE_DIR$/../../../akono/build/generated/source/apt/test/debug" isTestSource="true" generated="true" />
- <sourceFolder url="file://$MODULE_DIR$/../../../akono/src/debug/res" type="java-resource" />
- <sourceFolder url="file://$MODULE_DIR$/../../../akono/src/debug/resources" type="java-resource" />
- <sourceFolder url="file://$MODULE_DIR$/../../../akono/src/debug/assets" type="java-resource" />
- <sourceFolder url="file://$MODULE_DIR$/../../../akono/src/debug/aidl" isTestSource="false" />
- <sourceFolder url="file://$MODULE_DIR$/../../../akono/src/debug/java" isTestSource="false" />
- <sourceFolder url="file://$MODULE_DIR$/../../../akono/src/debug/jni" isTestSource="false" />
- <sourceFolder url="file://$MODULE_DIR$/../../../akono/src/debug/rs" isTestSource="false" />
- <sourceFolder url="file://$MODULE_DIR$/../../../akono/src/debug/shaders" isTestSource="false" />
- <sourceFolder url="file://$MODULE_DIR$/../../../akono/src/testDebug/res" type="java-test-resource" />
- <sourceFolder url="file://$MODULE_DIR$/../../../akono/src/testDebug/resources" type="java-test-resource" />
- <sourceFolder url="file://$MODULE_DIR$/../../../akono/src/testDebug/assets" type="java-test-resource" />
- <sourceFolder url="file://$MODULE_DIR$/../../../akono/src/testDebug/aidl" isTestSource="true" />
- <sourceFolder url="file://$MODULE_DIR$/../../../akono/src/testDebug/java" isTestSource="true" />
- <sourceFolder url="file://$MODULE_DIR$/../../../akono/src/testDebug/jni" isTestSource="true" />
- <sourceFolder url="file://$MODULE_DIR$/../../../akono/src/testDebug/rs" isTestSource="true" />
- <sourceFolder url="file://$MODULE_DIR$/../../../akono/src/testDebug/shaders" isTestSource="true" />
- <sourceFolder url="file://$MODULE_DIR$/../../../akono/src/androidTestDebug/res" type="java-test-resource" />
- <sourceFolder url="file://$MODULE_DIR$/../../../akono/src/androidTestDebug/resources" type="java-test-resource" />
- <sourceFolder url="file://$MODULE_DIR$/../../../akono/src/androidTestDebug/assets" type="java-test-resource" />
- <sourceFolder url="file://$MODULE_DIR$/../../../akono/src/androidTestDebug/aidl" isTestSource="true" />
- <sourceFolder url="file://$MODULE_DIR$/../../../akono/src/androidTestDebug/java" isTestSource="true" />
- <sourceFolder url="file://$MODULE_DIR$/../../../akono/src/androidTestDebug/jni" isTestSource="true" />
- <sourceFolder url="file://$MODULE_DIR$/../../../akono/src/androidTestDebug/rs" isTestSource="true" />
- <sourceFolder url="file://$MODULE_DIR$/../../../akono/src/androidTestDebug/shaders" isTestSource="true" />
- <sourceFolder url="file://$MODULE_DIR$/../../../akono/src/main/res" type="java-resource" />
- <sourceFolder url="file://$MODULE_DIR$/../../../akono/src/main/resources" type="java-resource" />
- <sourceFolder url="file://$MODULE_DIR$/../../../akono/src/main/assets" type="java-resource" />
- <sourceFolder url="file://$MODULE_DIR$/../../../akono/src/main/aidl" isTestSource="false" />
- <sourceFolder url="file://$MODULE_DIR$/../../../akono/src/main/jni" isTestSource="false" />
- <sourceFolder url="file://$MODULE_DIR$/../../../akono/src/main/rs" isTestSource="false" />
- <sourceFolder url="file://$MODULE_DIR$/../../../akono/src/main/shaders" isTestSource="false" />
- <sourceFolder url="file://$MODULE_DIR$/../../../akono/src/androidTest/res" type="java-test-resource" />
- <sourceFolder url="file://$MODULE_DIR$/../../../akono/src/androidTest/resources" type="java-test-resource" />
- <sourceFolder url="file://$MODULE_DIR$/../../../akono/src/androidTest/assets" type="java-test-resource" />
- <sourceFolder url="file://$MODULE_DIR$/../../../akono/src/androidTest/aidl" isTestSource="true" />
- <sourceFolder url="file://$MODULE_DIR$/../../../akono/src/androidTest/jni" isTestSource="true" />
- <sourceFolder url="file://$MODULE_DIR$/../../../akono/src/androidTest/rs" isTestSource="true" />
- <sourceFolder url="file://$MODULE_DIR$/../../../akono/src/androidTest/shaders" isTestSource="true" />
- <sourceFolder url="file://$MODULE_DIR$/../../../akono/src/test/res" type="java-test-resource" />
- <sourceFolder url="file://$MODULE_DIR$/../../../akono/src/test/resources" type="java-test-resource" />
- <sourceFolder url="file://$MODULE_DIR$/../../../akono/src/test/assets" type="java-test-resource" />
- <sourceFolder url="file://$MODULE_DIR$/../../../akono/src/test/aidl" isTestSource="true" />
- <sourceFolder url="file://$MODULE_DIR$/../../../akono/src/test/jni" isTestSource="true" />
- <sourceFolder url="file://$MODULE_DIR$/../../../akono/src/test/rs" isTestSource="true" />
- <sourceFolder url="file://$MODULE_DIR$/../../../akono/src/test/shaders" isTestSource="true" />
- <excludeFolder url="file://$MODULE_DIR$/build/generated/source/r" />
- <excludeFolder url="file://$MODULE_DIR$/../../akono/build/generated/source/r" />
- <excludeFolder url="file://$MODULE_DIR$/../../../akono/.externalNativeBuild" />
- <excludeFolder url="file://$MODULE_DIR$/../../../akono/build/generated/not_namespaced_r_class_sources" />
- <excludeFolder url="file://$MODULE_DIR$/../../../akono/build/generated/source/r" />
- <excludeFolder url="file://$MODULE_DIR$/../../../akono/build/intermediates/aapt_friendly_merged_manifests" />
- <excludeFolder url="file://$MODULE_DIR$/../../../akono/build/intermediates/annotation_processor_list" />
- <excludeFolder url="file://$MODULE_DIR$/../../../akono/build/intermediates/annotations_typedef_file" />
- <excludeFolder url="file://$MODULE_DIR$/../../../akono/build/intermediates/annotations_zip" />
- <excludeFolder url="file://$MODULE_DIR$/../../../akono/build/intermediates/apk_list" />
- <excludeFolder url="file://$MODULE_DIR$/../../../akono/build/intermediates/blame" />
- <excludeFolder url="file://$MODULE_DIR$/../../../akono/build/intermediates/check_manifest_result" />
- <excludeFolder url="file://$MODULE_DIR$/../../../akono/build/intermediates/cmake" />
- <excludeFolder url="file://$MODULE_DIR$/../../../akono/build/intermediates/compile_only_not_namespaced_r_class_jar" />
- <excludeFolder url="file://$MODULE_DIR$/../../../akono/build/intermediates/dex" />
- <excludeFolder url="file://$MODULE_DIR$/../../../akono/build/intermediates/incremental" />
- <excludeFolder url="file://$MODULE_DIR$/../../../akono/build/intermediates/intermediate-jars" />
- <excludeFolder url="file://$MODULE_DIR$/../../../akono/build/intermediates/javac" />
- <excludeFolder url="file://$MODULE_DIR$/../../../akono/build/intermediates/jniLibs" />
- <excludeFolder url="file://$MODULE_DIR$/../../../akono/build/intermediates/library_and_local_jars_jni" />
- <excludeFolder url="file://$MODULE_DIR$/../../../akono/build/intermediates/library_assets" />
- <excludeFolder url="file://$MODULE_DIR$/../../../akono/build/intermediates/library_manifest" />
- <excludeFolder url="file://$MODULE_DIR$/../../../akono/build/intermediates/merged_assets" />
- <excludeFolder url="file://$MODULE_DIR$/../../../akono/build/intermediates/merged_manifests" />
- <excludeFolder url="file://$MODULE_DIR$/../../../akono/build/intermediates/packaged-classes" />
- <excludeFolder url="file://$MODULE_DIR$/../../../akono/build/intermediates/packaged_res" />
- <excludeFolder url="file://$MODULE_DIR$/../../../akono/build/intermediates/processed_res" />
- <excludeFolder url="file://$MODULE_DIR$/../../../akono/build/intermediates/public_res" />
- <excludeFolder url="file://$MODULE_DIR$/../../../akono/build/intermediates/res" />
- <excludeFolder url="file://$MODULE_DIR$/../../../akono/build/intermediates/rs" />
- <excludeFolder url="file://$MODULE_DIR$/../../../akono/build/intermediates/shader_assets" />
- <excludeFolder url="file://$MODULE_DIR$/../../../akono/build/intermediates/shaders" />
- <excludeFolder url="file://$MODULE_DIR$/../../../akono/build/intermediates/signing_config" />
- <excludeFolder url="file://$MODULE_DIR$/../../../akono/build/intermediates/symbols" />
- <excludeFolder url="file://$MODULE_DIR$/../../../akono/build/intermediates/tmp" />
- <excludeFolder url="file://$MODULE_DIR$/../../../akono/build/intermediates/transforms" />
- <excludeFolder url="file://$MODULE_DIR$/../../../akono/build/intermediates/validate_signing_config" />
- <excludeFolder url="file://$MODULE_DIR$/../../../akono/build/kotlin" />
- <excludeFolder url="file://$MODULE_DIR$/../../../akono/build/outputs" />
- <excludeFolder url="file://$MODULE_DIR$/../../../akono/build/reports" />
- <excludeFolder url="file://$MODULE_DIR$/../../../akono/build/test-results" />
- <excludeFolder url="file://$MODULE_DIR$/../../../akono/build/tmp" />
+ <excludeFolder url="file://$MODULE_DIR$/.cxx" />
+ <excludeFolder url="file://$MODULE_DIR$/.externalNativeBuild" />
+ <excludeFolder url="file://$MODULE_DIR$/build" />
</content>
<orderEntry type="jdk" jdkName="Android API 28 Platform" jdkType="Android SDK" />
<orderEntry type="sourceFolder" forTests="false" />
- <orderEntry type="library" scope="TEST" name="Gradle: androidx.test.ext:junit:1.1.0@aar" level="project" />
- <orderEntry type="library" scope="TEST" name="Gradle: com.google.guava:failureaccess:1.0.1@jar" level="project" />
- <orderEntry type="library" scope="TEST" name="Gradle: com.google.errorprone:error_prone_annotations:2.3.1@jar" level="project" />
- <orderEntry type="library" name="Gradle: org.jetbrains.kotlin:kotlin-stdlib-common:1.3.21@jar" level="project" />
- <orderEntry type="library" scope="TEST" name="Gradle: androidx.test:monitor:1.1.1@aar" level="project" />
- <orderEntry type="library" scope="TEST" name="Gradle: org.jetbrains.kotlin:kotlin-test-junit:1.3.21@jar" level="project" />
- <orderEntry type="library" scope="TEST" name="Gradle: androidx.test:rules:1.1.1@aar" level="project" />
- <orderEntry type="library" scope="TEST" name="Gradle: androidx.test.ext:truth:1.1.0@aar" level="project" />
- <orderEntry type="library" scope="TEST" name="Gradle: org.checkerframework:checker-compat-qual:2.5.5@jar" level="project" />
- <orderEntry type="library" scope="TEST" name="Gradle: androidx.test:runner:1.1.1@aar" level="project" />
<orderEntry type="library" scope="TEST" name="Gradle: com.google.truth:truth:0.44@jar" level="project" />
+ <orderEntry type="library" scope="TEST" name="Gradle: org.jetbrains.kotlin:kotlin-test-junit:1.3.21@jar" level="project" />
+ <orderEntry type="library" scope="TEST" name="Gradle: org.jetbrains.kotlin:kotlin-test:1.3.21@jar" level="project" />
<orderEntry type="library" scope="TEST" name="Gradle: androidx.lifecycle:lifecycle-common:2.0.0@jar" level="project" />
- <orderEntry type="library" scope="TEST" name="Gradle: com.google.auto.value:auto-value-annotations:1.6.3@jar" level="project" />
- <orderEntry type="library" name="Gradle: org.jetbrains:annotations:13.0@jar" level="project" />
- <orderEntry type="library" scope="TEST" name="Gradle: org.jetbrains.kotlin:kotlin-test-common:1.3.21@jar" level="project" />
- <orderEntry type="library" scope="TEST" name="Gradle: com.google.j2objc:j2objc-annotations:1.1@jar" level="project" />
+ <orderEntry type="library" scope="TEST" name="Gradle: androidx.annotation:annotation:1.0.0@jar" level="project" />
<orderEntry type="library" scope="TEST" name="Gradle: junit:junit:4.12@jar" level="project" />
- <orderEntry type="library" scope="TEST" name="Gradle: com.googlecode.java-diff-utils:diffutils:1.3.0@jar" level="project" />
<orderEntry type="library" scope="TEST" name="Gradle: org.hamcrest:hamcrest-core:1.3@jar" level="project" />
- <orderEntry type="library" scope="TEST" name="Gradle: androidx.test:core:1.1.0@aar" level="project" />
- <orderEntry type="library" scope="TEST" name="Gradle: androidx.annotation:annotation:1.0.0@jar" level="project" />
- <orderEntry type="library" scope="TEST" name="Gradle: org.jetbrains.kotlin:kotlin-test:1.3.21@jar" level="project" />
- <orderEntry type="library" scope="TEST" name="Gradle: org.jetbrains.kotlin:kotlin-test-annotations-common:1.3.21@jar" level="project" />
+ <orderEntry type="library" scope="TEST" name="Gradle: net.sf.kxml:kxml2:2.3.0@jar" level="project" />
+ <orderEntry type="library" scope="TEST" name="Gradle: com.google.guava:guava:27.0.1-android@jar" level="project" />
+ <orderEntry type="library" scope="TEST" name="Gradle: com.google.guava:failureaccess:1.0.1@jar" level="project" />
+ <orderEntry type="library" scope="TEST" name="Gradle: com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava@jar" level="project" />
<orderEntry type="library" scope="TEST" name="Gradle: com.google.code.findbugs:jsr305:3.0.2@jar" level="project" />
- <orderEntry type="library" name="Gradle: org.jetbrains.kotlin:kotlin-stdlib:1.3.21@jar" level="project" />
+ <orderEntry type="library" scope="TEST" name="Gradle: org.checkerframework:checker-compat-qual:2.5.5@jar" level="project" />
+ <orderEntry type="library" scope="TEST" name="Gradle: com.google.errorprone:error_prone_annotations:2.3.1@jar" level="project" />
+ <orderEntry type="library" scope="TEST" name="Gradle: com.google.j2objc:j2objc-annotations:1.1@jar" level="project" />
<orderEntry type="library" scope="TEST" name="Gradle: org.codehaus.mojo:animal-sniffer-annotations:1.17@jar" level="project" />
+ <orderEntry type="library" scope="TEST" name="Gradle: com.googlecode.java-diff-utils:diffutils:1.3.0@jar" level="project" />
+ <orderEntry type="library" scope="TEST" name="Gradle: com.google.auto.value:auto-value-annotations:1.6.3@jar" level="project" />
+ <orderEntry type="library" scope="TEST" name="Gradle: org.jetbrains.kotlin:kotlin-test-common:1.3.21@jar" level="project" />
+ <orderEntry type="library" scope="TEST" name="Gradle: org.jetbrains.kotlin:kotlin-test-annotations-common:1.3.21@jar" level="project" />
+ <orderEntry type="library" scope="TEST" name="Gradle: androidx.test.ext:junit:1.1.0@aar" level="project" />
+ <orderEntry type="library" scope="TEST" name="Gradle: androidx.test.ext:truth:1.1.0@aar" level="project" />
+ <orderEntry type="library" scope="TEST" name="Gradle: androidx.test:core:1.1.0@aar" level="project" />
+ <orderEntry type="library" scope="TEST" name="Gradle: androidx.test:rules:1.1.1@aar" level="project" />
+ <orderEntry type="library" scope="TEST" name="Gradle: androidx.test:runner:1.1.1@aar" level="project" />
+ <orderEntry type="library" scope="TEST" name="Gradle: androidx.test:monitor:1.1.1@aar" level="project" />
<orderEntry type="library" name="Gradle: org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.3.21@jar" level="project" />
- <orderEntry type="library" scope="TEST" name="Gradle: com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava@jar" level="project" />
- <orderEntry type="library" scope="TEST" name="Gradle: com.google.guava:guava:27.0.1-android@jar" level="project" />
- <orderEntry type="library" scope="TEST" name="Gradle: net.sf.kxml:kxml2:2.3.0@jar" level="project" />
+ <orderEntry type="library" name="Gradle: org.jetbrains.kotlin:kotlin-stdlib:1.3.21@jar" level="project" />
+ <orderEntry type="library" name="Gradle: org.jetbrains.kotlin:kotlin-stdlib-common:1.3.21@jar" level="project" />
+ <orderEntry type="library" name="Gradle: org.jetbrains:annotations:13.0@jar" level="project" />
<orderEntry type="library" name="Gradle: android.test.mock-android-28" level="project" />
<orderEntry type="library" name="Gradle: android.test.base-android-28" level="project" />
<orderEntry type="library" name="Gradle: android.test.runner-android-28" level="project" />
diff --git a/akono/build.gradle.kts b/akono/build.gradle.kts
index b98510db..d5362832 100644
--- a/akono/build.gradle.kts
+++ b/akono/build.gradle.kts
@@ -8,7 +8,7 @@ plugins {
android {
compileSdkVersion(28)
defaultConfig {
- minSdkVersion(26)
+ minSdkVersion(21)
targetSdkVersion(28)
versionCode = 1
diff --git a/akono/src/main/cpp/akono-jni.cpp b/akono/src/main/cpp/akono-jni.cpp
index 0480eea5..1d0f7512 100644
--- a/akono/src/main/cpp/akono-jni.cpp
+++ b/akono/src/main/cpp/akono-jni.cpp
@@ -1,9 +1,11 @@
-#include <string.h>
+#include <sys/types.h>
+#include <sys/syscall.h>
+#include <cstring>
#include <jni.h>
#include <libplatform/libplatform.h>
#include <v8.h>
-#define NODE_WANT_INTERNALS 1
+#define NODE_WANT_INTERNALS 1 // NOLINT(cppcoreguidelines-macro-usage)
#include <node.h>
@@ -11,10 +13,9 @@
#include <unistd.h>
#include <android/log.h>
#include <node_main_instance.h>
+#include <node_binding.h>
#include <node_native_module_env.h>
-
-
// Provide stubs so that libnode.so links properly
namespace node {
namespace native_module {
@@ -40,7 +41,7 @@ static const char *tag = "myapp";
static void *thread_func(void *) {
ssize_t rdsz;
- char buf[128];
+ char buf[1024];
while ((rdsz = read(pfd[0], buf, sizeof buf - 1)) > 0) {
if (buf[rdsz - 1] == '\n') --rdsz;
buf[rdsz] = 0; /* add null-terminator */
@@ -83,7 +84,7 @@ private:
JNIEnv *m_env;
public:
JStringValue(JNIEnv *env, jstring s) : m_env(env), m_jstr(s) {
- m_cstr = env->GetStringUTFChars(s, NULL);
+ m_cstr = env->GetStringUTFChars(s, nullptr);
}
~JStringValue() {
@@ -111,82 +112,21 @@ static void InitNode(std::vector<const char *> argv) {
void notifyCb(uv_async_t *async);
static void sendMessageCallback(const v8::FunctionCallbackInfo<v8::Value> &args);
-static void loadModuleCallback(const v8::FunctionCallbackInfo<v8::Value> &args);
-static void getDataCallback(const v8::FunctionCallbackInfo<v8::Value> &args);
static const char *main_code = "global.__akono_run = (x) => {"
- " console.log('running code', x);"
+ " 0 && console.log('running code', x);"
" global.eval(x);"
"};"
""
"global.__akono_onMessage = (x) => {"
- " console.log('got __akono_onMessage', x);"
- "};"
- ""
- "mod = require('module');"
- "mod._saved_findPath = mod._findPath;"
- "mod._akonoMods = {};"
- "mod._findPath = (request, paths, isMain) => {"
- " console.log('in _findPath');"
- " const res = mod._saved_findPath(request, paths, isMain);"
- " if (res !== false) return res;"
- " const args = JSON.stringify({ request, paths});"
- " const loadResult = JSON.parse(global.__akono_loadModule(args));"
- " console.log('got loadModule result');"
- " if (!loadResult) return false;"
- " console.log('loadModule path is', loadResult.path);"
- " mod._akonoMods[loadResult.path] = loadResult;"
- " console.log('returning path', loadResult.path);"
- " return loadResult.path;"
- "};"
- ""
- "function stripBOM(content) {"
- " if (content.charCodeAt(0) === 0xFEFF) {"
- " content = content.slice(1);"
- " }"
- " return content;"
- "}"
- ""
- "mod._saved_js_extension = mod._extensions[\".js\"];"
- "mod._extensions[\".js\"] = (module, filename) => {"
- " console.log('handling js extension', [module, filename]);"
- " if (mod._akonoMods.hasOwnProperty(filename)) {"
- " const akmod = mod._akonoMods[filename];"
- " console.log('found mod');"
- " const content = akmod.content;"
- " module._compile(stripBOM(content), filename);"
- " return;"
- " }"
- " console.log('falling back');"
- " return mod._saved_js_extension(module, filename);"
- "};"
- ""
- "mod._saved_json_extension = mod._extensions[\".json\"];"
- "mod._extensions[\".json\"] = (module, filename) => {"
- " console.log('handling json extension', [module, filename]);"
- " if (mod._akonoMods.hasOwnProperty(filename)) {"
- " const akmod = mod._akonoMods[filename];"
- " console.log('found mod');"
- " const content = akmod.content;"
- " try {"
- " module.exports = JSON.parse(stripBOM(content));"
- " return;"
- " } catch (err) {"
- " err.message = filename + ': ' + err.message;"
- " throw err;"
- " }"
- " }"
- " console.log('falling back');"
- " return mod._saved_json_extension(module, filename);"
- "};"
- "";
+ " 0 && console.log('got __akono_onMessage', x);"
+ "};";
class NativeAkonoInstance {
private:
static bool logInitialized;
static bool v8Initialized;
- //static std::unique_ptr<v8::Platform> platform;
static node::MultiIsolatePlatform *platform;
public:
v8::Isolate *isolate;
@@ -245,12 +185,8 @@ public:
// Arguments for the script run by node
std::vector<const char *> nodeExecArgv{};
- mylog("entering global scope");
-
v8::Context::Scope context_scope(globalContext.Get(isolate));
- mylog("creating environment");
-
node::Environment *environment = node::CreateEnvironment(
isolateData,
globalContext.Get(isolate),
@@ -259,12 +195,8 @@ public:
nodeExecArgv.size(),
&nodeExecArgv[0]);
- mylog("loading environment");
-
node::LoadEnvironment(environment);
- mylog("finished loading environment");
-
v8::Local<v8::ObjectTemplate> dataTemplate = v8::ObjectTemplate::New(isolate);
dataTemplate->SetInternalFieldCount(1);
v8::Local<v8::Object> dataObject = dataTemplate->NewInstance(context).ToLocalChecked();
@@ -274,29 +206,12 @@ public:
sendMessageCallback,
dataObject).ToLocalChecked();
- v8::Local<v8::Function> loadModuleFunction = v8::Function::New(context,
- loadModuleCallback,
- dataObject).ToLocalChecked();
-
- v8::Local<v8::Function> getDataFunction = v8::Function::New(context,
- getDataCallback,
- dataObject).ToLocalChecked();
-
v8::Local<v8::Object> global = context->Global();
global->Set(v8::String::NewFromUtf8(isolate, "__akono_sendMessage",
v8::NewStringType::kNormal).ToLocalChecked(),
sendMessageFunction);
- global->Set(v8::String::NewFromUtf8(isolate, "__akono_loadModule",
- v8::NewStringType::kNormal).ToLocalChecked(),
- loadModuleFunction);
-
- // Get data synchronously (!) from the embedder
- global->Set(v8::String::NewFromUtf8(isolate, "__akono_getData",
- v8::NewStringType::kNormal).ToLocalChecked(),
- getDataFunction);
-
}
/**
@@ -305,12 +220,14 @@ public:
* @param env JNI env of the thread we're running in.
*/
void runNode() {
+ //printf("running node loop, tid=%llu\n", (unsigned long long) syscall(__NR_gettid));
+ v8::Locker locker(isolate);
v8::Isolate::Scope isolate_scope(isolate);
v8::HandleScope handle_scope(isolate);
v8::Local<v8::Context> context = globalContext.Get(isolate);
v8::Context::Scope context_scope(context);
this->breakRequested = false;
- while (1) {
+ while (true) {
uv_run(uv_default_loop(), UV_RUN_ONCE);
platform->DrainTasks(isolate);
if (this->breakRequested)
@@ -324,7 +241,7 @@ public:
* Must not be called from a different thread.
*/
void makeCallback(const char *code) {
- mylog("in makeCallback");
+ v8::Locker locker(isolate);
v8::Isolate::Scope isolate_scope(isolate);
v8::HandleScope handle_scope(isolate);
v8::Local<v8::Context> context = globalContext.Get(isolate);
@@ -334,7 +251,6 @@ public:
v8::String::NewFromUtf8(isolate, code,
v8::NewStringType::kNormal).ToLocalChecked()
};
- mylog("calling node::MakeCallback");
node::MakeCallback(isolate, global, "__akono_run", 1, argv, {0, 0});
}
@@ -343,8 +259,6 @@ public:
}
jstring evalJs(JNIEnv *env, jstring sourceString) {
- mylog("begin evalJs");
-
JStringValue jsv(env, sourceString);
v8::Isolate::Scope isolate_scope(isolate);
@@ -370,28 +284,19 @@ public:
// Compile the source code.
v8::Local<v8::Script> script;
- mylog("about to compile script");
-
if (!v8::Script::Compile(context, source).ToLocal(&script)) {
return nullptr;
}
- mylog("about to run script");
-
// Run the script to get the result.
v8::Local<v8::Value> result;
if (!script->Run(context).ToLocal(&result)) {
- mylog("running script failed");
return nullptr;
}
- mylog("converting script result value");
-
// Convert the result to an UTF8 string and print it.
v8::String::Utf8Value utf8(isolate, result);
- mylog("about to return value");
-
return env->NewStringUTF(*utf8);
}
}
@@ -404,8 +309,7 @@ node::MultiIsolatePlatform *NativeAkonoInstance::platform = nullptr;
void notifyCb(uv_async_t *async) {
- NativeAkonoInstance *akono = (NativeAkonoInstance *) async->data;
- mylog("async notifyCb called!");
+ auto akono = (NativeAkonoInstance *) async->data;
akono->breakRequested = true;
}
@@ -415,11 +319,9 @@ static void sendMessageCallback(const v8::FunctionCallbackInfo<v8::Value> &args)
v8::HandleScope scope(isolate);
v8::Local<v8::Value> arg = args[0];
v8::String::Utf8Value value(isolate, arg);
- mylog("sendMessageCallback called, yay!");
v8::Local<v8::Object> data = v8::Local<v8::Object>::Cast(args.Data());
- mylog("getting instance");
NativeAkonoInstance *myInstance = (NativeAkonoInstance *) data->GetAlignedPointerFromInternalField(0);
JNIEnv *env = myInstance->currentJniEnv;
@@ -429,7 +331,6 @@ static void sendMessageCallback(const v8::FunctionCallbackInfo<v8::Value> &args)
return;
}
- mylog("finding class");
jclass clazz = env->FindClass("akono/AkonoJni");
if (clazz == nullptr) {
@@ -437,12 +338,9 @@ static void sendMessageCallback(const v8::FunctionCallbackInfo<v8::Value> &args)
return;
}
- mylog("creating strings");
jstring jstr1 = env->NewStringUTF("message");
jstring jstr2 = env->NewStringUTF(*value);
- mylog("getting method");
-
jmethodID meth = env->GetMethodID(clazz, "internalOnNotify", "(Ljava/lang/String;Ljava/lang/String;)V");
if (meth == nullptr) {
@@ -450,122 +348,9 @@ static void sendMessageCallback(const v8::FunctionCallbackInfo<v8::Value> &args)
return;
}
- mylog("calling method");
-
env->CallVoidMethod(myInstance->currentJniThiz, meth, jstr1, jstr2);
}
-
-static void loadModuleCallback(const v8::FunctionCallbackInfo<v8::Value> &args) {
- if (args.Length() < 1) return;
- v8::Isolate *isolate = args.GetIsolate();
- v8::HandleScope scope(isolate);
- v8::Local<v8::Value> arg = args[0];
- v8::String::Utf8Value value(isolate, arg);
- mylog("sendMessageCallback called, yay!");
-
- v8::Local<v8::Object> data = v8::Local<v8::Object>::Cast(args.Data());
-
- mylog("getting instance");
- NativeAkonoInstance *myInstance = (NativeAkonoInstance *) data->GetAlignedPointerFromInternalField(0);
-
- JNIEnv *env = myInstance->currentJniEnv;
-
- if (env == nullptr) {
- mylog("FATAL: JNI env is nullptr");
- return;
- }
-
- mylog("finding class");
- jclass clazz = env->FindClass("akono/AkonoJni");
-
- if (clazz == nullptr) {
- mylog("FATAL: class not found");
- return;
- }
-
- mylog("creating strings");
- jstring jstr1 = env->NewStringUTF(*value);
-
- mylog("getting method");
-
- jmethodID meth = env->GetMethodID(clazz, "internalOnModuleLoad", "(Ljava/lang/String;)Ljava/lang/String;");
-
- if (meth == nullptr) {
- mylog("FATAL: method not found");
- return;
- }
-
- mylog("calling method");
-
- jstring jresult = (jstring) env->CallObjectMethod(myInstance->currentJniThiz, meth, jstr1);
-
- JStringValue resultStringValue(env, jresult);
-
- // Create a string containing the JavaScript source code.
- v8::Local<v8::String> rs =
- v8::String::NewFromUtf8(isolate, *resultStringValue,
- v8::NewStringType::kNormal)
- .ToLocalChecked();
-
- args.GetReturnValue().Set(rs);
-}
-
-
-static void getDataCallback(const v8::FunctionCallbackInfo<v8::Value> &args) {
- if (args.Length() < 1) return;
- v8::Isolate *isolate = args.GetIsolate();
- v8::HandleScope scope(isolate);
- v8::Local<v8::Value> arg = args[0];
- v8::String::Utf8Value value(isolate, arg);
- mylog("getDataCallback called");
-
- v8::Local<v8::Object> data = v8::Local<v8::Object>::Cast(args.Data());
- mylog("getting instance");
- NativeAkonoInstance *myInstance = (NativeAkonoInstance *) data->GetAlignedPointerFromInternalField(0);
-
- JNIEnv *env = myInstance->currentJniEnv;
- if (env == nullptr) {
- mylog("FATAL: JNI env is nullptr");
- return;
- }
-
- mylog("finding class");
- jclass clazz = env->FindClass("akono/AkonoJni");
-
- if (clazz == nullptr) {
- mylog("FATAL: class not found");
- return;
- }
-
- mylog("creating strings");
- jstring jstr1 = env->NewStringUTF(*value);
-
- mylog("getting method");
-
- jmethodID meth = env->GetMethodID(clazz, "internalOnGetData", "(Ljava/lang/String;)Ljava/lang/String;");
-
- if (meth == nullptr) {
- mylog("FATAL: method not found");
- return;
- }
-
- mylog("calling method");
-
- jstring jresult = (jstring) env->CallObjectMethod(myInstance->currentJniThiz, meth, jstr1);
-
- JStringValue resultStringValue(env, jresult);
-
- // Create a string containing the JavaScript source code.
- v8::Local<v8::String> rs =
- v8::String::NewFromUtf8(isolate, *resultStringValue,
- v8::NewStringType::kNormal)
- .ToLocalChecked();
-
- args.GetReturnValue().Set(rs);
-}
-
-
extern "C" JNIEXPORT jobject JNICALL
Java_akono_AkonoJni_initNative(JNIEnv *env, jobject thiz) {
NativeAkonoInstance *myInstance = new NativeAkonoInstance();
@@ -608,3 +393,11 @@ Java_akono_AkonoJni_makeCallbackNative(JNIEnv *env, jobject thiz, jstring source
myInstance->currentJniThiz = thiz;
return myInstance->makeCallback(*jsv);
}
+
+void InitializeAkono(v8::Local<v8::Object> target,
+ v8::Local<v8::Value> unused,
+ v8::Local<v8::Context> context,
+ void* priv) {
+}
+
+NODE_MODULE_CONTEXT_AWARE_INTERNAL(akono, InitializeAkono)
diff --git a/akono/src/main/java/akono/AkonoJni.kt b/akono/src/main/java/akono/AkonoJni.kt
index 0ba31ee8..6aecb3af 100644
--- a/akono/src/main/java/akono/AkonoJni.kt
+++ b/akono/src/main/java/akono/AkonoJni.kt
@@ -13,10 +13,10 @@ typealias AkonoNativePointer = ByteBuffer
data class ModuleResult(val path: String, val contents: String)
+private val TAG = "AkonoJni"
+
class AkonoJni(vararg nodeArgv: String) {
- private var getDataHandler: GetDataHandler? = null
private var messageHandler: MessageHandler? = null
- private var loadModuleHandler: LoadModuleHandler? = null
private val initializedLatch = CountDownLatch(1)
private val workQueue = LinkedBlockingDeque<() -> Unit>()
@@ -53,49 +53,6 @@ class AkonoJni(vararg nodeArgv: String) {
messageHandler?.handleMessage(payload)
}
- /**
- * Called by node/v8 from its thread.
- */
- @Suppress("unused")
- private fun internalOnModuleLoad(loadInfoStr: String): String {
- try {
- val loadInfo = JSONObject(loadInfoStr)
- val request: String = loadInfo.getString("request")
- Log.i("myapp", "request is $request")
- val paths = ArrayList<String>()
- val pathsJson = loadInfo.getJSONArray("paths")
- for (i in 0 until pathsJson.length()) {
- val path = pathsJson.getString(i)
- if (path.startsWith("/vmodroot/")) {
- paths.add(path)
- }
- }
- paths.add("/vmodroot")
- val handler = loadModuleHandler
- if (handler != null) {
- val modResult = handler.loadModule(request, paths.toTypedArray()) ?: return "null"
- val result = JSONObject()
- result.put("path", modResult.path)
- result.put("content", modResult.contents)
- return result.toString()
- } else {
- Log.w("myapp", "no module load handler registered")
- return "null"
- }
- } catch (e: Exception) {
- Log.e("myapp", "exception during internalOnModuleLoad: $e")
- return "null"
- }
- }
-
- /**
- * Called by node/v8 from its thread.
- */
- @Suppress("unused")
- private fun internalOnGetData(what: String): String? {
- val data = getDataHandler?.handleGetData(what) ?: return null
- return Base64.encodeToString(data, Base64.NO_WRAP)
- }
fun notifyNative() {
initializedLatch.await()
@@ -142,7 +99,7 @@ class AkonoJni(vararg nodeArgv: String) {
*
*/
fun waitStopped(): Unit {
- Log.i("myapp", "waiting for stop")
+ Log.i(TAG, "waiting for stop")
scheduleNodeThread {
stopped = true
}
@@ -160,13 +117,6 @@ class AkonoJni(vararg nodeArgv: String) {
this.messageHandler = handler
}
- fun setLoadModuleHandler(handler: LoadModuleHandler) {
- this.loadModuleHandler = handler
- }
-
- fun setGetDataHandler(handler: GetDataHandler) {
- this.getDataHandler = handler
- }
@Override
protected fun finalize() {
@@ -208,4 +158,4 @@ class AkonoJni(vararg nodeArgv: String) {
interface GetDataHandler {
fun handleGetData(what: String): ByteArray?
}
-} \ No newline at end of file
+}