gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[taler-akono] branch master updated: simplifications / threading


From: gnunet
Subject: [taler-akono] branch master updated: simplifications / threading
Date: Fri, 06 Dec 2019 02:00:40 +0100

This is an automated email from the git hooks/post-receive script.

dold pushed a commit to branch master
in repository akono.

The following commit(s) were added to refs/heads/master by this push:
     new cb3eb410 simplifications / threading
cb3eb410 is described below

commit cb3eb410fbf79cb2bb9ddb969b771259ea9acf6e
Author: Florian Dold <address@hidden>
AuthorDate: Fri Dec 6 02:00:34 2019 +0100

    simplifications / threading
---
 .gitignore                                   |   2 +
 .idea/encodings.xml                          |   4 -
 .idea/gradle.xml                             |   3 +-
 .idea/inspectionProfiles/Project_Default.xml |   6 -
 .idea/vcs.xml                                |   1 +
 akono.iml                                    |  14 +-
 akono/akono-akono.iml                        | 249 ++++++--------------------
 akono/build.gradle.kts                       |   2 +-
 akono/src/main/cpp/akono-jni.cpp             | 253 +++------------------------
 akono/src/main/java/akono/AkonoJni.kt        |  58 +-----
 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/f30e4a9897913e53d778f564110bafa1fef4
 [...]
           <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
+}

-- 
To stop receiving notification emails like this one, please contact
address@hidden.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]