You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
20 lines
653 B
20 lines
653 B
package net.aiterp.git.ykonsole2.infrastructure.drivers
|
|
|
|
import net.aiterp.git.ykonsole2.domain.models.tryMilestone
|
|
import net.aiterp.git.ykonsole2.domain.runtime.*
|
|
import net.aiterp.git.ykonsole2.infrastructure.drivers.abstracts.PassiveDriver
|
|
import java.util.concurrent.ConcurrentHashMap
|
|
|
|
class MilestoneChecker : PassiveDriver() {
|
|
private val milestoneMap = ConcurrentHashMap<Value, List<Value>>()
|
|
|
|
override suspend fun onEvent(event: Event, output: FlowBus<Event>) {
|
|
if (event is Disconnected) {
|
|
milestoneMap.clear()
|
|
}
|
|
|
|
if (event is ValuesReceived) {
|
|
milestoneMap.tryMilestone(event)?.let { output.emit(it) }
|
|
}
|
|
}
|
|
}
|