#lang racket/base (define (listener port) (transition 'no-state (role/anon (tcp-listener port) #:topic t #:on-presence (spawn (connection-handler t))))) (define (connection-handler t) (define-values (cin cout in-topic out-topic) (tcp-accept t)) (transition 'no-state (cin (tcp-credit 1)) (role/anon in-topic [(tcp-channel _ _ (or (== #"\4") (? eof-object?))) (kill)] [(tcp-channel _ _ bytev) (list (cin (tcp-credit 1)) (cout bytev))]))) (define (main port) (ground-vm (transition 'no-state (spawn tcp-driver) (spawn (listener port))))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (main 5999) (require racket/match) (require "../os2.rkt") (require "../fake-tcp.rkt")