# SPDX-FileCopyrightText: ☭ Emery Hemingway # SPDX-License-Identifier: Unlicense import std/times import pkg/cps import sam/syndicate import sam/actors/timers proc now: float64 = getTime().toUnixFloat() runActor("timer-test") do (root: Facet): echo "actor calls boot proc with root facte ", root let ds = root.newDataspace() echo "new dataspace ", ds let h = publish(ds, "hello world!".toPreserves) echo "published to handle ", h onMessage(ds, grab()) do (v: Value): stderr.writeLine "observed message ", v message(ds, "hello world!".toPreserves) echo "sent a message" retract(ds, h) echo "retracted handle ", h # facet.sync(ds) root.onStop: echo "anonymous stop handler was invoked" echo "stopping actor" root.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() ]#