Skip to main content

ConnCtrl

Struct ConnCtrl 

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

Controls the lifetime of the transport connection serving a request.

A control is shared by every request multiplexed over the same connection. Shutting down an HTTP/2 or HTTP/3 connection therefore also affects its other in-flight request streams.

Implementations§

Source§

impl ConnCtrl

Source

pub fn new() -> Self

Creates a connection control in the running state.

Source

pub fn graceful_shutdown(&self)

Stops accepting new requests and lets accepted requests finish.

A later call to abort escalates graceful shutdown to an immediate abort.

Source

pub fn abort(&self)

Immediately aborts the underlying transport connection.

The server will abruptly close the connection without sending any response. This causes clients to encounter errors such as curl: (52) Empty reply from server.

Aborting the connection immediately frees up system resources allocated to the request flow. This forceful teardown should only be used in critical scenarios, such as mitigating active attacks, where maintaining the connection poses a security risk.

Source

pub fn is_graceful_shutdown(&self) -> bool

Returns true after graceful shutdown has been requested.

Source

pub fn is_aborted(&self) -> bool

Returns true after immediate abort has been requested.

Source

pub fn relax_timeouts(&self)

Suspends the transport idle and write-stall fuse timeouts for this connection.

The fuse connection_idle_timeout and write_stall_timeout exist to close connections that stall mid-request. Long-lived protocols built on top of an HTTP upgrade — WebSocket, or a hand-rolled tunnel — legitimately spend long stretches with no transport activity and would otherwise trip those timers. A handler that hands the connection off to such a protocol should call this to keep the transport open.

This does not affect graceful_shutdown or abort; an aborted connection is still torn down.

Source

pub fn is_relaxed(&self) -> bool

Returns true once relax_timeouts has been called.

Trait Implementations§

Source§

impl Clone for ConnCtrl

Source§

fn clone(&self) -> ConnCtrl

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for ConnCtrl

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for ConnCtrl

Source§

fn default() -> Self

Returns the “default value” for a type. 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<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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. 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> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
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, <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