From 726b936ed3c059f77aa450e2a179541cdba49245 Mon Sep 17 00:00:00 2001 From: Tony Garnock-Jones Date: Tue, 29 Nov 2016 13:45:43 +1300 Subject: [PATCH] Example of supervision --- .../examples/actor/example-supervise.rkt | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 racket/syndicate/examples/actor/example-supervise.rkt diff --git a/racket/syndicate/examples/actor/example-supervise.rkt b/racket/syndicate/examples/actor/example-supervise.rkt new file mode 100644 index 0000000..a934ba7 --- /dev/null +++ b/racket/syndicate/examples/actor/example-supervise.rkt @@ -0,0 +1,29 @@ +#lang syndicate/actor +;; Shows the difference between a supervised exit and a supervised crash. + +(require/activate syndicate/supervise) +(require/activate syndicate/drivers/timestate) + +(supervise + (actor #:name 'ward + (on (message 'crash) + (log-info "Crashing") + (error 'ward "Eep!")) + (stop-when (message 'quit) + (log-info "Bye!")))) + +(define (monitor-interest-in thing) + (actor #:name (list 'monitor-interest-in thing) + (during (observe thing) + (on-start (log-info "Interest in ~v appeared" thing)) + (on-stop (log-info "Interest in ~v disappeared" thing))))) + +(monitor-interest-in 'crash) +(monitor-interest-in 'quit) + +(actor* #:name 'main + (sleep 1) + (send! 'crash) + (sleep 1) + (send! 'quit) + (sleep 1))