def step
import gralha-http-server@0.1.0.0/server.bend as Serverimport Base
import gralha-http-core@0.1.0.0/http.bend as Http
129# Accepts one connection, reads its request (up to max bytes), answers it
130# with handle(request)(state) and closes it; a request that never parses
131# gets a 400. A failed accept leaves the state as it was.
132def step(~S: Type, ~handle: Http.Request -> S -> IO(S & Http.Response),
133 listener: Listener, state: S, +max: U32) -> IO(Listener & S):
134 do IO<Listener & S>:
135 got : Listener & Result<&1, &1, U32 & String, Socket> <- TCP.accept(listener)
136 accepted(~S, ~handle, got, state, max)