diff --git a/core/core.lisp b/core/core.lisp index b29fa36..807b072 100644 --- a/core/core.lisp +++ b/core/core.lisp @@ -7,7 +7,8 @@ (:shape :scopes/shape) (:util :scopes/util) (:alx :alexandria) - (:q :lparallel.queue)) + (:lp :lparallel) + (:lpq :lparallel.queue)) (:export #:action-spec #:define-actions #:*root* #:default-setup #:actions #:find-service #:run-services #:setup-services #:shutdown @@ -58,10 +59,10 @@ (defvar *root* nil) ;;; check / fix: -(defvar *quit-queue* (q:make-queue :fixed-capacity 1)) +(defvar *quit-queue* (lpq:make-queue :fixed-capacity 1)) (defun quit-handler (sig) (format t "~%quit-handler: got signal ~s~%" sig) - (q:push-queue sig *quit-queue*)) + (lpq:push-queue sig *quit-queue*)) (defclass base-context () ((actions :accessor actions :initform nil))) @@ -72,11 +73,13 @@ (services :reader services :initform (make-hash-table)))) (defclass service (context) - ((mailbox :reader mailbox :initform (lparallel.queue:make-queue)))) + ((mailbox :reader mailbox :initform (lpq:make-queue)))) (defgeneric do-start (ctx) (:method ((ctx context))) - (:method ((ctx service)) (do-listen ctx))) + (:method ((ctx service)) + (let ((ch (lp:make-channel))) + (lp:submit-task ch (do-listen ctx))))) (defgeneric do-listen (ctx) (:method ((ctx service)) @@ -85,10 +88,16 @@ (defgeneric do-step (ctx) (:method ((ctx service)) - (let ((msg (q:pop-queue (mailbox ctx)))) + (let ((msg (lpq:pop-queue (mailbox ctx)))) (handle-message ctx msg)))) -(defun default-setup (cfg &optional (cls 'context) &rest args &key &allow-other-keys) +(defgeneric send (rcvr msg) + (:method ((rcvr base-context) msg) + (handle-message rcvr msg)) + (:method ((rcvr service) msg) + (lpq:push-queue msg (mailbox rcvr)))) + + (defun default-setup (cfg &optional (cls 'context) &rest args &key &allow-other-keys) (apply #'make-instance cls :config cfg :name (config:name cfg) args)) (defun find-service (name &optional (parent *root*)) @@ -111,7 +120,7 @@ (progn (setup-services cfg) (do-listen *root*)) - ;(q:pop-queue *quit-queue*)) + ;(lpq:pop-queue *quit-queue*)) (shutdown))) (defun add-action (ctx pat hdlr) @@ -132,9 +141,6 @@ (do-start child) )))) -(defgeneric send (rcvr msg) - (:method ((rcvr base-context) msg) - (handle-message rcvr msg))) (defgeneric handle-message (ctx msg) (:method ((ctx base-context) msg)