Timer¶
The Timer
class represents a timer that fires after an expiration
time, and then fires at an interval. When a Timer
fires, it calls
the apply
method of the TimerNotify
object that was passed to it
when it was created.
The following example waits 5 seconds and then fires every 2
seconds, and when it fires the TimerNotify
object prints how many
times it has been called:
use "time"
actor Main
new create(env: Env) =>
let timers = Timers
let timer = Timer(Notify(env), 5_000_000_000, 2_000_000_000)
timers(consume timer)
class Notify is TimerNotify
let _env: Env
var _counter: U32 = 0
new iso create(env: Env) =>
_env = env
fun ref apply(timer: Timer, count: U64): Bool =>
_env.out.print(_counter.string())
_counter = _counter + 1
true
class ref Timer
Constructors¶
create¶
Create a new timer. The expiration time should be a nanosecond count until the first expiration. The interval should also be in nanoseconds.
new iso create(
notify: TimerNotify iso,
expiration: U64 val,
interval: U64 val = 0)
: Timer iso^
Parameters¶
- notify: TimerNotify iso
- expiration: U64 val
- interval: U64 val = 0
Returns¶
- Timer iso^
abs¶
Creates a new timer with an absolute expiration time rather than a relative time. The expiration time is wall-clock adjusted system time.
new ref abs(
notify: TimerNotify ref,
expiration: (I64 val , I64 val),
interval: U64 val = 0)
: Timer ref^
Parameters¶
- notify: TimerNotify ref
- expiration: (I64 val , I64 val)
- interval: U64 val = 0
Returns¶
- Timer ref^