26 lines
668 B
Racket
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)))
|