Fixup! New SpiderInfo serialization format
Don't serialize thousands of nulls
This commit is contained in:
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);
|
||||
|
||||
Reference in new issue
Block a user