summaryrefslogtreecommitdiff
path: root/src/main/java/at/hannibal2/skyhanni/utils
diff options
context:
space:
mode:
authorEmpa <42304516+ItsEmpa@users.noreply.github.com>2024-06-22 09:00:20 +0200
committerGitHub <noreply@github.com>2024-06-22 09:00:20 +0200
commit6b7c9d2455be319321d237083cbe2648246ee572 (patch)
treefd6e60b5d8a0d33b744a464b635953012ef7ea04 /src/main/java/at/hannibal2/skyhanni/utils
parent4c1f34ff39c9ab59991648cc1a7c771ef7b1d8a2 (diff)
downloadskyhanni-6b7c9d2455be319321d237083cbe2648246ee572.tar.gz
skyhanni-6b7c9d2455be319321d237083cbe2648246ee572.tar.bz2
skyhanni-6b7c9d2455be319321d237083cbe2648246ee572.zip
Fix Fishing Bait Warning (#2135)
Diffstat (limited to 'src/main/java/at/hannibal2/skyhanni/utils')
-rw-r--r--src/main/java/at/hannibal2/skyhanni/utils/TimeLimitedCache.kt4
-rw-r--r--src/main/java/at/hannibal2/skyhanni/utils/TimeLimitedSet.kt8
2 files changed, 9 insertions, 3 deletions
diff --git a/src/main/java/at/hannibal2/skyhanni/utils/TimeLimitedCache.kt b/src/main/java/at/hannibal2/skyhanni/utils/TimeLimitedCache.kt
index e17389c52..018c858fa 100644
--- a/src/main/java/at/hannibal2/skyhanni/utils/TimeLimitedCache.kt
+++ b/src/main/java/at/hannibal2/skyhanni/utils/TimeLimitedCache.kt
@@ -4,10 +4,10 @@ import com.google.common.cache.CacheBuilder
import java.util.concurrent.TimeUnit
import kotlin.time.Duration
-class TimeLimitedCache<K: Any, V: Any>(
+class TimeLimitedCache<K : Any, V : Any>(
expireAfterWrite: Duration,
private val removalListener: (K?, V?) -> Unit = { _, _ -> },
-): Iterable<Map.Entry<K, V>> {
+) : Iterable<Map.Entry<K, V>> {
private val cache = CacheBuilder.newBuilder()
.expireAfterWrite(expireAfterWrite.inWholeMilliseconds, TimeUnit.MILLISECONDS)
diff --git a/src/main/java/at/hannibal2/skyhanni/utils/TimeLimitedSet.kt b/src/main/java/at/hannibal2/skyhanni/utils/TimeLimitedSet.kt
index c0626fccb..4c4a35151 100644
--- a/src/main/java/at/hannibal2/skyhanni/utils/TimeLimitedSet.kt
+++ b/src/main/java/at/hannibal2/skyhanni/utils/TimeLimitedSet.kt
@@ -5,7 +5,7 @@ import kotlin.time.Duration
class TimeLimitedSet<T : Any>(
expireAfterWrite: Duration,
private val removalListener: (T) -> Unit = {},
-) {
+) : Iterable<T> {
private val cache = TimeLimitedCache<T, Unit>(expireAfterWrite) { key, _ -> key?.let { removalListener(it) } }
@@ -13,12 +13,16 @@ class TimeLimitedSet<T : Any>(
cache[element] = Unit
}
+ operator fun plusAssign(element: T) = add(element)
+
fun addIfAbsent(element: T) {
if (!contains(element)) add(element)
}
fun remove(element: T) = cache.remove(element)
+ operator fun minusAssign(element: T) = remove(element)
+
operator fun contains(element: T): Boolean = cache.containsKey(element)
fun clear() = cache.clear()
@@ -26,4 +30,6 @@ class TimeLimitedSet<T : Any>(
fun toSet(): Set<T> = cache.keys().let { keys ->
if (keys.isEmpty()) emptySet() else keys.toSet()
}
+
+ override fun iterator(): Iterator<T> = toSet().iterator()
}