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