diff options
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() +} |
