# 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() ]#