(loop sleeper-loop))))
(define (sleeper-loop actor message)
- (while (actor-am-i-alive? actor)
+ (while (actor-alive? actor)
(display "Zzzzzzzz....\n")
;; Sleep for one second
(8sleep 1)))
(let* ((hive (make-hive))
(sleeper (hive-create-actor hive <sleeper>)))
- (ez-run-hive hive (list (bootstrap-message hive sleeper 'loop))))
+ (run-hive hive (list (bootstrap-message hive sleeper 'loop))))
#+END_SRC
We see some particular things in this example.
"8sleep" is like Guile's "sleep" method, except it is non-blocking
and will always yield to the scheduler.
-Our while loop also checks "actor-am-i-alive?" to see whether or not
+Our while loop also checks "actor-alive?" to see whether or not
it is still registered.
In general, if you keep a loop in your actor that regularly yields
to the scheduler, you should check this.
""
(set! (worker-task-left worker) difficulty)
(display "worker> Whatever you say, boss!\n")
- (while (and (actor-am-i-alive? worker)
+ (while (and (actor-alive? worker)
(> (worker-task-left worker) 0))
(display "worker> *huff puff*\n")
(set! (worker-task-left worker)
(worker (hive-create-actor hive <worker>))
(manager (hive-create-actor hive <manager>
#:direct-report worker)))
- (ez-run-hive hive (list (bootstrap-message hive manager 'assign-task 5))))
+ (run-hive hive (list (bootstrap-message hive manager 'assign-task 5))))
#+END_SRC
#+BEGIN_SRC text
(if still-working
(begin (display "manager> Harumph!\n")
(8sleep 1)
- (when (actor-am-i-alive? manager)
+ (when (actor-alive? manager)
(manager-micromanage-loop manager)))
(begin (display "manager> Oh! I guess you can go home then.\n")
(<- manager (manager-direct-report manager) 'go-home)))))
No new messages will be sent to it.
Ka-poof!
-** Extended example: an IRC bot battle
-
-** Adding a "rankings" web page
-
** Writing our own <irc-bot> from scratch
* API reference
+* Systems reference
+** IRC
+** Web / HTTP
+** COMMENT Websockets