web/response: make interaction subclass of new base-context class, store message = action
This commit is contained in:
parent
1cc19753d4
commit
0bedb8ee33
2 changed files with 13 additions and 13 deletions
|
@ -7,9 +7,10 @@
|
||||||
(:shape :scopes/shape)
|
(:shape :scopes/shape)
|
||||||
(:util :scopes/util)
|
(:util :scopes/util)
|
||||||
(:alx :alexandria))
|
(:alx :alexandria))
|
||||||
(:export #:*root* #:default-setup #:default-actions
|
(:export #:action-spec
|
||||||
|
#:*root* #:default-setup #:default-actions
|
||||||
#:find-service #:setup-services
|
#:find-service #:setup-services
|
||||||
#:context #:add-action #:config #:name #:send #:shutdown
|
#:base-context #:context #:add-action #:config #:name #:send #:shutdown
|
||||||
#:handle-message
|
#:handle-message
|
||||||
#:do-print #:echo))
|
#:do-print #:echo))
|
||||||
|
|
||||||
|
@ -47,13 +48,12 @@
|
||||||
(defvar *root* nil)
|
(defvar *root* nil)
|
||||||
|
|
||||||
(defclass base-context ()
|
(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)
|
((config :reader config :initarg :config)
|
||||||
(name :reader name :initarg :name)
|
(name :reader name :initarg :name)
|
||||||
(actions :accessor actions :initform nil)
|
|
||||||
(default-actions :reader default-actions :initform nil)
|
|
||||||
(services :reader services :initform (make-hash-table))))
|
(services :reader services :initform (make-hash-table))))
|
||||||
|
|
||||||
(defun default-setup (cfg &optional (cls 'context) &rest args &key &allow-other-keys)
|
(defun default-setup (cfg &optional (cls 'context) &rest args &key &allow-other-keys)
|
||||||
|
@ -90,11 +90,11 @@
|
||||||
(setf (gethash (config:name cfg) services) child)))))
|
(setf (gethash (config:name cfg) services) child)))))
|
||||||
|
|
||||||
(defgeneric send (rcvr msg)
|
(defgeneric send (rcvr msg)
|
||||||
(:method ((rcvr context) msg)
|
(:method ((rcvr base-context) msg)
|
||||||
(handle-message rcvr msg)))
|
(handle-message rcvr msg)))
|
||||||
|
|
||||||
(defgeneric handle-message (ctx msg)
|
(defgeneric handle-message (ctx msg)
|
||||||
(:method ((ctx context) msg)
|
(:method ((ctx base-context) msg)
|
||||||
(cond
|
(cond
|
||||||
((do-actions ctx msg) t)
|
((do-actions ctx msg) t)
|
||||||
((do-actions ctx msg #'default-actions) t)
|
((do-actions ctx msg #'default-actions) t)
|
||||||
|
|
|
@ -14,16 +14,16 @@
|
||||||
|
|
||||||
;;;; server interaction - receive response message from action processing chain
|
;;;; server interaction - receive response message from action processing chain
|
||||||
|
|
||||||
(defclass interaction ()
|
(defclass interaction (core:base-context)
|
||||||
((response :reader response :initarg :response)
|
((core:default-actions :initform
|
||||||
|
(list (make-instance 'core:action-spec :handlers (list #'store-msg))))
|
||||||
|
(response :reader response :initarg :response)
|
||||||
(messages :accessor messages :initform nil)))
|
(messages :accessor messages :initform nil)))
|
||||||
|
|
||||||
(defmethod print-object ((ia interaction) s)
|
(defmethod print-object ((ia interaction) s)
|
||||||
(shape:print-fields ia s 'messages))
|
(shape:print-fields ia s 'messages))
|
||||||
|
|
||||||
(defmethod core:send ((ia interaction) msg)
|
(defun store-msg (ia msg)
|
||||||
(util:lgd msg)
|
|
||||||
;(handle-message ia msg)
|
|
||||||
(push msg (messages ia)))
|
(push msg (messages ia)))
|
||||||
|
|
||||||
(defun add-cookies (iact)
|
(defun add-cookies (iact)
|
||||||
|
|
Loading…
Add table
Reference in a new issue