From 680b20370ad4563f202a08eae5713d0d1d7f9078 Mon Sep 17 00:00:00 2001 From: hannibal2 <24389977+hannibal00212@users.noreply.github.com> Date: Sat, 20 Jan 2024 20:21:00 +0100 Subject: creating and using TimeLimitedCache and TimeLimitedSet instead of guava cache. --- .../at/hannibal2/skyhanni/utils/TimeLimitedCache.kt | 21 +++++++++++++++++++++ .../at/hannibal2/skyhanni/utils/TimeLimitedSet.kt | 14 ++++++++++++++ 2 files changed, 35 insertions(+) create mode 100644 src/main/java/at/hannibal2/skyhanni/utils/TimeLimitedCache.kt create mode 100644 src/main/java/at/hannibal2/skyhanni/utils/TimeLimitedSet.kt (limited to 'src/main/java/at/hannibal2/skyhanni/utils') diff --git a/src/main/java/at/hannibal2/skyhanni/utils/TimeLimitedCache.kt b/src/main/java/at/hannibal2/skyhanni/utils/TimeLimitedCache.kt new file mode 100644 index 000000000..8aab176ef --- /dev/null +++ b/src/main/java/at/hannibal2/skyhanni/utils/TimeLimitedCache.kt @@ -0,0 +1,21 @@ +package at.hannibal2.skyhanni.utils + +import com.google.common.cache.CacheBuilder +import java.util.concurrent.TimeUnit +import kotlin.time.Duration + +class TimeLimitedCache(expireAfterWrite: Duration) { + + private val cache = CacheBuilder.newBuilder() + .expireAfterWrite(expireAfterWrite.inWholeMilliseconds, TimeUnit.MILLISECONDS).build() + + fun put(key: K, value: V) = cache.put(key, value) + + fun getOrNull(key: K): V? = cache.getIfPresent(key) + + fun clear() = cache.invalidateAll() + + fun values(): MutableCollection = cache.asMap().values + + fun containsKey(key: K): Boolean = cache.getIfPresent(key) != null +} diff --git a/src/main/java/at/hannibal2/skyhanni/utils/TimeLimitedSet.kt b/src/main/java/at/hannibal2/skyhanni/utils/TimeLimitedSet.kt new file mode 100644 index 000000000..97caf70ad --- /dev/null +++ b/src/main/java/at/hannibal2/skyhanni/utils/TimeLimitedSet.kt @@ -0,0 +1,14 @@ +package at.hannibal2.skyhanni.utils + +import kotlin.time.Duration + +class TimeLimitedSet(expireAfterWrite: Duration) { + + private val cache = TimeLimitedCache(expireAfterWrite) + + fun add(element: T) = cache.put(element, Unit) + + fun contains(element: T): Boolean = cache.containsKey(element) + + fun clear() = cache.clear() +} -- cgit