cl-scopes/csys/environ.lisp

33 lines
882 B
Common Lisp

;;;; cl-scopes/csys/environ - communication system environment
(defpackage :scopes/csys/environ
(:use :common-lisp)
(:local-nicknames (:actor :scopes/core/actor)
(:csys :scopes/csys)
(:message :scopes/core/message)
)
(:export #:forward #:forward-message)
)
(in-package :scopes/csys/environ)
(defclass scope (csys:scope)
(cells :reader cells :initarg :cells :initform (make-hash-table :test #'equal)))
;;;; action handlers, public callables
(defun cell-created (msg scope))
(defun forward-message (head scope &key data customer)
(forward (message:create head :data data :customer customer) scope))
(defun forward (msg scope)
(dolist (cell (find-cells (cells scope) (message:addr msg)))
(actor:send cell msg)))
;;;; helpers
(defun register-cell (reg addr cell))
(defun find-cells (reg addr))