Http2Config

Struct Http2Config 

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

HTTP/2 connection settings.

These cover the HTTP/2 keepalive mechanism, the maximum lifetime of an individual connection, and how many concurrent streams a connection may carry. They apply only to connections actually served over HTTP/2; a connection negotiated as HTTP/1.1 ignores them.

Defaults to no keepalive, no connection age limit, and no stream limit, matching the behavior of a server that only expects short HTTP/1.1 request/response exchanges. Long-lived HTTP/2 clients – gRPC clients in particular – generally want at least a keepalive interval configured so that dead connections are detected rather than lingering.

Implementations§

Source§

impl Http2Config

Source

pub fn grpc_defaults() -> Self

Creates a configuration carrying the keepalive defaults conventionally used by gRPC servers.

This is a two hour keepalive interval with a twenty second timeout, which is what gRPC implementations generally settle on: long enough that idle connections cost almost nothing, short enough that a connection silently dropped by a NAT or load balancer is eventually noticed.

Deployments that need dead connections reclaimed faster should configure their own interval via with_keepalive rather than starting from this.

Source

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

Sets the HTTP/2 keepalive parameters.

After a connection has been idle for interval, the server sends a keepalive PING frame. If no PONG arrives within timeout, the connection is closed.

Defaults to keepalive being disabled. Shorter intervals detect dead peers faster at the cost of more PING traffic on otherwise idle connections; the right value depends on how many idle connections a deployment carries and how quickly it needs to reclaim them.

Source

pub fn with_max_connection_age( self, max_age: Duration, grace: Option<Duration>, ) -> Self

Sets the maximum age of a connection, and the grace period that follows it.

Once a connection has existed for max_age, the server sends GOAWAY so the peer stops issuing new requests, and lets in-flight requests finish. If grace is Some, the connection is forcibly closed once that period elapses; if it is None, the server waits for the connection to close on its own.

Defaults to no limit, meaning connections live until either side closes them. Setting a limit is how a deployment behind a load balancer spreads load back out periodically, since HTTP/2 clients otherwise pin themselves to whichever backend they first reached.

Source

pub fn with_max_concurrent_streams(self, max_concurrent_streams: u32) -> Self

Sets the maximum number of concurrent streams allowed on a single connection.

This is sent to the peer as the SETTINGS_MAX_CONCURRENT_STREAMS HTTP/2 setting, which bounds how many requests a client may have in flight on one connection: a client that reaches the limit waits for a stream to complete before opening another.

Defaults to no limit, meaning a client is bounded only by what the connection can carry. Setting a limit caps the work a single connection can queue up, at the cost of a client having to open more connections – or wait – to exceed it.

Trait Implementations§

Source§

impl Clone for Http2Config

Source§

fn clone(&self) -> Http2Config

Returns a duplicate of the value. Read more
1.0.0 · Source§

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

Performs copy-assignment from source. Read more
Source§

impl Debug for Http2Config

Source§

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

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

impl Default for Http2Config

Source§

fn default() -> Http2Config

Returns the “default value” for a type. Read more
Source§

impl Copy for Http2Config

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> 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> FromRef<T> for T
where T: Clone,

Source§

fn from_ref(input: &T) -> T

Converts to this type from a reference to the input type.
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> 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> 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
Source§

impl<T> CloneAny for T
where T: Any + Clone,