phoenix-channel / ch.kuon.phoenix / ExTimer / <init>

<init>

ExTimer(callback: Callback, timerCalc: (Int) -> Int)

Exponential backoff timer

Example from tests:

val waiter = Waiter()

var counter = 0
val timer = ExTimer({
    counter++
    waiter.resume()
}, { tries ->
    tries * 1000
})
// This is for the example, if you call
// scheduleTimeout() in a row, the last call "wins"
// This example will call the callback only once after
// 4 seconds then once again after 1 second
timer.scheduleTimeout() // fires after 1000
timer.scheduleTimeout() // fires after 2000
timer.scheduleTimeout() // fires after 3000
timer.reset()
timer.scheduleTimeout() // fires after 1000
timer.scheduleTimeout() // fires after 2000
timer.scheduleTimeout() // fires after 3000
timer.scheduleTimeout() // fires after 4000
waiter.await(5000, 1)
waiter.assertEquals(1, counter)

timer.reset()
timer.scheduleTimeout() // fires after 1000
waiter.await(2000, 1)
waiter.assertEquals(2, counter)