From a256864c84c2f5d8ff3712e74921e0922e36ff77 Mon Sep 17 00:00:00 2001 From: tarsin Date: Sat, 3 Jun 2023 17:37:53 +0800 Subject: [PATCH] Introduce KTLS based http downoader API stub --- app/src/main/cpp/CMakeLists.txt | 2 +- app/src/main/cpp/http_downloader.c | 13 +++++++++++++ .../java/com/hippo/ehviewer/spider/SpiderDen.kt | 3 +++ 3 files changed, 17 insertions(+), 1 deletion(-) create mode 100644 app/src/main/cpp/http_downloader.c 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