StageLoop

interface StageLoop<S : Stage<S>>(source)

可挂起的事件循环器。

StageLoop 内部持有可变状态,一个 StageLoop 实例建议同时只进行一个循环任务。

sealed FooStage : Stage<FooStage>() {
object Start : FooStage() { ... }
// ...
}

val stageLoop = ...
stageLoop.appendStage(FooStage.Start)

stageLoop.loop()

Author

ForteScarlet

Parameters

S

用于界定一定范围内的状态

See also

Properties

Link copied to clipboard
abstract val currentStage: S?

run正在执行的状态实例。 如果为null则代表没有循环在进行。

Functions

Link copied to clipboard
abstract fun appendStage(stage: S)

向事件队列尾部追加事件。

Link copied to clipboard
abstract suspend operator fun invoke(stage: S?)

根据提供的 stage 变更 currentStage 的状态并执行它(如果不为null的话)

Link copied to clipboard
abstract fun poll(): S?

取出下一个需要执行的状态。

Inherited functions

Link copied to clipboard
inline suspend fun <S : Stage<S>> StageLoop<S>.loop(crossinline condition: (next: S?) -> Boolean = { next -> next != null }, crossinline exceptionHandle: (Throwable) -> Unit = { e -> throw e })

通过提供的 StageLoop 进行循环。