Use *init* and *cleanup* in existing actors.
[8sync.git] / 8sync / systems / irc.scm
index aad138d09bb62a9de32c5f6bfc1fa0614236040d..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))))
 
      (format socket "JOIN ~a~a" channel irc-eol))
    (irc-bot-channels irc-bot))
 
-  (<- irc-bot (actor-id irc-bot) 'main-loop))
+  (<- (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))
    ;;  'done)
    ;; Otherwise, let's read till the next line!
    (else
-    (<- irc-bot (actor-id irc-bot) 'main-loop))))
+    (<- (actor-id irc-bot) 'main-loop))))
 
 (define* (irc-bot-send-line-action irc-bot message
                                    channel line #:key emote?)