|
|
|
|
@ -13,6 +13,7 @@ class ExpiringLruCache<T>(
|
|
|
|
|
|
|
|
|
|
private val cache = SieveCache<CacheKey, ExpiringValue<T>>(maxSize)
|
|
|
|
|
|
|
|
|
|
@Synchronized
|
|
|
|
|
operator fun get(key: CacheKey): T? {
|
|
|
|
|
val value = cache[key] ?: return null
|
|
|
|
|
if (value.isExpired) {
|
|
|
|
|
@ -22,21 +23,28 @@ class ExpiringLruCache<T>(
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
operator fun set(key: CacheKey, value: T) {
|
|
|
|
|
cache.put(key, ExpiringValue(value, lifetime, timeUnit))
|
|
|
|
|
val value = ExpiringValue(value, lifetime, timeUnit)
|
|
|
|
|
synchronized(this) {
|
|
|
|
|
cache.put(key, value)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Synchronized
|
|
|
|
|
fun clear() {
|
|
|
|
|
cache.evictAll()
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Synchronized
|
|
|
|
|
fun trimToSize(size: Int) {
|
|
|
|
|
cache.trimToSize(size)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Synchronized
|
|
|
|
|
fun remove(key: CacheKey) {
|
|
|
|
|
cache.remove(key)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Synchronized
|
|
|
|
|
fun removeAll(source: MangaSource) {
|
|
|
|
|
cache.removeIf { key, _ -> key.source == source }
|
|
|
|
|
}
|
|
|
|
|
|