syndicate-nim/tests/test_timers.nim

42 lines
1.0 KiB
Nim

# SPDX-FileCopyrightText: ☭ Emery Hemingway
# SPDX-License-Identifier: Unlicense
import std/times
import pkg/cps
import syndicate
# import syndicate/actors/timers
proc now: float64 = getTime().toUnixFloat()
runActor("timer-test") do (root: Facet):
let ds = facet.newDataspace()
let h = facet.publish(ds, "hello world!".toPreserves)
facet.onMessage(ds, grab()) do (v: Value):
stderr.writeLine "observed message ", v
facet.message(ds, "hello world!".toPreserves)
facet.retract(h)
facet.sync(ds)
facet.onStop:
echo "anonymous stop handler was invoked"
echo "stopping actor"
facet.stopActor()
echo "actor stopped but still executing?"
#[
block:
# spawnTimers(ds)
onPublish(ds, grab(LaterThan(seconds: now()+1.0))) do:
stderr.writeLine "slept one second once"
onPublish(ds, grab(LaterThan(seconds: now()+1.0))) do:
stderr.writeLine "slept one second twice"
onPublish(ds, grab(LaterThan(seconds: now()+1.0))) do:
stderr.writeLine "slept one second thrice"
stopActor()
]#