Skip to main content

HyperConnections

Struct HyperConnections 

Source
pub struct HyperConnections { /* private fields */ }
Expand description

Accepts at one address and serves each connection with one service.

This is all a framework needs to be served when it exposes a service rather than an accept loop. The listener stays here, so closing drops it and frees the address immediately, while connections already accepted are given the drain to finish.

Implementations§

Source§

impl HyperConnections

Source

pub fn serve<Answering, ResponseBody>( listener: TcpListener, service: Answering, drain: Duration, ) -> Self
where Answering: Service<Request<Incoming>, Response = Response<ResponseBody>> + Clone + 'static, Answering::Error: Into<ConnectionsError>, Answering::Future: Send, ResponseBody: Body + Send + 'static, ResponseBody::Data: Send, ResponseBody::Error: Into<ConnectionsError>,

Serves every connection accepted at listener with service, draining for drain.

The drain is stated here rather than fixed, because how long a request may take is what the surface being served decides, not what accepting it does. DRAIN is the usual answer.

Source

pub async fn close(&mut self)

Releases the address, leaving what is already being served to finish on its own.

Aborting the accept task drops the listener, which is what frees the address, and awaiting the handle is what makes it free on return rather than shortly after. Each connection is then told to shut down gracefully, which is what makes one finish: it answers what it is producing and then ends, rather than waiting for a request no caller will send. This does not wait for that, which is what Self::end is for.

Source

pub async fn end(&mut self)

Releases the address, then gives what is already being served up to the drain to finish.

Whatever is still serving when the drain runs out is ended, so this resolves within the drain of Self::close however slow a request is.

Trait Implementations§

Source§

impl Drop for HyperConnections

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more
Source§

fn pin_drop(self: Pin<&mut Self>)

🔬This is a nightly-only experimental API. (pin_ergonomics)
Execute the destructor for this type, but different to Drop::drop, it requires self to be pinned. Read more

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

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<This> HttpProgramExt<This> for This

Source§

fn compile_http<Program>( &self, program: Program, ) -> <Program as HttpProgramAlg<This>>::Route
where Program: HttpProgramAlg<This>,

Compiles a named HTTP program with this interpreter.

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, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

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

fn try_from(value: U) -> Result<T, !>

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