Skip to main content

Http3ProductionProfile

Struct Http3ProductionProfile 

Source
pub struct Http3ProductionProfile {
    pub enabled: bool,
    pub alpn_order: Vec<String>,
    pub quic_idle_timeout_ms: u64,
    pub quic_preset: QuicTuningPreset,
    pub allow_h3_draft: bool,
    pub fallback_on_h3_error: bool,
}
Available on crate feature http3-profile only.
Expand description

Production-focused HTTP/3 configuration profile.

§Examples

use http_handle::http3_profile::Http3ProductionProfile;
let p = Http3ProductionProfile::default();
assert!(p.enabled);

§Panics

This type does not panic.

Fields§

§enabled: bool

Whether HTTP/3 is enabled.

§alpn_order: Vec<String>

Ordered ALPN preference, e.g. ["h3", "h2", "http/1.1"].

§quic_idle_timeout_ms: u64

QUIC idle timeout in milliseconds.

§quic_preset: QuicTuningPreset

QUIC tuning preset.

§allow_h3_draft: bool

Accept draft h3 tokens (for example h3-29) as h3 route.

§fallback_on_h3_error: bool

Whether failed HTTP/3 handshakes should fallback to H2/H1.

Implementations§

Source§

impl Http3ProductionProfile

Source

pub fn production_baseline() -> Self

Returns a strict production baseline with h3-first ALPN ordering.

§Examples
use http_handle::http3_profile::Http3ProductionProfile;
let p = Http3ProductionProfile::production_baseline();
assert!(p.enabled);
§Panics

This function does not panic.

Source

pub fn quic_tuning(&self) -> QuicTuning

Returns effective QUIC tuning values from preset and profile.

§Examples
use http_handle::http3_profile::Http3ProductionProfile;
let p = Http3ProductionProfile::default();
let t = p.quic_tuning();
assert!(t.idle_timeout_ms > 0);
§Panics

This function does not panic.

Source

pub fn route_for_alpn(&self, negotiated_alpn: Option<&[u8]>) -> ProtocolRoute

Derives the serving route from negotiated ALPN protocol bytes.

§Examples
use http_handle::http3_profile::{Http3ProductionProfile, ProtocolRoute};
let p = Http3ProductionProfile::default();
assert_eq!(p.route_for_alpn(Some(b"h3")), ProtocolRoute::Http3);
§Panics

This function does not panic.

Source

pub fn route_for_client_alpns( &self, client_offered_alpns: &[Vec<u8>], ) -> ProtocolRoute

Selects a route from offered client ALPN tokens and server preference.

§Examples
use http_handle::http3_profile::{Http3ProductionProfile, ProtocolRoute};
let p = Http3ProductionProfile::default();
let offered = vec![b"h2".to_vec()];
assert_eq!(p.route_for_client_alpns(&offered), ProtocolRoute::Http2);
§Panics

This function does not panic.

Source

pub fn fallback_chain(&self) -> Vec<ProtocolRoute>

Returns ordered protocol fallback chain.

§Examples
use http_handle::http3_profile::Http3ProductionProfile;
let p = Http3ProductionProfile::default();
assert!(!p.fallback_chain().is_empty());
§Panics

This function does not panic.

Source

pub fn resolve_route( &self, negotiated_alpn: Option<&[u8]>, h3_handshake_ok: bool, ) -> RouteDecision

Resolves final route with explicit fallback decision tree and reason.

§Examples
use http_handle::http3_profile::{Http3ProductionProfile, RouteReason};
let p = Http3ProductionProfile::default();
let d = p.resolve_route(Some(b"h3"), false);
assert!(matches!(d.reason, RouteReason::H3HandshakeFailedFallback));
§Panics

This function does not panic.

Source

pub fn telemetry_line(&self, decision: &RouteDecision) -> String

Serializes a compact fallback telemetry line for logs.

§Examples
use http_handle::http3_profile::{Http3ProductionProfile, RouteDecision, RouteReason, ProtocolRoute};
let p = Http3ProductionProfile::default();
let d = RouteDecision { selected: ProtocolRoute::Http2, reason: RouteReason::Negotiated, negotiated_alpn: Some("h2".into()), fallback_chain: vec![ProtocolRoute::Http3, ProtocolRoute::Http2] };
let line = p.telemetry_line(&d);
assert!(line.contains("http3.route"));
§Panics

This function does not panic.

Trait Implementations§

Source§

impl Clone for Http3ProductionProfile

Source§

fn clone(&self) -> Http3ProductionProfile

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 Http3ProductionProfile

Source§

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

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

impl Default for Http3ProductionProfile

Source§

fn default() -> Self

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

impl Eq for Http3ProductionProfile

Source§

impl PartialEq for Http3ProductionProfile

Source§

fn eq(&self, other: &Http3ProductionProfile) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more
Source§

impl StructuralPartialEq for Http3ProductionProfile

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> AutoreleaseSafe for T
where T: ?Sized,

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<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. Read more
Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Compare self to key and return true if they are equal.
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> 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 = 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<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