syndicate-nim/tests/test_timers.nim

43 lines
1.0 KiB
Nim
Raw Normal View History

2023-07-13 14:07:04 +00:00
# SPDX-FileCopyrightText: ☭ Emery Hemingway
# SPDX-License-Identifier: Unlicense
import std/times
2024-02-15 10:52:12 +00:00
import pkg/cps
import syndicate
# import syndicate/actors/timers
2023-07-13 14:07:04 +00:00
proc now: float64 = getTime().toUnixFloat()
2024-02-15 10:52:12 +00:00
proc main() {.syndicate.} =
let ds = newDataspace()
let h = publish(ds, "hello world!".toPreserves)
2024-02-16 12:58:17 +00:00
#onMessage(ds, grab()) do (v: Value):
# stderr.writeLine "observed message ", v
2024-02-15 10:52:12 +00:00
message(ds, "hello world!".toPreserves)
retract(h)
2024-02-15 13:42:58 +00:00
sync(ds)
2024-02-15 14:34:13 +00:00
onStop:
2024-02-15 19:50:11 +00:00
echo "anonymous stop handler was invoked"
2024-02-15 14:34:13 +00:00
2024-02-15 13:42:58 +00:00
echo "stopping actor"
stopActor()
echo "actor stopped but still executing?"
2024-02-15 10:52:12 +00:00
#[
block:
2024-02-16 12:58:17 +00:00
# spawnTimers(ds)
2024-02-15 10:52:12 +00:00
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"
2024-02-15 14:34:13 +00:00
stopActor()
2024-02-15 10:52:12 +00:00
]#
bootActor("main", whelp main())