Files
event-demo/backend/src/main/kotlin/eventDemo/libs/bus/BusInMemory.kt
T
flecomte 774e80d9d5
Tests / build (pull_request) Successful in 7m44s
Tests / test (pull_request) Failing after 10m37s
Tests / lint (pull_request) Successful in 14m30s
feature: init kotlin compose multiplatforme
2026-08-06 21:28:57 +02:00

32 lines
815 B
Kotlin

package eventDemo.libs.bus
import io.github.oshai.kotlinlogging.KotlinLogging
import io.github.oshai.kotlinlogging.withLoggingContext
import kotlin.reflect.KClass
class BusInMemory<E>(
val name: KClass<*> = BusInMemory::class,
) : Bus<E> {
private val logger = KotlinLogging.logger(name.qualifiedName.toString())
private val subscribers: MutableList<(E) -> Unit> = mutableListOf()
override fun publish(item: E) {
withLoggingContext("busItem" to item.toString()) {
logger.info { "Item sent to the bus" }
subscribers
.forEach {
it(item)
}
}
}
override fun subscribe(block: (E) -> Unit): Bus.Subscription {
subscribers.add(block)
return object : Bus.Subscription {
override fun close() {
subscribers.remove(block)
}
}
}
}