Use *init* and *cleanup* in existing actors.
authorChristopher Allan Webber <cwebber@dustycloud.org>
Thu, 5 Jan 2017 02:02:13 +0000 (20:02 -0600)
committerChristopher Allan Webber <cwebber@dustycloud.org>
Thu, 5 Jan 2017 02:02:13 +0000 (20:02 -0600)
* 8sync/repl.scm (<repl-manager>):
* 8sync/systems/irc.scm (<irc-bot>): Switch from an 'init action to the
implicit '*init* action.

* 8sync/systems/irc.scm (<irc-bot>, irc-bot-cleanup): Add *cleanup*
handler.

* demos/ircbot.scm:
* doc/8sync-new-manual.org: Drop some calls to 'init when
bootstrapping-messages since we now use '*init*.

8sync/repl.scm
8sync/systems/irc.scm
demos/ircbot.scm
doc/8sync-new-manual.org

index 006540367dcea540a8046bff154f17264e6f0770..98931edaf91689369b0a6ac07c6e14f6a74ea028 100644 (file)
@@ -36,7 +36,7 @@
            ;; @@: Should we add a stop action?
            #:init-value (build-actions
                          (*cleanup* repl-manager-cleanup)
-                         (init repl-manager-init))))
+                         (*init* repl-manager-init))))
 
 (define (repl-manager-cleanup repl-manager message)
   ;; Close the socket, if open
@@ -55,4 +55,3 @@
   (while (actor-alive? repl-manager)
     (poll-coop-repl-server server)
     (8sleep (repl-manager-poll-every repl-manager))))
-
index 40d02eb6eb1a6a34c4464e43e25d7fb15c9fd9f5..e6ad361ae322cfa7bc8308629c24840f8f3b173d 100755 (executable)
   (socket #:accessor irc-bot-socket)
   (actions #:allocation #:each-subclass
            #:init-value (build-actions
-                         (init irc-bot-init)
+                         (*init* irc-bot-init)
+                         (*cleanup* irc-bot-cleanup)
                          (main-loop irc-bot-main-loop)
                          (send-line irc-bot-send-line-action))))
 
 
   (<- (actor-id irc-bot) 'main-loop))
 
+(define (irc-bot-cleanup irc-bot message)
+  (close (irc-bot-socket irc-bot)))
+
 (define (irc-bot-main-loop irc-bot message)
   (define socket (irc-bot-socket irc-bot))
   (define line (string-trim-right (read-line socket) #\return))
index c1c573e08ac24983ddda378c9cde95fc08605633..6f32d61de746f07f3db3240d7f6144ec96ad06eb 100755 (executable)
      (repl
       (bootstrap-actor* hive <repl-manager> "repl"))))
 
-  (define initial-messages
-    (if repl
-        (list (bootstrap-message hive irc-bot 'init)
-              (bootstrap-message hive repl-manager 'init))
-        (list (bootstrap-message hive irc-bot 'init))))
-
   ;; TODO: load REPL
-  (run-hive hive initial-messages))
+  (run-hive hive '()))
 
 (define (main args)
   (define parsed-args (parse-args "ircbot.scm" args))
index bd6bb319fad467e154d23b77122209099d523d22..c4cf67ef337e0f19c56e99a289db0a8772db60ec 100644 (file)
@@ -165,7 +165,7 @@ yet.  Time to fix that!
                       #:username username
                       #:server server
                       #:channels channels))
-  (run-hive hive (list (bootstrap-message hive irc-bot 'init))))
+  (run-hive hive '()))
 #+END_SRC
 
 Actors are connected to something called a "hive", which is a
@@ -434,8 +434,7 @@ Redefine run-bot like so:
       (bootstrap-actor* hive <repl-manager> "repl"
                           #:path repl-path))
 
-    (run-hive hive (list (bootstrap-message hive irc-bot 'init)
-                         (bootstrap-message hive repl-manager 'init))))
+    (run-hive hive '()))
 #+END_SRC
 
 If we put a call to run-bot at the bottom of our file we can call it,