Compare commits
No commits in common. "4503391b228b2679b6cc4b0231131f87f3040f4f" and "17899b934c0e9c3c7946a731aefa07d7b1269a7d" have entirely different histories.
4503391b22
...
17899b934c
2 changed files with 11 additions and 7 deletions
|
@ -62,14 +62,18 @@
|
|||
;;;; the core (classical, i.e. Hewitt) actor API
|
||||
|
||||
(defun create (bhv)
|
||||
(async:make-task bhv :restartable t))
|
||||
(let ((tsk (async:make-task bhv :restartable t)))
|
||||
(start tsk bhv)
|
||||
tsk))
|
||||
|
||||
(defgeneric send (tsk msg)
|
||||
(:method ((tsk async:mailbox) msg)
|
||||
;(util:lgi msg)
|
||||
(async:snd tsk msg)))
|
||||
|
||||
(defun become (bhv)
|
||||
(set-bhv *self* bhv))
|
||||
(set-bhv *self* bhv)
|
||||
bhv)
|
||||
|
||||
;;;; handling restartable tasks
|
||||
|
||||
|
@ -78,14 +82,13 @@
|
|||
(multiple-value-bind (msg ok) (async:try-rcv tsk)
|
||||
(if ok
|
||||
(if (eq (content msg) +quit-message+)
|
||||
(async:set-status tsk :stopped)
|
||||
(progn (async:set-status tsk :stopped) nil)
|
||||
(progn
|
||||
(async:set-status tsk :running)
|
||||
(let ((*self* tsk))
|
||||
(handler-case (funcall bhv msg)
|
||||
(error (error) (util:lg :error "handling message" msg error)))
|
||||
(funcall bhv msg)
|
||||
(ac-loop tsk (async:behavior tsk)))))
|
||||
(async:set-status tsk :suspended))))
|
||||
(progn (async:set-status tsk :suspended) bhv))))
|
||||
|
||||
(defmethod send ((tsk async:restartable-task) msg)
|
||||
(let ((status (async:get-status tsk)))
|
||||
|
|
|
@ -100,7 +100,8 @@
|
|||
(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))
|
||||
|
|
Loading…
Add table
Reference in a new issue