Skip to main content

resolve_routing_path

Function resolve_routing_path 

Source
pub const fn resolve_routing_path(
    capabilities: &ProxyCapabilities,
    preference: TransportPreference,
) -> RoutingPath
Expand description

Resolve the RoutingPath for a request given proxy capabilities and the caller’s transport preference.

§Decision logic

Preferencesupports_http3_tunnelResult
PreferH3trueH3OverUdp
PreferH3falseH1H2OverTcp
ForceTcpanyH1H2OverTcp
PersistentTcpanyPersistentTcp

§Example

use stygian_proxy::routing::{resolve_routing_path, TransportPreference};
use stygian_proxy::types::{ProxyCapabilities, RoutingPath};

let caps = ProxyCapabilities { supports_http3_tunnel: true, ..Default::default() };
assert_eq!(
    resolve_routing_path(&caps, TransportPreference::PreferH3),
    RoutingPath::H3OverUdp,
);
assert_eq!(
    resolve_routing_path(&caps, TransportPreference::ForceTcp),
    RoutingPath::H1H2OverTcp,
);
let fallback = ProxyCapabilities::default();
assert_eq!(
    resolve_routing_path(&fallback, TransportPreference::PreferH3),
    RoutingPath::H1H2OverTcp,
);