actors: Switch hive-create-actor[*] to match create-actor[*]
authorChristopher Allan Webber <cwebber@dustycloud.org>
Tue, 26 Apr 2016 21:07:12 +0000 (16:07 -0500)
committerChristopher Allan Webber <cwebber@dustycloud.org>
Tue, 26 Apr 2016 21:07:12 +0000 (16:07 -0500)
* 8sync/systems/actors.scm (hive-create-actor, hive-create-actor*):
  Adjust syntax to match that of create-actor and create-actor*.
* demos/actors/botherbotherbother.scm (main):
* tests/test-actors.scm: Adjust to use.

8sync/systems/actors.scm
demos/actors/botherbotherbother.scm
tests/test-actors.scm

index f6da0bdf0bf77623f1f25606534271c60843e76b..119f8a40a1256af45eb52221322c961f0229bed9 100644 (file)
@@ -560,25 +560,13 @@ that method for documentation."
     ;; return the actor id
     actor-id))
 
-(define* (hive-create-actor hive actor-class
-                            #:key
-                            (init '())
-                            id-cookie)
+(define* (hive-create-actor hive actor-class #:rest init)
   (%hive-create-actor hive actor-class
-                      init id-cookie))
-
-(define-syntax hive-create-actor*
-  (syntax-rules ()
-    "Create an instance of actor-class attached to this hive.
-Return the new actor's id.
+                      init #f))
 
-Used internally, and used for bootstrapping a fresh hive.
-
-Note that actors should generally not call this method directly.
-Instead, actors should call create-actor."
-    ((_ args ... (init-args ...))
-     (hive-create-actor args ...
-                        #:init (list init-args ...)))))
+(define* (hive-create-actor* hive actor-class id-cookie #:rest init)
+  (%hive-create-actor hive actor-class
+                      init id-cookie))
 
 
 ;; TODO: Give actors this instead of the actual hive reference
index 5a43a8bd9e65a10e9fb4821dbd6acd4b1d29722e..5f294fd8d46097c2c3d41bda4a943ef068cc60af 100755 (executable)
 (define (main . args)
   (define agenda (make-agenda))
   (define hive (make-hive))
-  (define professor (hive-create-actor hive <professor>))
+  (define professor (hive-create-actor* hive <professor> "prof"))
   (define namegen (student-name-generator))
   (define students
     (map
      (lambda _
-       (hive-create-actor* hive <student>
-                           (#:name (namegen))))
+       (let ((name (namegen)))
+         (hive-create-actor* hive <student> name
+                             #:name name)))
      (iota num-students)))
 
   ;; Bootstrap each student into bothering-professor mode.
index 2b5298c81e7e73059a7f46950cfcceabf928667d..15191c4bbbc00b6582f9ffb643d33a5d119b2a07 100644 (file)
    (~display "lazy-rep> I'm not answering that.\n")))
 
 (let* ((hive (make-hive))
-       (customer (hive-create-actor hive <antsy-caller>
-                                    #:id-cookie "antsy-caller"))
-       (diligent-rep (hive-create-actor hive <diligent-rep>
-                                        #:id-cookie "diligent-rep"))
-       (lazy-rep (hive-create-actor hive <lazy-rep>
-                                    #:id-cookie "lazy-rep")))
+       (customer (hive-create-actor* hive <antsy-caller> "antsy-caller"))
+       (diligent-rep (hive-create-actor* hive <diligent-rep> "diligent-rep"))
+       (lazy-rep (hive-create-actor* hive <lazy-rep> "lazy-rep")))
   ;; * Playing a tape of a diligent service rep *
   (parameterize ((%record-out (open-output-string)))
     (let* ((result (ez-run-hive