Struct PacProxyRoutesLayer
pub struct PacProxyRoutesLayer { /* private fields */ }js and pac and std only.Expand description
Inserts the ProxyRoutes a PAC script selects for each request, for
a ProxyRoutesConnector
further down the stack to connect through.
A request that already carries a ProxyRoute or ProxyRoutes is left
alone and the script is not consulted at all, unless
overwrite says otherwise. Each redirect hop and
retry attempt gets its own extension store, so a verdict left on an earlier
one is not in scope here and every hop is routed for its own target.
A verdict publishes at most DEFAULT_PAC_MAX_ROUTES routes, so a
script cannot decide that one request is worth an unbounded number of
connect attempts — see max_routes.
Implementations§
§impl PacProxyRoutesLayer
impl PacProxyRoutesLayer
pub fn new(resolver: Arc<PacResolver>) -> PacProxyRoutesLayer
pub fn new(resolver: Arc<PacResolver>) -> PacProxyRoutesLayer
Route through what the given resolver’s script selects.
pub fn with_failure_policy(
self,
failure: PacFailurePolicy,
) -> PacProxyRoutesLayer
pub fn with_failure_policy( self, failure: PacFailurePolicy, ) -> PacProxyRoutesLayer
What to route through when the script cannot be consulted
(defaults to PacFailurePolicy::Fail).
pub fn set_failure_policy(
&mut self,
failure: PacFailurePolicy,
) -> &mut PacProxyRoutesLayer
pub fn set_failure_policy( &mut self, failure: PacFailurePolicy, ) -> &mut PacProxyRoutesLayer
What to route through when the script cannot be consulted
(defaults to PacFailurePolicy::Fail).
pub fn with_overwrite(self, overwrite: bool) -> PacProxyRoutesLayer
pub fn with_overwrite(self, overwrite: bool) -> PacProxyRoutesLayer
Consult the script even when the request already carries a
route, and let its verdict win (defaults to false).
pub fn set_overwrite(&mut self, overwrite: bool) -> &mut PacProxyRoutesLayer
pub fn set_overwrite(&mut self, overwrite: bool) -> &mut PacProxyRoutesLayer
Consult the script even when the request already carries a
route, and let its verdict win (defaults to false).
pub fn maybe_with_max_routes(
self,
max_routes: Option<NonZero<usize>>,
) -> PacProxyRoutesLayer
pub fn maybe_with_max_routes( self, max_routes: Option<NonZero<usize>>, ) -> PacProxyRoutesLayer
How many routes a verdict may publish; the rest are dropped
(defaults to DEFAULT_PAC_MAX_ROUTES).
Every published route is a connect attempt the connector may
make for a single request. Use
without_max_routes to trust the
script with an unbounded list.
pub fn maybe_set_max_routes(
&mut self,
max_routes: Option<NonZero<usize>>,
) -> &mut PacProxyRoutesLayer
pub fn maybe_set_max_routes( &mut self, max_routes: Option<NonZero<usize>>, ) -> &mut PacProxyRoutesLayer
How many routes a verdict may publish; the rest are dropped
(defaults to DEFAULT_PAC_MAX_ROUTES).
Every published route is a connect attempt the connector may
make for a single request. Use
without_max_routes to trust the
script with an unbounded list.
pub fn with_max_routes(self, max_routes: NonZero<usize>) -> PacProxyRoutesLayer
pub fn with_max_routes(self, max_routes: NonZero<usize>) -> PacProxyRoutesLayer
How many routes a verdict may publish; the rest are dropped
(defaults to DEFAULT_PAC_MAX_ROUTES).
Every published route is a connect attempt the connector may
make for a single request. Use
without_max_routes to trust the
script with an unbounded list.
pub fn set_max_routes(
&mut self,
max_routes: NonZero<usize>,
) -> &mut PacProxyRoutesLayer
pub fn set_max_routes( &mut self, max_routes: NonZero<usize>, ) -> &mut PacProxyRoutesLayer
How many routes a verdict may publish; the rest are dropped
(defaults to DEFAULT_PAC_MAX_ROUTES).
Every published route is a connect attempt the connector may
make for a single request. Use
without_max_routes to trust the
script with an unbounded list.
pub fn without_max_routes(self) -> PacProxyRoutesLayer
pub fn without_max_routes(self) -> PacProxyRoutesLayer
How many routes a verdict may publish; the rest are dropped
(defaults to DEFAULT_PAC_MAX_ROUTES).
Every published route is a connect attempt the connector may
make for a single request. Use
without_max_routes to trust the
script with an unbounded list.
pub fn unset_max_routes(&mut self) -> &mut PacProxyRoutesLayer
pub fn unset_max_routes(&mut self) -> &mut PacProxyRoutesLayer
How many routes a verdict may publish; the rest are dropped
(defaults to DEFAULT_PAC_MAX_ROUTES).
Every published route is a connect attempt the connector may
make for a single request. Use
without_max_routes to trust the
script with an unbounded list.
Trait Implementations§
§impl Clone for PacProxyRoutesLayer
impl Clone for PacProxyRoutesLayer
§fn clone(&self) -> PacProxyRoutesLayer
fn clone(&self) -> PacProxyRoutesLayer
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more§impl Debug for PacProxyRoutesLayer
impl Debug for PacProxyRoutesLayer
§impl<S> Layer<S> for PacProxyRoutesLayer
impl<S> Layer<S> for PacProxyRoutesLayer
§type Service = PacProxyRoutesService<S>
type Service = PacProxyRoutesService<S>
§fn layer(&self, inner: S) -> <PacProxyRoutesLayer as Layer<S>>::Service
fn layer(&self, inner: S) -> <PacProxyRoutesLayer as Layer<S>>::Service
§fn into_layer(self, inner: S) -> <PacProxyRoutesLayer as Layer<S>>::Service
fn into_layer(self, inner: S) -> <PacProxyRoutesLayer as Layer<S>>::Service
layer but consuming self after the service was created. Read moreAuto Trait Implementations§
impl !RefUnwindSafe for PacProxyRoutesLayer
impl !UnwindSafe for PacProxyRoutesLayer
impl Freeze for PacProxyRoutesLayer
impl Send for PacProxyRoutesLayer
impl Sync for PacProxyRoutesLayer
impl Unpin for PacProxyRoutesLayer
impl UnsafeUnpin for PacProxyRoutesLayer
Blanket Implementations§
§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> Conv for T
impl<T> Conv for T
impl<T> ErasedDestructor for Twhere
T: 'static,
§impl<T> FutureExt for T
impl<T> FutureExt for T
§fn with_context(self, otel_cx: Context) -> WithContext<Self> ⓘ
fn with_context(self, otel_cx: Context) -> WithContext<Self> ⓘ
§fn with_current_context(self) -> WithContext<Self> ⓘ
fn with_current_context(self) -> WithContext<Self> ⓘ
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a rama_grpc::Request§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read more§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read more§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
self, then passes self.as_ref() into the pipe function.§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
self, then passes self.as_mut() into the pipe
function.§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
self, then passes self.deref() into the pipe function.§impl<T> Pointable for T
impl<T> Pointable for T
§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
§fn and<P, B, E>(self, other: P) -> And<T, P>
fn and<P, B, E>(self, other: P) -> And<T, P>
Policy that returns Action::Follow only if self and other return
Action::Follow. Read more§impl<T, U> RamaTryFrom<T> for Uwhere
U: TryFrom<T>,
impl<T, U> RamaTryFrom<T> for Uwhere
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error
fn rama_try_from(value: T) -> Result<U, <U as RamaTryFrom<T>>::Error>
§impl<T, U, CrateMarker> RamaTryInto<U, CrateMarker> for Twhere
U: RamaTryFrom<T, CrateMarker>,
impl<T, U, CrateMarker> RamaTryInto<U, CrateMarker> for Twhere
U: RamaTryFrom<T, CrateMarker>,
type Error = <U as RamaTryFrom<T, CrateMarker>>::Error
fn rama_try_into(self) -> Result<U, <U as RamaTryFrom<T, CrateMarker>>::Error>
impl<T> Read<Exclusive, BecauseExclusive> for Twhere
T: ?Sized,
§impl<T> Tap for T
impl<T> Tap for T
§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Borrow<B> of a value. Read more§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
BorrowMut<B> of a value. Read more§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
AsRef<R> view of a value. Read more§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
AsMut<R> view of a value. Read more§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Deref::Target of a value. Read more§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Deref::Target of a value. Read more§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
.tap() only in debug builds, and is erased in release builds.§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
.tap_mut() only in debug builds, and is erased in release
builds.§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
.tap_borrow() only in debug builds, and is erased in release
builds.§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
.tap_borrow_mut() only in debug builds, and is erased in release
builds.§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
.tap_ref() only in debug builds, and is erased in release
builds.§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
.tap_ref_mut() only in debug builds, and is erased in release
builds.§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
.tap_deref() only in debug builds, and is erased in release
builds.