Compare commits

...

2 commits

2 changed files with 7 additions and 11 deletions

View file

@ -62,18 +62,14 @@
;;;; the core (classical, i.e. Hewitt) actor API ;;;; the core (classical, i.e. Hewitt) actor API
(defun create (bhv) (defun create (bhv)
(let ((tsk (async:make-task bhv :restartable t))) (async:make-task bhv :restartable t))
(start tsk bhv)
tsk))
(defgeneric send (tsk msg) (defgeneric send (tsk msg)
(:method ((tsk async:mailbox) msg) (:method ((tsk async:mailbox) msg)
;(util:lgi msg)
(async:snd tsk msg))) (async:snd tsk msg)))
(defun become (bhv) (defun become (bhv)
(set-bhv *self* bhv) (set-bhv *self* bhv))
bhv)
;;;; handling restartable tasks ;;;; handling restartable tasks
@ -82,13 +78,14 @@
(multiple-value-bind (msg ok) (async:try-rcv tsk) (multiple-value-bind (msg ok) (async:try-rcv tsk)
(if ok (if ok
(if (eq (content msg) +quit-message+) (if (eq (content msg) +quit-message+)
(progn (async:set-status tsk :stopped) nil) (async:set-status tsk :stopped)
(progn (progn
(async:set-status tsk :running) (async:set-status tsk :running)
(let ((*self* tsk)) (let ((*self* tsk))
(funcall bhv msg) (handler-case (funcall bhv msg)
(error (error) (util:lg :error "handling message" msg error)))
(ac-loop tsk (async:behavior tsk))))) (ac-loop tsk (async:behavior tsk)))))
(progn (async:set-status tsk :suspended) bhv)))) (async:set-status tsk :suspended))))
(defmethod send ((tsk async:restartable-task) msg) (defmethod send ((tsk async:restartable-task) msg)
(let ((status (async:get-status tsk))) (let ((status (async:get-status tsk)))

View file

@ -100,8 +100,7 @@
(dolist (ctx (alx:hash-table-values (services *root*))) (dolist (ctx (alx:hash-table-values (services *root*)))
(funcall (config:shutdown (config ctx)) ctx)) (funcall (config:shutdown (config ctx)) ctx))
;(actor:stop *root*) ;(actor:stop *root*)
(async:finish) (async:finish))
)
(defun add-action (ctx pat hdlr) (defun add-action (ctx pat hdlr)
(let* ((acts (actions ctx)) (let* ((acts (actions ctx))