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.
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.