HttpServer

Struct HttpServer 

Source
pub struct HttpServer<S> { /* private fields */ }
Expand description

An HTTP server.

Serves a single Service over a connection-oriented listener, optionally with TLS. The server can’t be run directly: it is only usable by adding it to a supervisor.

§Supervision

The listen address is bound during initialization, so a failure to bind is raised before the supervised worker starts running, and a restart rebinds.

The server will attempt to gracefully shutdown existing connections when the parent supervisor signals shutdown. This will cause the worker to utilize the maximum allowable grace period during shutdown: it will attempt to take as long as necessary to gracefully shutdown existing connections, bounded only by the parent supervisor.

Implementations§

Source§

impl<S> HttpServer<S>

Source

pub fn from_listen_address(listen_address: ListenAddress, service: S) -> Self

Creates a server that will listen on the given address.

Source

pub fn with_graceful_shutdown_timeout(self, timeout: Duration) -> Self

Sets the graceful shutdown timeout for this server.

During shutdown, the server will for all in-flight connections to complete before ultimately completing itself. When no timeout is specified, this will lead to the worker taking the maximum allowable time to shutdown if connections are blocked or otherwise “stuck.” Setting an explicit graceful shutdown timeout will cause the worker to bound how long it waits for in-flight connections to shutdown before forcefully completing and moving on.

Defaults to no timeout (wait as long as allowed).

Source

pub fn with_tls_config(self, config: ServerConfig) -> Self

Sets the TLS configuration for the server.

This enables TLS, after which the server only accepts connections that are encrypted with TLS.

Defaults to TLS being disabled.

Trait Implementations§

Source§

impl<S, B> Supervisable for HttpServer<S>
where S: Service<Request<Incoming>, Response = Response<B>> + Send + Sync + Clone + 'static, S::Error: Into<Box<dyn Error + Send + Sync>>, S::Future: Send + 'static, B: Body + Send + 'static, B::Data: Send, B::Error: Error + Send + Sync,

Source§

fn name(&self) -> &str

Returns the name of the process.
Source§

fn shutdown_strategy(&self) -> ShutdownStrategy

Returns the shutdown strategy for the process.
Source§

fn initialize<'life0, 'async_trait>( &'life0 self, process_shutdown: ShutdownHandle, ) -> Pin<Box<dyn Future<Output = Result<SupervisorFuture, InitializationError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Initializes the process asynchronously. Read more

Auto Trait Implementations§

§

impl<S> Freeze for HttpServer<S>
where S: Freeze,

§

impl<S> !RefUnwindSafe for HttpServer<S>

§

impl<S> Send for HttpServer<S>
where S: Send,

§

impl<S> Sync for HttpServer<S>
where S: Sync,

§

impl<S> Unpin for HttpServer<S>
where S: Unpin,

§

impl<S> !UnwindSafe for HttpServer<S>

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<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> IntoRequest<T> for T

Source§

fn into_request(self) -> Request<T>

Wrap the input message T in a tonic::Request
Source§

impl<L> LayerExt<L> for L

Source§

fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>
where L: Layer<S>,

Applies the layer to a service and wraps it in Layered.
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> Track for T

Source§

fn track_resources(self, token: ResourceGroupToken) -> Tracked<Self>

Instruments this type by attaching the given resource group token, returning a Tracked wrapper. Read more
Source§

fn in_current_resource_group(self) -> Tracked<Self>

Instruments this type by attaching the current resource group, returning a Tracked wrapper. Read more
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