actor: extract common code to ac-step function
This commit is contained in:
parent
91e52e7437
commit
5565a60353
1 changed files with 8 additions and 7 deletions
|
@ -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)
|
||||
|
|
Loading…
Add table
Reference in a new issue