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
(defun create (bhv)
(let ((tsk (async:make-task bhv :restartable t)))
(start tsk bhv)
tsk))
(async:make-task bhv :restartable t))
(defgeneric send (tsk msg)
(:method ((tsk async:mailbox) msg)
;(util:lgi msg)
(async:snd tsk msg)))
(defun become (bhv)
(set-bhv *self* bhv)
bhv)
(set-bhv *self* bhv))
;;;; handling restartable tasks
@ -82,13 +78,14 @@
(multiple-value-bind (msg ok) (async:try-rcv tsk)
(if ok
(if (eq (content msg) +quit-message+)
(progn (async:set-status tsk :stopped) nil)
(async:set-status tsk :stopped)
(progn
(async:set-status tsk :running)
(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)))))
(progn (async:set-status tsk :suspended) bhv))))
(async:set-status tsk :suspended))))
(defmethod send ((tsk async:restartable-task) msg)
(let ((status (async:get-status tsk)))

View file

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