Skip to content

Commit cffe88e

Browse files
committed
Events: Use Set to store channels (to improve 'remove' perf)
1 parent df8730a commit cffe88e

File tree

2 files changed

+3
-3
lines changed

2 files changed

+3
-3
lines changed

evas/src/commonMain/kotlin/io/sellmair/evas/AtomicSnapshot.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import kotlinx.atomicfu.atomic
77
import kotlinx.atomicfu.loop
88
import kotlin.concurrent.Volatile
99

10-
internal fun <T> AtomicSnapshotList(initial: MutableList<T> = mutableListOf()): AtomicSnapshot<MutableList<T>, List<T>> =
10+
internal fun <T> AtomicSnapshotList(initial: MutableCollection<T> = mutableListOf()): AtomicSnapshot<MutableCollection<T>, List<T>> =
1111
AtomicSnapshot(initial, { it.toList() })
1212

1313
internal fun <K, V> AtomicSnapshotMap(initial: MutableMap<K, V> = mutableMapOf()): AtomicSnapshot<MutableMap<K, V>, Map<K, V>> =

evas/src/commonMain/kotlin/io/sellmair/evas/Events.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -312,7 +312,7 @@ Implementation!
312312
internal class EventsImpl : Events {
313313
private val unconfinedScope = CoroutineScope(Dispatchers.Unconfined)
314314

315-
internal val typedChannels = AtomicSnapshotMap<KClass<*>, AtomicSnapshot<MutableList<Channel<Dispatch<*>>>, List<Channel<Dispatch<*>>>>>()
315+
internal val typedChannels = AtomicSnapshotMap<KClass<*>, AtomicSnapshot<MutableCollection<Channel<Dispatch<*>>>, List<Channel<Dispatch<*>>>>>()
316316

317317
internal class Dispatch<out T>(val event: T, val job: CompletableJob?)
318318

@@ -322,7 +322,7 @@ internal class EventsImpl : Events {
322322

323323
/* Register Channel in this even bus */
324324
typedChannels.write { mutableTypedChannels ->
325-
val channels = mutableTypedChannels.getOrPut(clazz) { AtomicSnapshotList() }
325+
val channels = mutableTypedChannels.getOrPut(clazz) { AtomicSnapshotList(mutableSetOf()) }
326326

327327
channels.write { mutableChannels ->
328328
@Suppress("UNCHECKED_CAST")

0 commit comments

Comments
 (0)