///|
/// The server `Config` surface (← uvicorn's `Config`): every transport knob
/// mooncat honours, the `host:port` bind string, uvicorn's own defaults, and
/// the `TlsCert` bundle `serve_tls_config` consumes. Built and printed
/// in-process — no socket is bound.
///
/// moon run src/examples/03-config --target native
#coverage.skip
fn main {
let cfg = @mooncat.Config::new(
host="0.0.0.0",
port=12000,
backlog=1024,
dual_stack=true,
reuse_addr=true,
server_headers=Map([("server", "mooncat"), ("x-powered-by", "moonbit")]),
max_connections=66666,
allow_failure=false,
graceful_timeout=23333,
)
println("bind = \{cfg.bind()}")
println("backlog = \{cfg.backlog}")
println("dual_stack = \{cfg.dual_stack}")
println("reuse_addr = \{cfg.reuse_addr}")
println("max_connections = \{opt(cfg.max_connections)}")
println("allow_failure = \{cfg.allow_failure}")
println("graceful_timeout = \{opt(cfg.graceful_timeout)}")
for k, v in cfg.server_headers {
println("server_header = \{k}: \{v}")
}
let d = @mooncat.Config::new()
println(
"defaults = \{d.bind()} backlog=\{d.backlog} reuse_addr=\{d.reuse_addr} allow_failure=\{d.allow_failure}",
)
let cert = @mooncat.TlsCert::{
certificate_file: "src/certs/cert.pem",
private_key_file: "src/certs/key.pem",
}
println(
"tls bundle = cert=\{cert.certificate_file} key=\{cert.private_key_file}",
)
}
///|
/// Render an optional int knob (`None` = uvicorn's unbounded default).
fn opt(o : Int32?) -> String {
match o {
Some(n) => n.to_string()
None => "unset"
}
}