registry.tri (1592B)
1 !import base as B 2 !import conversions as C 3 !import io as IO 4 !import arboricx_handlers as Registry 5 !import arboricx_streaming as Server 6 !import handlers as H 7 !export main 8 !export server 9 !export limited 10 !export badLogger 11 !export listen 12 !export cancelledServer 13 port ["ipv4" _ value] = value 14 port _ = 0 15 ready listener = do IO.require 16 address <- IO.localAddress listener 17 writer <- IO.stdout 18 IO.require (IO.writeAll writer (B.append (C.showNumber (port address)) [10])) IO.pure 19 quiet _ = H.pure (B.ok t t) 20 bad _ = H.fail "test" "logger" "write" "private logger detail" 21 server root count window = IO.io (Server.serveCount root 1048576 quiet 22 (IO.ipv4 [127 0 0 1] 0) window count ready) 23 badLogger root count window = IO.io (Server.serveCount root 1048576 bad 24 (IO.ipv4 [127 0 0 1] 0) window count ready) 25 listen root address = IO.io (Server.serve root 1048576 Registry.stdoutLog address 16 ready) 26 main = listen "./store" (IO.ipv4 [0 0 0 0] 8080) 27 cancelledServer root count window = IO.io (IO.scope (_ : IO.require 28 (IO.spawn 1 1 [] (_ : Server.serve root 1048576 quiet (IO.ipv4 [127 0 0 1] 0) window ready)) 29 (spawned : case spawned of 30 [task ticket] = do IO.require 31 input <- IO.stdin 32 IO.readSome input 1 33 IO.cancel task "test shutdown" 34 outcome <- IO.join ticket 35 case outcome of 36 ["cancelled" "test shutdown" []] = IO.pure t 37 _ = IO.fail "Unexpected server cancellation outcome" 38 _ = IO.fail "Invalid controlled server spawn"))) 39 40 limited root count window = IO.io (Server.serveCount root 4 quiet 41 (IO.ipv4 [127 0 0 1] 0) window count ready)