syndicate-2017/racket/syndicate/examples/actor/timestate.rkt

24 lines
907 B
Racket
Raw Normal View History

2016-10-31 21:36:59 +00:00
#lang syndicate/actor
(require/activate syndicate/drivers/timestate)
(spawn #:name 'demo-timeout
2016-10-31 21:36:59 +00:00
(on-start (printf "Starting demo-timeout\n"))
(on-stop (printf "Stopping demo-timeout\n"))
(stop-when-timeout 3000 (printf "Three second timeout fired\n")))
(spawn #:name 'demo-later-than
2016-10-31 21:36:59 +00:00
(on-start (printf "Starting demo-later-than\n"))
(on-stop (printf "Stopping demo-later-than\n"))
(field [deadline (+ (current-inexact-milliseconds) 5000)])
(stop-when (asserted (later-than (deadline)))
(printf "Deadline expired\n")))
2016-10-31 21:42:38 +00:00
(spawn #:name 'demo-updating-later-than
2016-10-31 21:42:38 +00:00
(field [deadline (current-inexact-milliseconds)])
(field [counter 0])
(on #:when (< (counter) 10) (asserted (later-than (deadline)))
(printf "Tick ~v\n" (counter))
(counter (+ (counter) 1))
(deadline (+ (deadline) 1000))))