diff --git a/app/src/main/cpp/CMakeLists.txt b/app/src/main/cpp/CMakeLists.txt index b31018e7f..cc19b65d7 100644 --- a/app/src/main/cpp/CMakeLists.txt +++ b/app/src/main/cpp/CMakeLists.txt @@ -63,5 +63,5 @@ FetchContent_MakeAvailable(libarchive) include_directories(${libarchive_SOURCE_DIR}/libarchive) # Build and link our app's native lib -add_library(${PROJECT_NAME} SHARED archive.c gifutils.c natsort/strnatcmp.c) +add_library(${PROJECT_NAME} SHARED archive.c gifutils.c http_downloader.c natsort/strnatcmp.c) target_link_libraries(${PROJECT_NAME} archive_static log) diff --git a/app/src/main/cpp/http_downloader.c b/app/src/main/cpp/http_downloader.c new file mode 100644 index 000000000..2b88a6bed --- /dev/null +++ b/app/src/main/cpp/http_downloader.c @@ -0,0 +1,13 @@ +#include + +// This JNI function makes https call and save responseBody directly to filesystem to avoid copy on JVM heap +JNIEXPORT jlong JNICALL +Java_com_hippo_ehviewer_spider_SpiderDenKt_makeHttpsCallAndSaveToFd(JNIEnv *env, jclass clazz,jstring url, jboolean do_sni, jint fd) { + // TODO: implement makeHttpsCallAndSaveToFd() +} + +// Is KTLS supported? if not, we maybe use [TLSChannel]https://github.com/marianobarrios/tls-channel and do DirectByteBuffer IO +JNIEXPORT jboolean JNICALL +Java_com_hippo_ehviewer_spider_SpiderDenKt_kernelSupportKTLS(JNIEnv *env, jclass clazz) { + // TODO: implement kernelSupportKTLS() +} diff --git a/app/src/main/java/com/hippo/ehviewer/spider/SpiderDen.kt b/app/src/main/java/com/hippo/ehviewer/spider/SpiderDen.kt index 3d1866ae6..80c97a38e 100644 --- a/app/src/main/java/com/hippo/ehviewer/spider/SpiderDen.kt +++ b/app/src/main/java/com/hippo/ehviewer/spider/SpiderDen.kt @@ -275,3 +275,6 @@ fun GalleryInfo.putToDownloadDir() { val dirname = FileUtils.sanitizeFilename("$gid-$title") EhDB.putDownloadDirname(gid, dirname) } + +private external fun makeHttpsCallAndSaveToFd(url: String, doSni: Boolean, fd: Int): Long +private external fun kernelSupportKTLS(): Boolean