| enum class Event { |
| ON_CREATE, ON_START, ON_STOP, ON_DESTROY; |
| companion object { |
| @JvmStatic |
| fun upTo(state: State): Event? { |
| return when(state) { |
| State.ENQUEUED -> ON_CREATE |
| State.RUNNING -> ON_START |
| State.BLOCKED -> ON_STOP |
| else -> null |
| } |
| } |
| } |
| } |
| |
| enum class State { |
| ENQUEUED, RUNNING, SUCCEEDED, FAILED, BLOCKED, CANCELLED; |
| val isFinished: Boolean |
| get() = this == SUCCEEDED || this == FAILED || this == CANCELLED |
| fun isAtLeast(state: State): Boolean { |
| return compareTo(state) >= 0 |
| } |
| companion object { |
| fun done(state: State) = state.isFinished |
| } |
| } |