first simple setup of printer service receiving message
This commit is contained in:
parent
1986c37933
commit
367f5ae589
2 changed files with 25 additions and 8 deletions
|
@ -5,16 +5,21 @@
|
||||||
(:local-nicknames (:config :scopes/config))
|
(:local-nicknames (:config :scopes/config))
|
||||||
(:export #:config #:service-config
|
(:export #:config #:service-config
|
||||||
#:message
|
#:message
|
||||||
#:context #:name #:send))
|
#:context #:name #:send
|
||||||
|
#:printer))
|
||||||
|
|
||||||
(in-package :scopes/core)
|
(in-package :scopes/core)
|
||||||
|
|
||||||
|
;;;; config
|
||||||
|
|
||||||
(defclass config (config:root)
|
(defclass config (config:root)
|
||||||
(services))
|
(services))
|
||||||
|
|
||||||
(defclass service-config (config:base)
|
(defclass service-config (config:base)
|
||||||
(start))
|
(start))
|
||||||
|
|
||||||
|
;;;; message
|
||||||
|
|
||||||
(defclass message ()
|
(defclass message ()
|
||||||
((domain)
|
((domain)
|
||||||
(action)
|
(action)
|
||||||
|
@ -24,15 +29,26 @@
|
||||||
(timestamp)
|
(timestamp)
|
||||||
(data)))
|
(data)))
|
||||||
|
|
||||||
|
;;;; context
|
||||||
|
|
||||||
(defclass context ()
|
(defclass context ()
|
||||||
((name :reader name :initarg :name)))
|
((name :reader name :initarg :name)
|
||||||
|
(action-handlers :accessor action-handlers :initform nil)))
|
||||||
|
|
||||||
(defgeneric send (rcvr msg)
|
(defgeneric send (rcvr msg)
|
||||||
(:method ((rcvr context) msg)
|
(:method ((rcvr context) msg)
|
||||||
rcvr
|
(let ((hdlrs (action-handlers rcvr)))
|
||||||
msg))
|
(funcall (car hdlrs) msg))))
|
||||||
|
|
||||||
(defvar *context* nil)
|
(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)
|
(defun printer (name)
|
||||||
(make-instance 'context :name name))
|
(make-instance 'printer :name name))
|
||||||
|
|
|
@ -14,8 +14,9 @@
|
||||||
(defvar *config* nil)
|
(defvar *config* nil)
|
||||||
|
|
||||||
(defclass test-suite (t:test-suite)
|
(defclass test-suite (t:test-suite)
|
||||||
((receiver :initform (make-instance 'core:context :name :test-rcvr)
|
((receiver :reader receiver
|
||||||
:reader receiver)))
|
:initform (core:printer :test-rcvr))))
|
||||||
|
;:initform (make-instance 'core:context :name :test-rcvr))))
|
||||||
|
|
||||||
(defun run ()
|
(defun run ()
|
||||||
(let ((*config* nil)
|
(let ((*config* nil)
|
||||||
|
@ -26,7 +27,7 @@
|
||||||
|
|
||||||
(t:deftest test-send ()
|
(t:deftest test-send ()
|
||||||
(let ((rcvr (receiver t:*test-suite*))
|
(let ((rcvr (receiver t:*test-suite*))
|
||||||
(msg nil))
|
(msg "dummy message"))
|
||||||
(== (core:name rcvr) :test-rcvr)
|
(== (core:name rcvr) :test-rcvr)
|
||||||
(core:send rcvr msg)
|
(core:send rcvr msg)
|
||||||
))
|
))
|
||||||
|
|
Loading…
Add table
Reference in a new issue