From 5565a603538108b4dd7e62893cb95d36f3385d0f Mon Sep 17 00:00:00 2001 From: Helmut Merz Date: Tue, 17 Jun 2025 13:35:46 +0200 Subject: [PATCH] actor: extract common code to ac-step function --- core/actor.lisp | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/core/actor.lisp b/core/actor.lisp index 8b4fe35..3069130 100644 --- a/core/actor.lisp +++ b/core/actor.lisp @@ -54,11 +54,14 @@ (:method ((tsk async:task) bhv) (let ((msg (async:rcv tsk))) (unless (eq (content msg) +quit-message+) - (let ((*self* tsk)) - (handler-case (funcall bhv msg) - (error (error) (util:lg :error "behavior" msg error)))) + (ac-step tsk bhv msg) (ac-loop tsk (async:behavior tsk)))))) +(defun ac-step (tsk bhv msg) + (let ((*self* tsk)) + (handler-case (funcall bhv msg) + (error (error) (util:lg :error "behavior" msg error))))) + ;;;; the core (classical, i.e. Hewitt) actor API (defun create (bhv) @@ -79,10 +82,8 @@ (if ok (progn (async:set-status tsk :running) - (let ((*self* tsk)) - (handler-case (funcall bhv msg) - (error (error) (util:lg :error "behavior" msg error))) - (ac-loop tsk (async:behavior tsk)))) + (ac-step tsk bhv msg) + (ac-loop tsk (async:behavior tsk))) (async:set-status tsk :suspended)))) (defmethod send ((tsk async:restartable-task) msg)