2019-10-08 17:17:51 +00:00
|
|
|
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(
|
2019-10-08 16:15:00 +00:00
|
|
|
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(
|
2019-10-08 16:15:00 +00:00
|
|
|
scheduleConfig: String,
|
|
|
|
noinline block: suspend () -> Unit
|
2019-10-10 10:43:52 +00:00
|
|
|
) = createSimpleScheduler(scheduleConfig).doOnce(block)
|