racket-matrix-2012/tcp-api/os2-tcp-test-echo-service-2...

33 lines
781 B
Racket
Raw Normal View History

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