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