actors: Add msg-val and add docstring to msg-receive. remove-define-mhandler
authorChristopher Allan Webber <cwebber@dustycloud.org>
Tue, 13 Dec 2016 18:43:42 +0000 (12:43 -0600)
committerChristopher Allan Webber <cwebber@dustycloud.org>
Tue, 13 Dec 2016 18:43:42 +0000 (12:43 -0600)
* 8sync/systems/actors.scm (msg-receive): Add docstring, and change
  parameter name from "the-message" to just "message".
  (msg-val): New procedure.

8sync/systems/actors.scm

index 7b47c5faec3626d0770c5b2b1c6668c0ac0a1fca..84a5c2e3c178f168d39b981f90be4ff2b3b609f3 100644 (file)
@@ -70,7 +70,7 @@
 
             <- <-wait <-reply <-reply-wait
 
-            call-with-message msg-receive
+            call-with-message msg-receive msg-val
 
             ez-run-hive
             bootstrap-message
@@ -622,11 +622,20 @@ argument.  Similar to call-with-values in concept."
 ;; Emacs: (put 'msg-receive 'scheme-indent-function 2)
 
 ;; @@: Or receive-msg or receieve-message or??
-(define-syntax-rule (msg-receive arglist the-message body ...)
-  (call-with-message the-message
+(define-syntax-rule (msg-receive arglist message body ...)
+  "Call body with arglist (which can accept arguments like lambda*)
+applied from the message-body of message."
+  (call-with-message message
                      (lambda* arglist
                        body ...)))
 
+(define (msg-val message)
+  "Retrieve the first value from the message-body of message.
+Like single value return from a procedure call.  Probably the most
+common case when waiting on a reply from some action invocation."
+  (call-with-message message
+                     (lambda (_ val) val)))
+
 \f
 ;;; Various API methods for actors to interact with the system
 ;;; ==========================================================