Struct hyper::server::Server [−][src]
pub struct Server<I, S, E = Exec> { /* fields omitted */ }
server
only.Expand description
A listening HTTP server that accepts connections in both HTTP1 and HTTP2 by default.
Server
is a Future
mapping a bound listener with a set of service
handlers. It is built using the Builder
, and the future
completes when the server has been shutdown. It should be run by an
Executor
.
Implementations
impl Server<AddrIncoming, ()>
[src]
impl Server<AddrIncoming, ()>
[src]pub fn bind(addr: &SocketAddr) -> Builder<AddrIncoming>
[src]
This is supported on (crate features http1
or http2
) and crate feature tcp
only.
pub fn bind(addr: &SocketAddr) -> Builder<AddrIncoming>
[src]http1
or http2
) and crate feature tcp
only.pub fn try_bind(addr: &SocketAddr) -> Result<Builder<AddrIncoming>>
[src]
This is supported on (crate features http1
or http2
) and crate feature tcp
only.
pub fn try_bind(addr: &SocketAddr) -> Result<Builder<AddrIncoming>>
[src]http1
or http2
) and crate feature tcp
only.Tries to bind to the provided address, and returns a Builder
.
pub fn from_tcp(
listener: StdTcpListener
) -> Result<Builder<AddrIncoming>, Error>
[src]
This is supported on (crate features http1
or http2
) and crate feature tcp
only.
pub fn from_tcp(
listener: StdTcpListener
) -> Result<Builder<AddrIncoming>, Error>
[src]http1
or http2
) and crate feature tcp
only.Create a new instance from a std::net::TcpListener
instance.
impl<S, E> Server<AddrIncoming, S, E>
[src]
impl<S, E> Server<AddrIncoming, S, E>
[src]pub fn local_addr(&self) -> SocketAddr
[src]
This is supported on (crate features http1
or http2
) and crate feature tcp
only.
pub fn local_addr(&self) -> SocketAddr
[src]http1
or http2
) and crate feature tcp
only.Returns the local address that this server is bound to.
impl<I, IO, IE, S, E, B> Server<I, S, E> where
I: Accept<Conn = IO, Error = IE>,
IE: Into<Box<dyn StdError + Send + Sync>>,
IO: AsyncRead + AsyncWrite + Unpin + Send + 'static,
S: MakeServiceRef<IO, Body, ResBody = B>,
S::Error: Into<Box<dyn StdError + Send + Sync>>,
B: HttpBody + Send + Sync + 'static,
B::Error: Into<Box<dyn StdError + Send + Sync>>,
E: ConnStreamExec<<S::Service as HttpService<Body>>::Future, B>,
E: NewSvcExec<IO, S::Future, S::Service, E, GracefulWatcher>,
[src]
impl<I, IO, IE, S, E, B> Server<I, S, E> where
I: Accept<Conn = IO, Error = IE>,
IE: Into<Box<dyn StdError + Send + Sync>>,
IO: AsyncRead + AsyncWrite + Unpin + Send + 'static,
S: MakeServiceRef<IO, Body, ResBody = B>,
S::Error: Into<Box<dyn StdError + Send + Sync>>,
B: HttpBody + Send + Sync + 'static,
B::Error: Into<Box<dyn StdError + Send + Sync>>,
E: ConnStreamExec<<S::Service as HttpService<Body>>::Future, B>,
E: NewSvcExec<IO, S::Future, S::Service, E, GracefulWatcher>,
[src]pub fn with_graceful_shutdown<F>(self, signal: F) -> Graceful<I, S, F, E> where
F: Future<Output = ()>,
[src]
This is supported on crate features http1
or http2
only.
pub fn with_graceful_shutdown<F>(self, signal: F) -> Graceful<I, S, F, E> where
F: Future<Output = ()>,
[src]http1
or http2
only.Prepares a server to handle graceful shutdown when the provided future completes.
Example
// Make a server from the previous examples... let server = Server::bind(&([127, 0, 0, 1], 3000).into()) .serve(make_service); // Prepare some signal for when the server should start shutting down... let (tx, rx) = tokio::sync::oneshot::channel::<()>(); let graceful = server .with_graceful_shutdown(async { rx.await.ok(); }); // Await the `server` receiving the signal... if let Err(e) = graceful.await { eprintln!("server error: {}", e); } // And later, trigger the signal by calling `tx.send(())`. let _ = tx.send(());
Trait Implementations
impl<I: Debug, S: Debug> Debug for Server<I, S>
[src]
impl<I: Debug, S: Debug> Debug for Server<I, S>
[src]http1
or http2
only.impl<I, IO, IE, S, B, E> Future for Server<I, S, E> where
I: Accept<Conn = IO, Error = IE>,
IE: Into<Box<dyn StdError + Send + Sync>>,
IO: AsyncRead + AsyncWrite + Unpin + Send + 'static,
S: MakeServiceRef<IO, Body, ResBody = B>,
S::Error: Into<Box<dyn StdError + Send + Sync>>,
B: HttpBody + 'static,
B::Error: Into<Box<dyn StdError + Send + Sync>>,
E: ConnStreamExec<<S::Service as HttpService<Body>>::Future, B>,
E: NewSvcExec<IO, S::Future, S::Service, E, NoopWatcher>,
[src]
impl<I, IO, IE, S, B, E> Future for Server<I, S, E> where
I: Accept<Conn = IO, Error = IE>,
IE: Into<Box<dyn StdError + Send + Sync>>,
IO: AsyncRead + AsyncWrite + Unpin + Send + 'static,
S: MakeServiceRef<IO, Body, ResBody = B>,
S::Error: Into<Box<dyn StdError + Send + Sync>>,
B: HttpBody + 'static,
B::Error: Into<Box<dyn StdError + Send + Sync>>,
E: ConnStreamExec<<S::Service as HttpService<Body>>::Future, B>,
E: NewSvcExec<IO, S::Future, S::Service, E, NoopWatcher>,
[src]http1
or http2
only.impl<'pin, I, S, E> Unpin for Server<I, S, E> where
__Server<'pin, I, S, E>: Unpin,
[src]
__Server<'pin, I, S, E>: Unpin,
http1
or http2
only.Auto Trait Implementations
impl<I, S, E> RefUnwindSafe for Server<I, S, E> where
E: RefUnwindSafe,
I: RefUnwindSafe,
S: RefUnwindSafe,
E: RefUnwindSafe,
I: RefUnwindSafe,
S: RefUnwindSafe,
impl<I, S, E> Send for Server<I, S, E> where
E: Send,
I: Send,
S: Send,
E: Send,
I: Send,
S: Send,
impl<I, S, E> Sync for Server<I, S, E> where
E: Sync,
I: Sync,
S: Sync,
E: Sync,
I: Sync,
S: Sync,
impl<I, S, E> UnwindSafe for Server<I, S, E> where
E: UnwindSafe,
I: UnwindSafe,
S: UnwindSafe,
E: UnwindSafe,
I: UnwindSafe,
S: UnwindSafe,
Blanket Implementations
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]pub fn borrow_mut(&mut self) -> &mut T
[src]
pub fn borrow_mut(&mut self) -> &mut T
[src]Mutably borrows from an owned value. Read more
impl<T> FutureExt for T where
T: Future + ?Sized,
[src]
impl<T> FutureExt for T where
T: Future + ?Sized,
[src]fn map<U, F>(self, f: F) -> Map<Self, F> where
F: FnOnce(Self::Output) -> U,
[src]
fn map<U, F>(self, f: F) -> Map<Self, F> where
F: FnOnce(Self::Output) -> U,
[src]Map this future’s output to a different type, returning a new future of the resulting type. Read more
fn map_into<U>(self) -> MapInto<Self, U> where
Self::Output: Into<U>,
[src]
fn map_into<U>(self) -> MapInto<Self, U> where
Self::Output: Into<U>,
[src]Map this future’s output to a different type, returning a new future of the resulting type. Read more
fn then<Fut, F>(self, f: F) -> Then<Self, Fut, F> where
F: FnOnce(Self::Output) -> Fut,
Fut: Future,
[src]
fn then<Fut, F>(self, f: F) -> Then<Self, Fut, F> where
F: FnOnce(Self::Output) -> Fut,
Fut: Future,
[src]Chain on a computation for when a future finished, passing the result of
the future to the provided closure f
. Read more
fn left_future<B>(self) -> Either<Self, B> where
B: Future<Output = Self::Output>,
[src]
fn left_future<B>(self) -> Either<Self, B> where
B: Future<Output = Self::Output>,
[src]Wrap this future in an Either
future, making it the left-hand variant
of that Either
. Read more
fn right_future<A>(self) -> Either<A, Self> where
A: Future<Output = Self::Output>,
[src]
fn right_future<A>(self) -> Either<A, Self> where
A: Future<Output = Self::Output>,
[src]Wrap this future in an Either
future, making it the right-hand variant
of that Either
. Read more
fn into_stream(self) -> IntoStream<Self>
[src]
fn into_stream(self) -> IntoStream<Self>
[src]Convert this future into a single element stream. Read more
fn flatten(self) -> Flatten<Self> where
Self::Output: Future,
[src]
fn flatten(self) -> Flatten<Self> where
Self::Output: Future,
[src]Flatten the execution of this future when the output of this future is itself another future. Read more
fn flatten_stream(self) -> FlattenStream<Self> where
Self::Output: Stream,
[src]
fn flatten_stream(self) -> FlattenStream<Self> where
Self::Output: Stream,
[src]Flatten the execution of this future when the successful result of this future is a stream. Read more
fn fuse(self) -> Fuse<Self>
[src]
fn fuse(self) -> Fuse<Self>
[src]Fuse a future such that poll
will never again be called once it has
completed. This method can be used to turn any Future
into a
FusedFuture
. Read more
fn inspect<F>(self, f: F) -> Inspect<Self, F> where
F: FnOnce(&Self::Output),
[src]
fn inspect<F>(self, f: F) -> Inspect<Self, F> where
F: FnOnce(&Self::Output),
[src]Do something with the output of a future before passing it on. Read more
fn boxed<'a>(
self
) -> Pin<Box<dyn Future<Output = Self::Output> + 'a + Send, Global>> where
Self: Send + 'a,
[src]
fn boxed<'a>(
self
) -> Pin<Box<dyn Future<Output = Self::Output> + 'a + Send, Global>> where
Self: Send + 'a,
[src]Wrap the future in a Box, pinning it. Read more
fn boxed_local<'a>(
self
) -> Pin<Box<dyn Future<Output = Self::Output> + 'a, Global>> where
Self: 'a,
[src]
fn boxed_local<'a>(
self
) -> Pin<Box<dyn Future<Output = Self::Output> + 'a, Global>> where
Self: 'a,
[src]Wrap the future in a Box, pinning it. Read more
fn unit_error(self) -> UnitError<Self>
[src]
fn unit_error(self) -> UnitError<Self>
[src]Turns a Future<Output = T>
into a
TryFuture<Ok = T, Error = ()
>. Read more
fn never_error(self) -> NeverError<Self>
[src]
fn never_error(self) -> NeverError<Self>
[src]Turns a Future<Output = T>
into a
TryFuture<Ok = T, Error = Never
>. Read more
fn poll_unpin(&mut self, cx: &mut Context<'_>) -> Poll<Self::Output> where
Self: Unpin,
[src]
fn poll_unpin(&mut self, cx: &mut Context<'_>) -> Poll<Self::Output> where
Self: Unpin,
[src]A convenience for calling Future::poll
on Unpin
future types.
fn now_or_never(self) -> Option<Self::Output>
[src]
fn now_or_never(self) -> Option<Self::Output>
[src]Evaluates and consumes the future, returning the resulting output if
the future is ready after the first call to Future::poll
. Read more
impl<T> Instrument for T
[src]
impl<T> Instrument for T
[src]fn instrument(self, span: Span) -> Instrumented<Self>
[src]
fn instrument(self, span: Span) -> Instrumented<Self>
[src]Instruments this type with the provided Span
, returning an
Instrumented
wrapper. Read more
fn in_current_span(self) -> Instrumented<Self>
[src]
fn in_current_span(self) -> Instrumented<Self>
[src]impl<F> IntoFuture for F where
F: Future,
[src]
impl<F> IntoFuture for F where
F: Future,
[src]type Output = <F as Future>::Output
type Output = <F as Future>::Output
into_future
)The output that the future will produce on completion.
type Future = F
type Future = F
into_future
)Which kind of future are we turning this into?
pub fn into_future(self) -> <F as IntoFuture>::Future
[src]
pub fn into_future(self) -> <F as IntoFuture>::Future
[src]into_future
)Creates a future from a value.
impl<Fut> TryFutureExt for Fut where
Fut: TryFuture + ?Sized,
[src]
impl<Fut> TryFutureExt for Fut where
Fut: TryFuture + ?Sized,
[src]fn map_ok<T, F>(self, f: F) -> MapOk<Self, F> where
F: FnOnce(Self::Ok) -> T,
[src]
fn map_ok<T, F>(self, f: F) -> MapOk<Self, F> where
F: FnOnce(Self::Ok) -> T,
[src]Maps this future’s success value to a different value. Read more
fn map_ok_or_else<T, E, F>(self, e: E, f: F) -> MapOkOrElse<Self, F, E> where
F: FnOnce(Self::Ok) -> T,
E: FnOnce(Self::Error) -> T,
[src]
fn map_ok_or_else<T, E, F>(self, e: E, f: F) -> MapOkOrElse<Self, F, E> where
F: FnOnce(Self::Ok) -> T,
E: FnOnce(Self::Error) -> T,
[src]Maps this future’s success value to a different value, and permits for error handling resulting in the same type. Read more
fn map_err<E, F>(self, f: F) -> MapErr<Self, F> where
F: FnOnce(Self::Error) -> E,
[src]
fn map_err<E, F>(self, f: F) -> MapErr<Self, F> where
F: FnOnce(Self::Error) -> E,
[src]Maps this future’s error value to a different value. Read more
fn and_then<Fut, F>(self, f: F) -> AndThen<Self, Fut, F> where
F: FnOnce(Self::Ok) -> Fut,
Fut: TryFuture<Error = Self::Error>,
[src]
fn and_then<Fut, F>(self, f: F) -> AndThen<Self, Fut, F> where
F: FnOnce(Self::Ok) -> Fut,
Fut: TryFuture<Error = Self::Error>,
[src]Executes another future after this one resolves successfully. The success value is passed to a closure to create this subsequent future. Read more
fn or_else<Fut, F>(self, f: F) -> OrElse<Self, Fut, F> where
F: FnOnce(Self::Error) -> Fut,
Fut: TryFuture<Ok = Self::Ok>,
[src]
fn or_else<Fut, F>(self, f: F) -> OrElse<Self, Fut, F> where
F: FnOnce(Self::Error) -> Fut,
Fut: TryFuture<Ok = Self::Ok>,
[src]Executes another future if this one resolves to an error. The error value is passed to a closure to create this subsequent future. Read more
fn inspect_ok<F>(self, f: F) -> InspectOk<Self, F> where
F: FnOnce(&Self::Ok),
[src]
fn inspect_ok<F>(self, f: F) -> InspectOk<Self, F> where
F: FnOnce(&Self::Ok),
[src]Do something with the success value of a future before passing it on. Read more
fn inspect_err<F>(self, f: F) -> InspectErr<Self, F> where
F: FnOnce(&Self::Error),
[src]
fn inspect_err<F>(self, f: F) -> InspectErr<Self, F> where
F: FnOnce(&Self::Error),
[src]Do something with the error value of a future before passing it on. Read more
fn try_flatten(self) -> TryFlatten<Self, Self::Ok> where
Self::Ok: TryFuture,
<Self::Ok as TryFuture>::Error == Self::Error,
[src]
fn try_flatten(self) -> TryFlatten<Self, Self::Ok> where
Self::Ok: TryFuture,
<Self::Ok as TryFuture>::Error == Self::Error,
[src]Flatten the execution of this future when the successful result of this future is another future. Read more
fn try_flatten_stream(self) -> TryFlattenStream<Self> where
Self::Ok: TryStream,
<Self::Ok as TryStream>::Error == Self::Error,
[src]
fn try_flatten_stream(self) -> TryFlattenStream<Self> where
Self::Ok: TryStream,
<Self::Ok as TryStream>::Error == Self::Error,
[src]Flatten the execution of this future when the successful result of this future is a stream. Read more
fn unwrap_or_else<F>(self, f: F) -> UnwrapOrElse<Self, F> where
F: FnOnce(Self::Error) -> Self::Ok,
[src]
fn unwrap_or_else<F>(self, f: F) -> UnwrapOrElse<Self, F> where
F: FnOnce(Self::Error) -> Self::Ok,
[src]fn into_future(self) -> IntoFuture<Self>
[src]
fn into_future(self) -> IntoFuture<Self>
[src]