ref: f6e16f0c9f8d68a66c279059e4185d79a5b665a0
dir: /lib/http/server.myr/
use std
use "types"
pkg http =
const announce : (ds : byte[:] -> std.result(server#, err))
const shutdown : (srv : server# -> void)
const waitconn : (srv : server# -> std.result(std.fd, err))
// const readmsg : (srv : server# -> std.option(req#, err))
// const writemsg : (srv : server# -> std.option(req#, err))
// const writehdr : (srv : server# -> std.option(req#, err))
;;
const announce = {ds
var afd
match std.announce(ds)
| `std.Ok f: afd = f
| `std.Err e: -> `std.Err `Econn
;;
match std.listen(afd)
| `std.Err e: -> `std.Err `Econn
| `std.Ok lfd:
std.close(afd)
-> `std.Ok std.mk([.lfd=lfd])
;;
}
const shutdown = {srv
std.close(srv.lfd)
}
const waitconn = {srv
match std.accept(srv.lfd)
| `std.Ok afd: -> `std.Ok afd
| `std.Err e: -> `std.Err `Econn
;;
}