srfi-13
(chicken process-context))
-(define client-beh
+(define (make-client-beh system)
(let ((name "name")
(recipients '()))
-
(lambda (self . message)
(match message
(('start)
(send-message system 'print "Welcome to chat!\n"
- "Your client address is " self ".\n"
+ "Your client address is " (address->string self) ".\n"
"Type '/help' for a list of commands.\n")
(send-message system 'read self))
(('show-msg from text)
(if (string-null? arg)
(send-message system 'print "Missing address of client.")
(begin
- (set! recipients (cons arg recipients))
+ (set! recipients (cons (string->address arg) recipients))
(send-message system 'print "Added recipient to chat."))))
((or "c" "clear")
(set! recipients '())
(send-message system 'read self)
'sleep)))
+(define (main-beh self system)
+ (send-message (make-actor (make-client-beh system)) 'start)
+ 'done)
+
(define (print-usage)
(print "Actor-driven chat client.\n")
(print "Usage: chat_client -h")
(((or "-n" "--hostname") hstr rest ...)
(loop rest hstr port))
(()
- (init-sam host port)
- (send-message (make-actor client-beh) 'start)
- (start-console))
+ (boot-sam host port main-beh))
(else
(print "Unrecognised argument '" (car args) "'.\n")
(print-usage))))