X-Git-Url: https://jxself.org/git/?a=blobdiff_plain;f=demos%2Factors%2Fsimplest-possible.scm;h=c1e8125f54502a49ed2700050cdf02d0ca06565c;hb=1253ea73ba4020df78671955721721179b556bfc;hp=41b8108add8c5f843f19644f8d9ca6de09befb42;hpb=09eabb2645beeb8bf8cf88281391c94901b84d50;p=8sync.git diff --git a/demos/actors/simplest-possible.scm b/demos/actors/simplest-possible.scm index 41b8108..c1e8125 100644 --- a/demos/actors/simplest-possible.scm +++ b/demos/actors/simplest-possible.scm @@ -1,5 +1,5 @@ ;;; 8sync --- Asynchronous programming for Guile -;;; Copyright (C) 2016 Christopher Allan Webber +;;; Copyright © 2016, 2017 Christopher Allan Webber ;;; ;;; This file is part of 8sync. ;;; @@ -16,26 +16,29 @@ ;;; You should have received a copy of the GNU Lesser General Public ;;; License along with 8sync. If not, see . -(use-modules (8sync systems actors) - (oop goops)) +(use-modules (8sync actors) + (oop goops) + (fibers conditions)) -(define-simple-actor - (greet-proog - (lambda (actor message) - (display "emo> What's next, Proog?\n") - (send-message - actor (message-ref message 'target) - 'greet-emo)))) +(define-actor () + ((greet-proog + (lambda (actor message target) + (display "emo> What's next, Proog?\n") + (<- target 'greet-emo))))) -(define-simple-actor - (greet-emo - (lambda (actor message) - (display "proog> Listen, Emo! Listen to the sounds of the machine!\n")))) +(define-actor () + ((greet-emo + (lambda (actor message) + (display "proog> Listen, Emo! Listen to the sounds of the machine!\n") + (signal-condition! (.done? actor))))) + (done? #:init-keyword #:done? + #:accessor .done?)) -(define hive (make-hive)) -(define our-emo (hive-create-actor hive )) -(define our-proog (hive-create-actor hive )) -(define (run-demo . args) - (ez-run-hive hive - (list (hive-bootstrap-message hive our-emo 'greet-proog - #:target our-proog)))) +(define (main . args) + (run-hive + (lambda (hive) + (define done? (make-condition)) + (define our-emo (create-actor )) + (define our-proog (create-actor #:done? done?)) + (<- our-emo 'greet-proog our-proog) + (wait done?))))