ServerConfig¶
Server-level configuration.
Host and port specify the listen address. Parser limits control the maximum
size of request components. Idle timeout controls how long a keep-alive
connection can sit without activity before being closed; it applies only
while the connection is open, so once a close has started the idle timeout
no longer bounds the connection.
max_requests_per_connection limits how many requests a single keep-alive
connection can serve before the server closes it (analogous to nginx's
keepalive_requests). None means unlimited. Use
MakeMaxRequestsPerConnection to create validated limit values (must be
at least 1).
// All defaults (60-second idle timeout, unlimited requests)
ServerConfig("localhost", "8080")
// Custom timeout via MakeIdleTimeout (milliseconds)
let timeout = match lori.MakeIdleTimeout(30_000)
| let t: lori.IdleTimeout => t
end
ServerConfig("0.0.0.0", "80" where
max_body_size' = 10_485_760, // 10 MB
idle_timeout' = timeout)
// Disable idle timeout
ServerConfig("0.0.0.0", "80" where idle_timeout' = None)
// Limit to 1000 requests per connection
match MakeMaxRequestsPerConnection(1000)
| let m: MaxRequestsPerConnection =>
ServerConfig("0.0.0.0", "80" where max_requests_per_connection' = m)
end
Constructors¶
create¶
Create server configuration.
host' and port' specify the listen address. Parser limits default to
sensible values. idle_timeout' is an IdleTimeout (milliseconds) or
None to disable idle timeout. Defaults to 60 seconds. Use
lori.MakeIdleTimeout(ms) to create custom timeout values.
max_pending_responses' limits the number of pipelined
requests that can be outstanding before the connection closes — this
prevents unbounded memory growth from actors that never respond.
max_requests_per_connection' limits how many requests a single
keep-alive connection can serve before the server closes it. None
(the default) means unlimited. Use MakeMaxRequestsPerConnection to
create validated limit values (must be at least 1).
read_buffer_size' is how many bytes a connection reads before it
hands the scheduler back and resumes on a later turn. Smaller values
bound how much one connection does per turn, at the cost of more
turns. Defaults to 16KB. Use lori.MakeReadBufferSize(bytes) to
create custom values.
new val create(
host': String val,
port': String val,
max_request_line_size': USize val = 8192,
max_header_size': USize val = 8192,
max_chunk_header_size': USize val = 128,
max_body_size': USize val = 1048576,
max_pending_responses': USize val = 100,
idle_timeout': (IdleTimeout | None val) = call,
max_requests_per_connection': (MaxRequestsPerConnection | None val) = reference,
read_buffer_size': ReadBufferSize = call)
: ServerConfig val^
Parameters¶
- host': String val
- port': String val
- max_request_line_size': USize val = 8192
- max_header_size': USize val = 8192
- max_chunk_header_size': USize val = 128
- max_body_size': USize val = 1048576
- max_pending_responses': USize val = 100
- idle_timeout': (IdleTimeout | None val) = call
- max_requests_per_connection': (MaxRequestsPerConnection | None val) = reference
- read_buffer_size': ReadBufferSize = call
Returns¶
- ServerConfig val^