;;; 8sync --- Asynchronous programming for Guile
;;; Copyright (C) 2016 Christopher Allan Webber <cwebber@dustycloud.org>
+;;; Copyright (C) 2021 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
;;;
;;; This file is part of 8sync.
;;;
;;; Test reply / autoreply
;;; ======================
-(define-simple-actor <antsy-caller>
- (pester-rep (wrap-apply antsy-caller-pester-rep)))
+(define-actor <antsy-caller> (<actor>)
+ ((pester-rep (wrap-apply antsy-caller-pester-rep))))
(define* (antsy-caller-pester-rep actor message #:key who-to-call)
(~display "customer> I'm calling customer service about this!\n")
(~display "customer> Well then! Harumph.\n")
(error "Not an autoreply? What's going on here...")))))))
-(define-simple-actor <diligent-rep>
- (field-call (wrap-apply rep-field-call)))
+(define-actor <diligent-rep> (<actor>)
+ ((field-call (wrap-apply rep-field-call))))
(define (rep-field-call actor message)
(~display "good-rep> Hm, another call from a customer...\n")
(~format "*rep hears*: ~a\n" msg)
(~display "good-rep> I'm sorry, that's all I can do for you.\n")))
-(define-simple-actor <lazy-rep>
- (field-call
- (lambda (actor message)
- (~display "lazy-rep> I'm not answering that.\n"))))
+(define-actor <lazy-rep> (<actor>)
+ ((field-call
+ (lambda (actor message)
+ (~display "lazy-rep> I'm not answering that.\n")))))
(let* ((hive (make-hive))
(customer (bootstrap-actor* hive <antsy-caller> "antsy-caller"))
\f
;;; Cleanup tests
-(define-simple-actor <cleanly>
- (*cleanup* test-call-cleanup))
+(define-actor <cleanly> (<actor>)
+ ((*cleanup* test-call-cleanup)))
(define (test-call-cleanup actor message)
(speak "Hey, I'm cleanin' up here!\n"))
;; The exploder self-destructs, even though run-hive has cleanup
;; disabled, because it cleans up on self-destruct.
-(define-simple-actor <exploder>
- (explode (lambda (exploder message)
- (speak "POOF\n")
- (self-destruct exploder)))
- (*cleanup* (lambda _ (speak "Cleaning up post-explosion\n"))))
+(define-actor <exploder> (<actor>)
+ ((explode (lambda (exploder message)
+ (speak "POOF\n")
+ (self-destruct exploder)))
+ (*cleanup* (lambda _ (speak "Cleaning up post-explosion\n")))))
(with-fresh-speaker
(let ((hive (make-hive)))
(create-friend #:init-value #f
#:init-keyword #:create-friend)
(actions #:allocation #:each-subclass
- #:init-value (build-actions
+ #:init-thunk (build-actions
(*init* hi-on-init-init))))
(define (hi-on-init-init actor message)
(test-equal (get-spoken)
'("Hi! jack inits now.\n" "Hi! jill inits now.\n")))
-(test-end "test-actors")
(test-exit)
+(test-end "test-actors")