From 0bedb8ee33b91dfc44955f9ab07f9c5cda268581 Mon Sep 17 00:00:00 2001 From: Helmut Merz Date: Fri, 30 Aug 2024 11:26:40 +0200 Subject: [PATCH] web/response: make interaction subclass of new base-context class, store message = action --- core/core.lisp | 16 ++++++++-------- web/response.lisp | 10 +++++----- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/core/core.lisp b/core/core.lisp index 35b9175..2fb270b 100644 --- a/core/core.lisp +++ b/core/core.lisp @@ -7,9 +7,10 @@ (:shape :scopes/shape) (:util :scopes/util) (:alx :alexandria)) - (:export #:*root* #:default-setup #:default-actions + (:export #:action-spec + #:*root* #:default-setup #:default-actions #:find-service #:setup-services - #:context #:add-action #:config #:name #:send #:shutdown + #:base-context #:context #:add-action #:config #:name #:send #:shutdown #:handle-message #:do-print #:echo)) @@ -47,13 +48,12 @@ (defvar *root* nil) (defclass base-context () - ()) + ((actions :accessor actions :initform nil) + (default-actions :reader default-actions :initform nil))) -(defclass context () +(defclass context (base-context) ((config :reader config :initarg :config) (name :reader name :initarg :name) - (actions :accessor actions :initform nil) - (default-actions :reader default-actions :initform nil) (services :reader services :initform (make-hash-table)))) (defun default-setup (cfg &optional (cls 'context) &rest args &key &allow-other-keys) @@ -90,11 +90,11 @@ (setf (gethash (config:name cfg) services) child))))) (defgeneric send (rcvr msg) - (:method ((rcvr context) msg) + (:method ((rcvr base-context) msg) (handle-message rcvr msg))) (defgeneric handle-message (ctx msg) - (:method ((ctx context) msg) + (:method ((ctx base-context) msg) (cond ((do-actions ctx msg) t) ((do-actions ctx msg #'default-actions) t) diff --git a/web/response.lisp b/web/response.lisp index 8128e01..d0b115a 100644 --- a/web/response.lisp +++ b/web/response.lisp @@ -14,16 +14,16 @@ ;;;; server interaction - receive response message from action processing chain -(defclass interaction () - ((response :reader response :initarg :response) +(defclass interaction (core:base-context) + ((core:default-actions :initform + (list (make-instance 'core:action-spec :handlers (list #'store-msg)))) + (response :reader response :initarg :response) (messages :accessor messages :initform nil))) (defmethod print-object ((ia interaction) s) (shape:print-fields ia s 'messages)) -(defmethod core:send ((ia interaction) msg) - (util:lgd msg) - ;(handle-message ia msg) +(defun store-msg (ia msg) (push msg (messages ia))) (defun add-cookies (iact)