All Downloads are FREE. Search and download functionalities are using the official Maven repository.

net.pechorina.kairos.automat.Transition.kt Maven / Gradle / Ivy

The newest version!
package net.pechorina.kairos.automat

data class Transition(val source: State, val target: State, val event: Event, val action: Action? = null) {
    fun transit(automat: Automat): State {

        source.onExit?.let {
            it(this, automat)
        }

        automat.listeners().forEach { it.stateExited(source) }

        target.onEntry?.let {
            it(this, automat)
        }

        automat.listeners().forEach { it.stateEntered(target) }
        automat.listeners().forEach { it.stateChanged(source, target) }

        action?.invoke(this, automat)

        automat.listeners().forEach { it.transition(this) }

        return target
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy