first simple setup of printer service receiving message

This commit is contained in:
Helmut Merz 2024-06-11 22:37:42 +02:00
parent 1986c37933
commit 367f5ae589
2 changed files with 25 additions and 8 deletions

View file

@ -5,16 +5,21 @@
(:local-nicknames (:config :scopes/config))
(:export #:config #:service-config
#:message
#:context #:name #:send))
#:context #:name #:send
#:printer))
(in-package :scopes/core)
;;;; config
(defclass config (config:root)
(services))
(defclass service-config (config:base)
(start))
;;;; message
(defclass message ()
((domain)
(action)
@ -24,15 +29,26 @@
(timestamp)
(data)))
;;;; context
(defclass context ()
((name :reader name :initarg :name)))
((name :reader name :initarg :name)
(action-handlers :accessor action-handlers :initform nil)))
(defgeneric send (rcvr msg)
(:method ((rcvr context) msg)
rcvr
msg))
(let ((hdlrs (action-handlers rcvr)))
(funcall (car hdlrs) msg))))
(defvar *context* nil)
;;;; simple printer service
(defun do-print (msg)
(format t "~&~s~%" msg))
(defclass printer (context)
((action-handlers :initform (list #'do-print))))
(defun printer (name)
(make-instance 'context :name name))
(make-instance 'printer :name name))

View file

@ -14,8 +14,9 @@
(defvar *config* nil)
(defclass test-suite (t:test-suite)
((receiver :initform (make-instance 'core:context :name :test-rcvr)
:reader receiver)))
((receiver :reader receiver
:initform (core:printer :test-rcvr))))
;:initform (make-instance 'core:context :name :test-rcvr))))
(defun run ()
(let ((*config* nil)
@ -26,7 +27,7 @@
(t:deftest test-send ()
(let ((rcvr (receiver t:*test-suite*))
(msg nil))
(msg "dummy message"))
(== (core:name rcvr) :test-rcvr)
(core:send rcvr msg)
))