diff options
author | hannibal2 <24389977+hannibal00212@users.noreply.github.com> | 2024-01-20 20:21:00 +0100 |
---|---|---|
committer | hannibal2 <24389977+hannibal00212@users.noreply.github.com> | 2024-01-20 20:21:00 +0100 |
commit | 680b20370ad4563f202a08eae5713d0d1d7f9078 (patch) | |
tree | 49fad13bd420faa263e8dc28134468357a5cacca /src/main/java/at/hannibal2/skyhanni/utils | |
parent | dd86bbaf6dd31b3b9c3340cf1ecf80eae1e94eff (diff) | |
download | skyhanni-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.kt | 21 | ||||
-rw-r--r-- | src/main/java/at/hannibal2/skyhanni/utils/TimeLimitedSet.kt | 14 |
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() +} |