krontab/src/commonMain/kotlin/com/insanusmokrassar/krontab/Executes.kt

33 lines
980 B
Kotlin
Raw Normal View History

package com.insanusmokrassar.krontab
2019-10-05 10:34:59 +00:00
2019-10-10 10:43:52 +00:00
import com.soywiz.klock.DateTime
import kotlinx.coroutines.delay
suspend inline fun KronScheduler.doWhile(noinline block: suspend () -> Boolean) {
do {
delay(next().unixMillisLong - DateTime.now().unixMillisLong)
} while (block())
}
suspend inline fun doWhile(
scheduleConfig: String,
noinline block: suspend () -> Boolean
) = createSimpleScheduler(scheduleConfig).doWhile(block)
suspend inline fun KronScheduler.doInfinity(noinline block: suspend () -> Unit) = doWhile {
2019-10-05 10:34:59 +00:00
block()
true
}
2019-10-10 10:43:52 +00:00
suspend inline fun doInfinity(
scheduleConfig: String,
noinline block: suspend () -> Unit
2019-10-10 10:43:52 +00:00
) = createSimpleScheduler(scheduleConfig).doInfinity(block)
2019-10-05 10:34:59 +00:00
2019-10-10 10:43:52 +00:00
suspend inline fun KronScheduler.doOnce(noinline block: suspend () -> Unit) = doWhile {
2019-10-05 10:34:59 +00:00
block()
false
}
2019-10-10 10:43:52 +00:00
suspend inline fun doOnce(
scheduleConfig: String,
noinline block: suspend () -> Unit
2019-10-10 10:43:52 +00:00
) = createSimpleScheduler(scheduleConfig).doOnce(block)