Skip to main content

Server

Struct Server 

Source
pub struct Server {}

Implementations§

Source§

impl Server

Source

pub fn process_request( stream: impl Read + Write + Unpin, peer_addr: SocketAddr, ) -> Vec<u8>

Source

pub fn bad_request_response(message: String) -> Vec<u8>

Source

pub fn process( stream: impl Read + Write + Unpin, connection: ConnectionInfo, app: impl Application, ) -> Result<(), String>

Source

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.

Source

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

Source

pub async fn run_tls( listener: TcpListener, pool: ThreadPool, app: impl Application + Send + 'static + Clone, )

Source

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.

Source§

impl Server

Source

pub async fn run_quic(app: impl Application + Send + 'static + Clone)

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more