Only keep looping while the actor is alive
[mudsync.git] / mudsync / networking.scm
index bb403f8f998fe1755076515114ba74f94590d870..f12a7e0c86578927bcfa53d18eef1afb6a532ffb 100644 (file)
@@ -17,7 +17,7 @@
 ;;; along with Mudsync.  If not, see <http://www.gnu.org/licenses/>.
 
 (define-module (mudsync networking)
-  #:use-module (8sync systems actors)
+  #:use-module (8sync actors)
   #:use-module (8sync agenda)
   #:use-module (ice-9 format)
   #:use-module (ice-9 match)
   ;; send input to this actor
   (send-input-to #:getter nm-send-input-to
                  #:init-keyword #:send-input-to)
-  (message-handler
+
+  (actions
+   #:allocation #:each-subclass
    #:init-value
-   (make-action-dispatch
+   (build-actions
     (start-listening
      (lambda* (actor message
                      #:key (server %default-server)
         (begin
           (nm-handle-line nm client client-id
                           (string-trim-right line #\return))
-          (loop))))
+          (when (actor-am-i-alive? nm)
+            (loop)))))
   (loop))
 
 (define (nm-handle-port-closed nm client client-id)