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)))
|