* 8sync/actors.scm (live-wrap): Rename from `wrap' for clarity.
(build-actions): Update call to `live-wrap'.
* 8sync/systems/websocket/server.scm (<websocket-server>):
Re-wrap `websocket-client-loop' in `upgrade-paths' slot, now with
`live-wrap'.
;; Maybe the wrong place for this, or for it to be exported.
;; But it's used in websockets' server implementation at least...
;; Maybe the wrong place for this, or for it to be exported.
;; But it's used in websockets' server implementation at least...
;; For ids
(set! *random-state* (random-state-from-platform))
;; For ids
(set! *random-state* (random-state-from-platform))
#:message message))
(apply method actor message (message-body message)))
#:message message))
(apply method actor message (message-body message)))
-(define-syntax-rule (wrap body)
+(define-syntax-rule (live-wrap body)
"Wrap possibly multi-value function in a procedure, applies all arguments"
(lambda args
(apply body args)))
(define-syntax-rule (build-actions (symbol method) ...)
"Construct an alist of (symbol . method), where the method is wrapped
"Wrap possibly multi-value function in a procedure, applies all arguments"
(lambda args
(apply body args)))
(define-syntax-rule (build-actions (symbol method) ...)
"Construct an alist of (symbol . method), where the method is wrapped
-with `wrap' to facilitate live hacking and allow the method definition
+with `live-wrap' to facilitate live hacking and allow the method definition
to come after class definition."
(build-rmeta-slot
(list (cons (quote symbol)
to come after class definition."
(build-rmeta-slot
(list (cons (quote symbol)
+ (live-wrap method)) ...)))
(define-class <actor> ()
;; An address object... a vector of #(actor-id hive-id inbox-channel dead?)
(define-class <actor> ()
;; An address object... a vector of #(actor-id hive-id inbox-channel dead?)
(define-actor <websocket-server> (<web-server>)
((ws-send websocket-server-send))
(define-actor <websocket-server> (<web-server>)
((ws-send websocket-server-send))
- (upgrade-paths #:init-value `(("websocket" . ,websocket-client-loop))
+ (upgrade-paths #:init-value `(("websocket" .
+ ,(live-wrap websocket-client-loop)))
#:allocation #:each-subclass
#:accessor .upgrade-paths)
#:allocation #:each-subclass
#:accessor .upgrade-paths)