diff --git a/os-userland-stdlib.rkt b/os-userland-stdlib.rkt index f26b071..74e8253 100644 --- a/os-userland-stdlib.rkt +++ b/os-userland-stdlib.rkt @@ -55,14 +55,15 @@ (define-syntax rpc-service (syntax-rules () - [(_ pattern body ...) + [(_ [pattern body ...] ...) (let loop () (wait (message-handlers [`(request ,reply-addr ,pattern) (spawn (lambda () (define answer (let () body ...)) - (send `(reply ,reply-addr ,answer)))) - (loop)])))])) + (send `(reply ,reply-addr ,answer))))] + ...)) + (loop))])) (define (display-driver) (define message (wait (message-handlers [`(display ,message) message]))) @@ -75,11 +76,11 @@ (send `(display ,x))) (define (read-line-driver) - (rpc-service `read-line - (wait (message-handlers) + (rpc-service + [`read-line (wait (message-handlers) (meta-message-handlers [((read-line-evt (current-input-port) 'any) => line) - line])))) + line]))])) (define (read-line) (rpc 'read-line)) @@ -100,11 +101,12 @@ (wait-until-time 0)) (define (sleep-driver) - (rpc-service `(sleep ,msecs) - (send `(display (Sleeping ,msecs))) - (define now (wait-until-time (+ (current-time) msecs))) - (send `(display "\n")) - now)) + (rpc-service + [`(sleep ,msecs) + (send `(display (Sleeping ,msecs))) + (define now (wait-until-time (+ (current-time) msecs))) + (send `(display "\n")) + now])) (define (sleep msecs) (rpc `(sleep ,msecs)))