Welcome to the CHICKEN Scheme pasting service
9p-server API demo (work in progress) added by alaricsp on Mon Apr 23 12:34:20 2012
(use 9p-server 9p-lolevel tcp) (define (dump-message Ttype message) (printf "~S: ~S\n" Ttype message)) (define (dump-message-fid Ttype message fid-value) (printf "~S: ~S ~S\n" Ttype message fid-value)) (define (handle-version message) (dump-message 'Tversion message) 16384) (define (handle-auth message bind-fid! reply! error!) (dump-message 'Tauth message) (error! "You don't need to authenticate with me.") (void)) (define (handle-flush message reply! error!) (dump-message 'Tflush message) (reply! '()) (void)) (define (handle-attach message auth-fid-value bind-fid! reply! error!) (dump-message-fid 'Tattach message auth-fid-value) (bind-fid! "/") (reply! (list (make-qid qtdir 0 0)))) (define (handle-walk message parent-fid-value bind-fid! reply! error!) (dump-message-fid 'Twalk message parent-fid-value) (error! "Not yet implemented")) (define (handle-open message fid-value reply! error!) (dump-message-fid 'Topen message fid-value) (error! "Not yet implemented")) (define (handle-create message fid-value reply! error!) (dump-message-fid 'Tcreate message fid-value) (error! "Not yet implemented")) (define (handle-read message fid-value reply! error!) (dump-message-fid 'Tread message fid-value) (error! "Not yet implemented")) (define (handle-write message fid-value reply! error!) (dump-message-fid 'Twrite message fid-value) (error! "Not yet implemented")) (define (handle-clunk message fid-value reply! error!) (dump-message-fid 'Tclunk message fid-value) (reply! '())) (define (handle-remove message fid-value reply! error!) (dump-message-fid 'Tremove message fid-value) (error! "Not yet implemented")) (define (handle-stat message fid-value reply! error!) (dump-message-fid 'Tstat message fid-value) (error! "Not yet implemented")) (define (handle-wstat message fid-value reply! error!) (dump-message-fid 'Twstat message fid-value) (error! "Not yet implemented")) (define (handle-disconnect) (printf "Disconnected\n")) (let ((listener (tcp-listen 1564))) (let accept-loop () (receive (in out) (tcp-accept listener) (printf "New connection!\n") (serve in out handle-version handle-auth handle-flush handle-attach handle-walk handle-open handle-create handle-read handle-write handle-clunk handle-remove handle-stat handle-wstat handle-disconnect) (close-input-port in) (close-output-port out))))