;;; 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")
- (msg-receive (first-reply #:key msg)
+ (mbody-receive (first-reply #:key msg)
(<-wait who-to-call 'field-call)
(if (message-auto-reply? first-reply)
(~display "customer> Whaaaaat? I can't believe I got voice mail!\n")
(begin
(~format "*customer hears*: ~a\n" msg)
- (msg-receive (second-reply #:key *auto-reply*)
+ (mbody-receive (second-reply #:key *auto-reply*)
(<-reply-wait first-reply
#:msg "Yes, it didn't work, I'm VERY ANGRY!")
(if (message-auto-reply? second-reply)
(~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")
- (msg-receive (reply #:key msg)
+ (mbody-receive (reply #:key msg)
(<-reply-wait message #:msg "Have you tried turning it off and on?")
(~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)