in remote-robot/src/main/kotlin/com/intellij/remoterobot/utils/RepeatUtils.kt [88:110]
fun repeatInTime(
duration: Duration,
interval: Duration = Duration.ofMillis(500),
isLogEnabled: Boolean = false,
condition: () -> Boolean
): Boolean {
val endTime = System.currentTimeMillis() + duration.toMillis()
var now = System.currentTimeMillis()
while (now < endTime) {
val isHappen = if (isLogEnabled) {
step("waiting(${endTime - now}ms left)") { return@step condition() }
} else {
condition()
}
if (isHappen)
return true
else {
Thread.sleep(interval.toMillis())
}
now = System.currentTimeMillis()
}
return false
}