pub struct Server {}Implementations§
Source§impl Server
impl Server
pub fn process_request( stream: impl Read + Write + Unpin, peer_addr: SocketAddr, ) -> Vec<u8> ⓘ
pub fn bad_request_response(message: String) -> Vec<u8> ⓘ
Sourcepub fn payload_too_large_response(message: String) -> Vec<u8> ⓘ
pub fn payload_too_large_response(message: String) -> Vec<u8> ⓘ
Builds a 413 Payload Too Large raw response for a request whose declared
Content-Length exceeds RWS_CONFIG_MAX_BODY_SIZE_IN_BYTES. The connection
is always closed after this is sent (see Server::process) — the client’s
unread body bytes are still queued on the socket, so keep-alive framing
can’t be trusted.
Sourcepub fn continue_response() -> Vec<u8> ⓘ
pub fn continue_response() -> Vec<u8> ⓘ
Builds the 100 Continue interim response (RFC 9110 §15.2.1) — no
headers, no body, just the status line. Sent immediately after parsing
a request with Expect: 100-continue, before reading its body, so the
client (which is waiting for this before it uploads the body) doesn’t
stall or time out. See Server::process for where this is sent from.
Sourcepub fn expectation_failed_response(message: String) -> Vec<u8> ⓘ
pub fn expectation_failed_response(message: String) -> Vec<u8> ⓘ
Builds a 417 Expectation Failed raw response for an Expect header
value other than 100-continue (RFC 9110 §10.1.1) — the only
expectation this server understands. Sent instead of reading the
request body, since the expectation can’t be met either way.
pub fn process( stream: impl Read + Write + Unpin, connection: ConnectionInfo, app: impl Application, ) -> Result<(), String>
Sourcepub fn setup() -> Result<(TcpListener, ThreadPool), String>
pub fn setup() -> Result<(TcpListener, ThreadPool), String>
Reads configuration (IP, port, thread count, TLS paths) from the layered config system
and returns a bound TcpListener and a sized ThreadPool. Call once at startup.
Sourcepub fn run(
listener: TcpListener,
pool: ThreadPool,
app: impl Application + Send + 'static + Clone,
)
pub fn run( listener: TcpListener, pool: ThreadPool, app: impl Application + Send + 'static + Clone, )
Accepts TCP connections in a loop and dispatches each to the thread pool.
When built with the http1 feature, Ctrl+C and SIGTERM stop the accept
loop gracefully: SERVER_READY is cleared and the pool drains all
in-flight connections before returning.
For TLS/HTTP2/HTTP3 use Server::run_tls.
Source§impl Server
impl Server
pub async fn run_tls( listener: TcpListener, pool: ThreadPool, app: impl Application + Send + 'static + Clone, )
Sourcepub async fn run_redirect()
pub async fn run_redirect()
Binds a plain-HTTP listener on the port in RWS_CONFIG_HTTP_REDIRECT_PORT and sends
301 Moved Permanently to the HTTPS equivalent of every incoming URL.
Returns immediately if TLS is not configured or the redirect port is not set.