Convert spiderInfo cache to Coil DiskCache

This commit is contained in:
tarsin committed 2022-12-29 20:27:33 +08:00
1 parent 1316875602
commit d8ccec45f9
2 files changed
+21 -28

No files matched your search

@@ -32,9 +32,9 @@ import androidx.lifecycle.LifecycleOwner
import androidx.lifecycle.ProcessLifecycleOwner import androidx.lifecycle.ProcessLifecycleOwner
import coil.ImageLoader import coil.ImageLoader
import coil.ImageLoaderFactory import coil.ImageLoaderFactory
import coil.disk.DiskCache
import com.hippo.Native import com.hippo.Native
import com.hippo.app.BaseDialogBuilder import com.hippo.app.BaseDialogBuilder
import com.hippo.beerbelly.SimpleDiskCache
import com.hippo.ehviewer.client.EhClient import com.hippo.ehviewer.client.EhClient
import com.hippo.ehviewer.client.EhCookieStore import com.hippo.ehviewer.client.EhCookieStore
import com.hippo.ehviewer.client.EhDns import com.hippo.ehviewer.client.EhDns
@@ -332,10 +332,8 @@ class EhApplication : SceneApplication(), DefaultLifecycleObserver, ImageLoaderF
@JvmStatic @JvmStatic
val spiderInfoCache by lazy { val spiderInfoCache by lazy {
SimpleDiskCache( DiskCache.Builder().directory(File(application.cacheDir, "spider_info"))
File(application.cacheDir, "spider_info"), .maxSizeBytes(20 * 1024 * 1024).build()
20 * 1024 * 1024
)
} }
@JvmStatic @JvmStatic
@@ -30,7 +30,6 @@ import androidx.annotation.NonNull;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import androidx.annotation.UiThread; import androidx.annotation.UiThread;
import com.hippo.beerbelly.SimpleDiskCache;
import com.hippo.ehviewer.EhApplication; import com.hippo.ehviewer.EhApplication;
import com.hippo.ehviewer.GetText; import com.hippo.ehviewer.GetText;
import com.hippo.ehviewer.R; import com.hippo.ehviewer.R;
@@ -65,6 +64,7 @@ import com.hippo.yorozuya.thread.PriorityThreadFactory;
import java.io.BufferedInputStream; import java.io.BufferedInputStream;
import java.io.FileInputStream; import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.io.OutputStream; import java.io.OutputStream;
@@ -82,6 +82,7 @@ import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.atomic.AtomicReference; import java.util.concurrent.atomic.AtomicReference;
import coil.disk.DiskCache;
import eu.kanade.tachiyomi.ui.reader.loader.PageLoader; import eu.kanade.tachiyomi.ui.reader.loader.PageLoader;
import okhttp3.Call; import okhttp3.Call;
import okhttp3.MediaType; import okhttp3.MediaType;
@@ -112,7 +113,7 @@ public final class SpiderQueen implements Runnable {
@NonNull @NonNull
private final OkHttpClient mHttpClient; private final OkHttpClient mHttpClient;
@NonNull @NonNull
private final SimpleDiskCache mSpiderInfoCache; private final DiskCache mSpiderInfoCache;
@NonNull @NonNull
private final GalleryInfo mGalleryInfo; private final GalleryInfo mGalleryInfo;
@NonNull @NonNull
@@ -689,21 +690,16 @@ public final class SpiderQueen implements Runnable {
} }
// Read from cache // Read from cache
InputStreamPipe pipe = mSpiderInfoCache.getInputStreamPipe(Long.toString(mGalleryInfo.gid)); var entry = mSpiderInfoCache.get(Long.toString(mGalleryInfo.gid));
if (null != pipe) { if (entry == null) return null;
try { try (entry; InputStream is = new FileInputStream(entry.getData().toFile())) {
pipe.obtain(); spiderInfo = SpiderInfo.read(is);
spiderInfo = SpiderInfo.read(pipe.open()); if (spiderInfo != null && spiderInfo.gid == mGalleryInfo.gid &&
if (spiderInfo != null && spiderInfo.gid == mGalleryInfo.gid && spiderInfo.token.equals(mGalleryInfo.token)) {
spiderInfo.token.equals(mGalleryInfo.token)) { return spiderInfo;
return spiderInfo;
}
} catch (IOException e) {
// Ignore
} finally {
pipe.close();
pipe.release();
} }
} catch (IOException e) {
// Ignore
} }
return null; return null;
@@ -843,16 +839,15 @@ public final class SpiderQueen implements Runnable {
} }
} }
// Read from cache // Write to cache
OutputStreamPipe pipe = mSpiderInfoCache.getOutputStreamPipe(Long.toString(mGalleryInfo.gid)); var editor = mSpiderInfoCache.edit(Long.toString(mGalleryInfo.gid));
try { if (editor == null) return;
pipe.obtain(); try (OutputStream os = new FileOutputStream(editor.getData().toFile())) {
spiderInfo.write(pipe.open()); spiderInfo.write(os);
} catch (IOException e) { } catch (IOException e) {
// Ignore // Ignore
} finally { } finally {
pipe.close(); editor.commit();
pipe.release();
} }
} }