aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/at/hannibal2/skyhanni/utils
diff options
context:
space:
mode:
authorhannibal2 <24389977+hannibal00212@users.noreply.github.com>2024-01-20 20:21:00 +0100
committerhannibal2 <24389977+hannibal00212@users.noreply.github.com>2024-01-20 20:21:00 +0100
commit680b20370ad4563f202a08eae5713d0d1d7f9078 (patch)
tree49fad13bd420faa263e8dc28134468357a5cacca /src/main/java/at/hannibal2/skyhanni/utils
parentdd86bbaf6dd31b3b9c3340cf1ecf80eae1e94eff (diff)
downloadskyhanni-680b20370ad4563f202a08eae5713d0d1d7f9078.tar.gz
skyhanni-680b20370ad4563f202a08eae5713d0d1d7f9078.tar.bz2
skyhanni-680b20370ad4563f202a08eae5713d0d1d7f9078.zip
creating and using TimeLimitedCache and TimeLimitedSet instead of guava cache.
Diffstat (limited to 'src/main/java/at/hannibal2/skyhanni/utils')
-rw-r--r--src/main/java/at/hannibal2/skyhanni/utils/TimeLimitedCache.kt21
-rw-r--r--src/main/java/at/hannibal2/skyhanni/utils/TimeLimitedSet.kt14
2 files changed, 35 insertions, 0 deletions
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<K, V>(expireAfterWrite: Duration) {
+
+ private val cache = CacheBuilder.newBuilder()
+ .expireAfterWrite(expireAfterWrite.inWholeMilliseconds, TimeUnit.MILLISECONDS).build<K, V>()
+
+ 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<V> = 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<T>(expireAfterWrite: Duration) {
+
+ private val cache = TimeLimitedCache<T, Unit>(expireAfterWrite)
+
+ fun add(element: T) = cache.put(element, Unit)
+
+ fun contains(element: T): Boolean = cache.containsKey(element)
+
+ fun clear() = cache.clear()
+}