-(import sam
- matchable
- (chicken process-context)
- srfi-18)
+(import sam-macros)
-(define (send-startup-messages)
- (send-message system 'print "Hello, what is your name?")
- (send-message system 'read
- (make-actor (lambda (self . message)
- (print message)
- (match message
- ((name)
- (send-message system 'print "Hello, " name "!")
- 'done)))))
-
- (thread-start!
- (lambda ()
- (thread-sleep! 10)
- (send-message system 'print "Boo!"))))
-
-(let loop ((args (cdr (argv)))
- (host "localhost")
- (port 8000))
- (match args
- (((or "-h" "--help"))
- (print "Usage: simple_test [ -h ] [ --port PORT ] [ --hostname host ]"))
- (((or "-p" "--port") pstr rest ...)
- (loop rest host (string->number pstr)))
- (("--hostname" hstr rest ...)
- (loop rest hstr port))
- (()
- (init-sam host port)
- (print "-- Started SAM on " host ":" port " --\n")
- (send-startup-messages)
- (start-console))))
+(define-beh main-beh (self)
+ ((system) =>
+ (send-message system 'print "Hello, what is your name?")
+ (send-message system 'read
+ (make-actor (make-beh (self)
+ ((name) =>
+ (send-message system 'print "Hello, " name "!")
+ 'done))))
+ (send-message system 'ping
+ (make-actor (make-beh (self)
+ (('pong) =>
+ (send-message system 'print
+ "Received pong from system!")
+ 'done))))
+ (send-message-later system 10 'print "Boo!")
+ 'done))