racket-dns-2012/experiments/sfserver.rkt

26 lines
668 B
Racket

#lang racket
(require "os-big-bang.rkt")
(require "os-udp.rkt")
(define counter
(os-big-bang 0
(send-message `(request create-echo-socket (udp new 5678 65536)))
(subscribe/fresh sub
(message-handlers current-counter
[`(reply create-echo-socket ,sname)
(transition current-counter
(unsubscribe sub)
(subscribe 'packet-handler
(message-handlers current-counter
[(udp-packet source (== sname) #"get")
(transition (+ current-counter 1)
(send-message
(udp-packet sname source
(integer->integer-bytes current-counter 8 #f))))])))]))))
(ground-vm
(os-big-bang 'none
(spawn udp-driver)
(spawn counter)))