Compare commits
No commits in common. "f3e3af8e0b6d1d3f4e4332f7b2b431afbbb33294" and "28e86a723ade0483b7ff6e9acde49a29827a10ce" have entirely different histories.
f3e3af8e0b
...
28e86a723a
3 changed files with 21 additions and 30 deletions
|
|
@ -14,7 +14,7 @@
|
||||||
#:handle-action #:forward #:notify
|
#:handle-action #:forward #:notify
|
||||||
#:basic-actions #:no-op #:value-add #:create #:connect
|
#:basic-actions #:no-op #:value-add #:create #:connect
|
||||||
#:multiply
|
#:multiply
|
||||||
#:send-create #:send-connect))
|
#:send-connect))
|
||||||
|
|
||||||
(in-package :scopes/csys)
|
(in-package :scopes/csys)
|
||||||
|
|
||||||
|
|
@ -52,8 +52,6 @@
|
||||||
(setf (proc scope) (funcall (program scope) scope))
|
(setf (proc scope) (funcall (program scope) scope))
|
||||||
scope)
|
scope)
|
||||||
|
|
||||||
;;;; system initialization
|
|
||||||
|
|
||||||
(defgeneric make-program (spec)
|
(defgeneric make-program (spec)
|
||||||
(:method ((proc function)) (lambda (scope) proc))
|
(:method ((proc function)) (lambda (scope) proc))
|
||||||
(:method ((spec list))
|
(:method ((spec list))
|
||||||
|
|
@ -183,16 +181,8 @@
|
||||||
|
|
||||||
;;;; public shortcuts
|
;;;; public shortcuts
|
||||||
|
|
||||||
(defun send-create (cell &rest args &key (domain :csys) (cat :c00) name connect op)
|
(defun send-connect (rcvr target &key op (domain :csys))
|
||||||
(let ((args+ (if name
|
(actor:send rcvr
|
||||||
`(:addr ,(list domain cat name))
|
|
||||||
`(:categ ,(list domain cat)))))
|
|
||||||
(setf args (alx:remove-from-plist :domain :cat :name))
|
|
||||||
(actor:send cell
|
|
||||||
(message:create (list domain :create) :data (append args+ args)))))
|
|
||||||
|
|
||||||
(defun send-connect (cell target &key op (domain :csys))
|
|
||||||
(actor:send cell
|
|
||||||
(message:create (list domain :connect)
|
(message:create (list domain :connect)
|
||||||
:data (list :target target :op op))))
|
:data (list :target target :op op))))
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@
|
||||||
(:util :scopes/util))
|
(:util :scopes/util))
|
||||||
(:export #:create
|
(:export #:create
|
||||||
#:actions
|
#:actions
|
||||||
#:send-value))
|
#:forward))
|
||||||
|
|
||||||
(in-package :scopes/csys/environ)
|
(in-package :scopes/csys/environ)
|
||||||
|
|
||||||
|
|
@ -36,9 +36,9 @@
|
||||||
(new (getf data :new)))
|
(new (getf data :new)))
|
||||||
(when addr
|
(when addr
|
||||||
(register-cell (cells scope) addr new))
|
(register-cell (cells scope) addr new))
|
||||||
;(csys:send-message new (list (message:domain msg) :next) :data data)
|
;;;send :next message / create more cells:
|
||||||
(actor:send new
|
(actor:send new
|
||||||
(message:create (list (message:domain msg) :next) :data data))
|
(message:create (list (message:domain msg) :next) :data (shape:data msg)))
|
||||||
nil))
|
nil))
|
||||||
|
|
||||||
(defun forward (msg scope)
|
(defun forward (msg scope)
|
||||||
|
|
@ -46,13 +46,7 @@
|
||||||
(actor:send cell msg))
|
(actor:send cell msg))
|
||||||
nil)
|
nil)
|
||||||
|
|
||||||
;;;; public shortcuts
|
;;;; helpers
|
||||||
|
|
||||||
(defun send-value (env val &key (domain :csys) (cat :c00) (name ""))
|
|
||||||
(let ((head (list domain :value cat name)))
|
|
||||||
(actor:send env (message:create head :data `(:value ,val)))))
|
|
||||||
|
|
||||||
;;;; internal helpers
|
|
||||||
|
|
||||||
(defun register-cell (reg addr cell)
|
(defun register-cell (reg addr cell)
|
||||||
(destructuring-bind (dom cat &optional (key "")) addr
|
(destructuring-bind (dom cat &optional (key "")) addr
|
||||||
|
|
|
||||||
|
|
@ -70,15 +70,22 @@
|
||||||
':default (csys:std-proc :actions (csys:basic-actions)))))
|
':default (csys:std-proc :actions (csys:basic-actions)))))
|
||||||
|
|
||||||
(defun actions-zero-initial ()
|
(defun actions-zero-initial ()
|
||||||
(util:plist-merge (list :next (next-zero-initial))
|
(let ((acts (csys:basic-actions)))
|
||||||
(csys:basic-actions)))
|
(setf (getf acts :next) (next-zero-initial))
|
||||||
|
acts))
|
||||||
|
|
||||||
(defun next-zero-initial ()
|
(defun next-zero-initial ()
|
||||||
(lambda (msg scope)
|
(lambda (msg scope)
|
||||||
(let ((self actor:*self*))
|
(let ((self actor:*self*)
|
||||||
(csys:send-create self :cat :e01 :connect :succ)
|
(cr '(:csys :create :c00 "0-0"))
|
||||||
(csys:send-create self :cat :s01 :name "0-1" :connect :pred)
|
(conn '(:csys :connect :c00 "0-0")))
|
||||||
|
(actor:send self
|
||||||
|
(message:create cr :data '(:categ (:csys :e01) :connect :succ)))
|
||||||
|
(actor:send self
|
||||||
|
(message:create cr :data '(:addr (:csys :s01 "0-1") :connect :pred)))
|
||||||
(csys:send-connect self self :op (csys:multiply -1))
|
(csys:send-connect self self :op (csys:multiply -1))
|
||||||
|
;(actor:send self
|
||||||
|
; (message:create conn :data (list :target self :op (csys:multiply -1))))
|
||||||
;; switch :active
|
;; switch :active
|
||||||
nil)))
|
nil)))
|
||||||
|
|
||||||
|
|
@ -89,7 +96,7 @@
|
||||||
(rcvr (tc:receiver t:*test-suite*)))
|
(rcvr (tc:receiver t:*test-suite*)))
|
||||||
(sleep 0.1)
|
(sleep 0.1)
|
||||||
;(tc:expect rcvr (message:create '(:csys :effect :e01) :data '(:value 1)))
|
;(tc:expect rcvr (message:create '(:csys :effect :e01) :data '(:value 1)))
|
||||||
(environ:send-value env 1 :cat :s01 :name "0-1")
|
(actor:send env (message:create '(:csys :value :s01 "0-1") :data '(:value 1)))
|
||||||
(environ:send-value env 2 :cat :s01 :name "0-1")
|
(actor:send env (message:create '(:csys :value :s01 "0-1") :data '(:value 2)))
|
||||||
(sleep 0.1)
|
(sleep 0.1)
|
||||||
(core:shutdown)))
|
(core:shutdown)))
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue