Fixup! New SpiderInfo serialization format

Don't serialize thousands of nulls
This commit is contained in:
tarsin committed 2023-01-29 11:36:29 +08:00
1 parent e0b95ab2ae
commit 152b4d3765
3 files changed
+13 -13

No files matched your search

@@ -331,7 +331,7 @@ class EhApplication : Application(), DefaultLifecycleObserver, ImageLoaderFactor
@JvmStatic
val spiderInfoCache by lazy {
DiskCache.Builder().directory(File(application.cacheDir, "spider_info_v2"))
DiskCache.Builder().directory(File(application.cacheDir, "spider_info_v2_1"))
.maxSizeBytes(20 * 1024 * 1024).build()
}
@@ -18,7 +18,7 @@ class SpiderInfo @JvmOverloads constructor(
val pages: Int,
val pTokenMap: Array<String?> = arrayOfNulls(pages),
val pTokenMap: MutableMap<Int, String> = hashMapOf(),
var startPage: Int = 0,
@@ -75,7 +75,7 @@ class SpiderInfo @JvmOverloads constructor(
val previewPages = readInt()
val previewPerPage = readInt()
val pages = read().toInt()
val pTokenMap = arrayOfNulls<String>(pages)
val pTokenMap = hashMapOf<Int, String>()
val info = SpiderInfo(gid, pages, pTokenMap, 0, token, previewPages, previewPerPage)
runCatching {
val line = read()
@@ -732,7 +732,7 @@ public final class SpiderQueen implements Runnable {
GalleryPageUrlParser.Result result = GalleryPageUrlParser.parse(previewSet.getPageUrlAt(i));
if (result != null) {
synchronized (mPTokenLock) {
spiderInfo.getPTokenMap()[result.page] = result.pToken;
spiderInfo.getPTokenMap().put(result.page, result.pToken);
}
}
}
@@ -775,13 +775,13 @@ public final class SpiderQueen implements Runnable {
for (int i = 0; i < list.size(); i++) {
synchronized (mPTokenLock) {
spiderInfo.getPTokenMap()[i] = list.get(i);
spiderInfo.getPTokenMap().put(i, list.get(i));
}
}
String pToken;
synchronized (mPTokenLock) {
pToken = spiderInfo.getPTokenMap()[index];
pToken = spiderInfo.getPTokenMap().get(index);
}
return pToken;
} catch (Throwable e) {
@@ -824,7 +824,7 @@ public final class SpiderQueen implements Runnable {
String pToken;
synchronized (mPTokenLock) {
pToken = spiderInfo.getPTokenMap()[index];
pToken = spiderInfo.getPTokenMap().get(index);
}
return pToken;
} catch (Throwable e) {
@@ -928,7 +928,7 @@ public final class SpiderQueen implements Runnable {
// Check it in spider info
String pToken;
synchronized (mPTokenLock) {
pToken = spiderInfo.getPTokenMap()[index];
pToken = spiderInfo.getPTokenMap().get(index);
}
if (pToken != null) {
// Get pToken from spider info, notify worker
@@ -953,7 +953,7 @@ public final class SpiderQueen implements Runnable {
if (null == pToken) {
// If failed, set the pToken "failed"
synchronized (mPTokenLock) {
spiderInfo.getPTokenMap()[index] = SpiderInfo.TOKEN_FAILED;
spiderInfo.getPTokenMap().put(index, SpiderInfo.TOKEN_FAILED);
}
}
@@ -1453,9 +1453,9 @@ public final class SpiderQueen implements Runnable {
// Clear TOKEN_FAILED for force request
if (force) {
synchronized (mPTokenLock) {
String pToken = spiderInfo.getPTokenMap()[index];
String pToken = spiderInfo.getPTokenMap().get(index);
if (SpiderInfo.TOKEN_FAILED.equals(pToken)) {
spiderInfo.getPTokenMap()[index] = null;
spiderInfo.getPTokenMap().remove(index);
}
}
}
@@ -1464,7 +1464,7 @@ public final class SpiderQueen implements Runnable {
// Get token
while (!mStoped) {
synchronized (mPTokenLock) {
pToken = spiderInfo.getPTokenMap()[index];
pToken = spiderInfo.getPTokenMap().get(index);
}
if (pToken == null) {
mRequestPTokenQueue.add(index);
@@ -1503,7 +1503,7 @@ public final class SpiderQueen implements Runnable {
// Get token
while (previousIndex >= 0 && !mStoped) {
synchronized (mPTokenLock) {
previousPToken = spiderInfo.getPTokenMap()[previousIndex];
previousPToken = spiderInfo.getPTokenMap().get(previousIndex);
}
if (previousPToken == null) {
mRequestPTokenQueue.add(previousIndex);