#:use-module (fibers channels)
#:use-module (fibers conditions)
#:use-module (fibers operations)
- #:use-module (8sync agenda)
#:use-module (8sync inbox)
#:use-module (8sync rmeta-slot)
#:export (;; utilities... ought to go in their own module
;;; Commenting out the <address> type for now;
;;; it may be back when we have better serializers
;; <address>
- make-address address?
+ make-address
address-actor-id address-hive-id
- actor-init! actor-cleanup!
-
address->string
actor-id-actor
actor-id-hive
actor-id-string
+ actor-init! actor-cleanup!
+
actor-alive?
build-actions
message-id message-body message-in-reply-to
message-wants-reply
- message-auto-reply?
-
<- <-wait
spawn-hive run-hive))
#:message message))
(apply method actor message (message-body message)))
+(define-syntax-rule (wrap-apply 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
with wrap-apply to facilitate live hacking and allow the method definition