Struct PacResolverBuilder
pub struct PacResolverBuilder { /* private fields */ }js and pac and std only.Expand description
Builds a PacResolver.
Implementations§
§impl PacResolverBuilder
impl PacResolverBuilder
pub fn with_env(self, env: PacEnv) -> PacResolverBuilder
pub fn with_env(self, env: PacEnv) -> PacResolverBuilder
Configure the javascript environment the script runs in.
pub fn set_env(&mut self, env: PacEnv) -> &mut PacResolverBuilder
pub fn set_env(&mut self, env: PacEnv) -> &mut PacResolverBuilder
Configure the javascript environment the script runs in.
pub fn with_runtime(self, runtime: JsRuntimeBuilder) -> PacResolverBuilder
pub fn with_runtime(self, runtime: JsRuntimeBuilder) -> PacResolverBuilder
Start from this runtime blueprint instead of the default one, e.g. to register extra globals or tighten the js limits.
The resolver owns the execution time limit, so one set here is overridden.
pub fn set_runtime(
&mut self,
runtime: JsRuntimeBuilder,
) -> &mut PacResolverBuilder
pub fn set_runtime( &mut self, runtime: JsRuntimeBuilder, ) -> &mut PacResolverBuilder
Start from this runtime blueprint instead of the default one, e.g. to register extra globals or tighten the js limits.
The resolver owns the execution time limit, so one set here is overridden.
pub fn with_sanitize(self, sanitize: PacUrlSanitize) -> PacResolverBuilder
pub fn with_sanitize(self, sanitize: PacUrlSanitize) -> PacResolverBuilder
How much of the request uri the script sees
(defaults to PacUrlSanitize::HttpsOnly).
pub fn set_sanitize(
&mut self,
sanitize: PacUrlSanitize,
) -> &mut PacResolverBuilder
pub fn set_sanitize( &mut self, sanitize: PacUrlSanitize, ) -> &mut PacResolverBuilder
How much of the request uri the script sees
(defaults to PacUrlSanitize::HttpsOnly).
pub fn maybe_with_execution_time_limit(
self,
execution_time_limit: Option<Duration>,
) -> PacResolverBuilder
pub fn maybe_with_execution_time_limit( self, execution_time_limit: Option<Duration>, ) -> PacResolverBuilder
Wall-clock limit for one script call (defaults to
PacResolver::DEFAULT_EXECUTION_TIME_LIMIT).
Exceeding it poisons the runtime; the resolver rebuilds the
worker on the next lookup.
None removes the limit — and with it the derived lookup
timeout — at the risk of a script wedging
its worker forever.
pub fn maybe_set_execution_time_limit(
&mut self,
execution_time_limit: Option<Duration>,
) -> &mut PacResolverBuilder
pub fn maybe_set_execution_time_limit( &mut self, execution_time_limit: Option<Duration>, ) -> &mut PacResolverBuilder
Wall-clock limit for one script call (defaults to
PacResolver::DEFAULT_EXECUTION_TIME_LIMIT).
Exceeding it poisons the runtime; the resolver rebuilds the
worker on the next lookup.
None removes the limit — and with it the derived lookup
timeout — at the risk of a script wedging
its worker forever.
pub fn with_execution_time_limit(
self,
execution_time_limit: Duration,
) -> PacResolverBuilder
pub fn with_execution_time_limit( self, execution_time_limit: Duration, ) -> PacResolverBuilder
Wall-clock limit for one script call (defaults to
PacResolver::DEFAULT_EXECUTION_TIME_LIMIT).
Exceeding it poisons the runtime; the resolver rebuilds the
worker on the next lookup.
None removes the limit — and with it the derived lookup
timeout — at the risk of a script wedging
its worker forever.
pub fn set_execution_time_limit(
&mut self,
execution_time_limit: Duration,
) -> &mut PacResolverBuilder
pub fn set_execution_time_limit( &mut self, execution_time_limit: Duration, ) -> &mut PacResolverBuilder
Wall-clock limit for one script call (defaults to
PacResolver::DEFAULT_EXECUTION_TIME_LIMIT).
Exceeding it poisons the runtime; the resolver rebuilds the
worker on the next lookup.
None removes the limit — and with it the derived lookup
timeout — at the risk of a script wedging
its worker forever.
pub fn without_execution_time_limit(self) -> PacResolverBuilder
pub fn without_execution_time_limit(self) -> PacResolverBuilder
Wall-clock limit for one script call (defaults to
PacResolver::DEFAULT_EXECUTION_TIME_LIMIT).
Exceeding it poisons the runtime; the resolver rebuilds the
worker on the next lookup.
None removes the limit — and with it the derived lookup
timeout — at the risk of a script wedging
its worker forever.
pub fn unset_execution_time_limit(&mut self) -> &mut PacResolverBuilder
pub fn unset_execution_time_limit(&mut self) -> &mut PacResolverBuilder
Wall-clock limit for one script call (defaults to
PacResolver::DEFAULT_EXECUTION_TIME_LIMIT).
Exceeding it poisons the runtime; the resolver rebuilds the
worker on the next lookup.
None removes the limit — and with it the derived lookup
timeout — at the risk of a script wedging
its worker forever.
pub fn maybe_with_timeout(self, timeout: Option<Duration>) -> PacResolverBuilder
pub fn maybe_with_timeout(self, timeout: Option<Duration>) -> PacResolverBuilder
Fail a lookup that did not complete within this duration, queue time included.
None derives it from the
execution time limit — see
PacResolver::default_timeout_for — because a script can
wedge its worker in native code that limit cannot interrupt,
and no caller may wait on that forever. Callers only wait
indefinitely when the execution time limit is removed too.
pub fn maybe_set_timeout(
&mut self,
timeout: Option<Duration>,
) -> &mut PacResolverBuilder
pub fn maybe_set_timeout( &mut self, timeout: Option<Duration>, ) -> &mut PacResolverBuilder
Fail a lookup that did not complete within this duration, queue time included.
None derives it from the
execution time limit — see
PacResolver::default_timeout_for — because a script can
wedge its worker in native code that limit cannot interrupt,
and no caller may wait on that forever. Callers only wait
indefinitely when the execution time limit is removed too.
pub fn with_timeout(self, timeout: Duration) -> PacResolverBuilder
pub fn with_timeout(self, timeout: Duration) -> PacResolverBuilder
Fail a lookup that did not complete within this duration, queue time included.
None derives it from the
execution time limit — see
PacResolver::default_timeout_for — because a script can
wedge its worker in native code that limit cannot interrupt,
and no caller may wait on that forever. Callers only wait
indefinitely when the execution time limit is removed too.
pub fn set_timeout(&mut self, timeout: Duration) -> &mut PacResolverBuilder
pub fn set_timeout(&mut self, timeout: Duration) -> &mut PacResolverBuilder
Fail a lookup that did not complete within this duration, queue time included.
None derives it from the
execution time limit — see
PacResolver::default_timeout_for — because a script can
wedge its worker in native code that limit cannot interrupt,
and no caller may wait on that forever. Callers only wait
indefinitely when the execution time limit is removed too.
pub fn without_timeout(self) -> PacResolverBuilder
pub fn without_timeout(self) -> PacResolverBuilder
Fail a lookup that did not complete within this duration, queue time included.
None derives it from the
execution time limit — see
PacResolver::default_timeout_for — because a script can
wedge its worker in native code that limit cannot interrupt,
and no caller may wait on that forever. Callers only wait
indefinitely when the execution time limit is removed too.
pub fn unset_timeout(&mut self) -> &mut PacResolverBuilder
pub fn unset_timeout(&mut self) -> &mut PacResolverBuilder
Fail a lookup that did not complete within this duration, queue time included.
None derives it from the
execution time limit — see
PacResolver::default_timeout_for — because a script can
wedge its worker in native code that limit cannot interrupt,
and no caller may wait on that forever. Callers only wait
indefinitely when the execution time limit is removed too.
pub fn with_wedge_cooldown(self, wedge_cooldown: Duration) -> PacResolverBuilder
pub fn with_wedge_cooldown(self, wedge_cooldown: Duration) -> PacResolverBuilder
How long an unresolved worker charge counts against
PacResolver::MAX_WORKER_SPAWNS_PER_WINDOW
(defaults to PacResolver::DEFAULT_WEDGE_COOLDOWN).
Lookups fail once the window is full, so keep it long enough that a wedging script cannot leak a thread per lookup and short enough that a fixed script is picked up promptly.
pub fn set_wedge_cooldown(
&mut self,
wedge_cooldown: Duration,
) -> &mut PacResolverBuilder
pub fn set_wedge_cooldown( &mut self, wedge_cooldown: Duration, ) -> &mut PacResolverBuilder
How long an unresolved worker charge counts against
PacResolver::MAX_WORKER_SPAWNS_PER_WINDOW
(defaults to PacResolver::DEFAULT_WEDGE_COOLDOWN).
Lookups fail once the window is full, so keep it long enough that a wedging script cannot leak a thread per lookup and short enough that a fixed script is picked up promptly.
pub fn maybe_with_queue_capacity(
self,
queue_capacity: Option<usize>,
) -> PacResolverBuilder
pub fn maybe_with_queue_capacity( self, queue_capacity: Option<usize>, ) -> PacResolverBuilder
Capacity of the worker’s job queue.
pub fn maybe_set_queue_capacity(
&mut self,
queue_capacity: Option<usize>,
) -> &mut PacResolverBuilder
pub fn maybe_set_queue_capacity( &mut self, queue_capacity: Option<usize>, ) -> &mut PacResolverBuilder
Capacity of the worker’s job queue.
pub fn with_queue_capacity(self, queue_capacity: usize) -> PacResolverBuilder
pub fn with_queue_capacity(self, queue_capacity: usize) -> PacResolverBuilder
Capacity of the worker’s job queue.
pub fn set_queue_capacity(
&mut self,
queue_capacity: usize,
) -> &mut PacResolverBuilder
pub fn set_queue_capacity( &mut self, queue_capacity: usize, ) -> &mut PacResolverBuilder
Capacity of the worker’s job queue.
pub fn without_queue_capacity(self) -> PacResolverBuilder
pub fn without_queue_capacity(self) -> PacResolverBuilder
Capacity of the worker’s job queue.
pub fn unset_queue_capacity(&mut self) -> &mut PacResolverBuilder
pub fn unset_queue_capacity(&mut self) -> &mut PacResolverBuilder
Capacity of the worker’s job queue.
pub fn maybe_with_graceful(
self,
graceful: Option<ShutdownGuard>,
) -> PacResolverBuilder
pub fn maybe_with_graceful( self, graceful: Option<ShutdownGuard>, ) -> PacResolverBuilder
Tie the worker to a graceful shutdown guard.
pub fn maybe_set_graceful(
&mut self,
graceful: Option<ShutdownGuard>,
) -> &mut PacResolverBuilder
pub fn maybe_set_graceful( &mut self, graceful: Option<ShutdownGuard>, ) -> &mut PacResolverBuilder
Tie the worker to a graceful shutdown guard.
pub fn with_graceful(self, graceful: ShutdownGuard) -> PacResolverBuilder
pub fn with_graceful(self, graceful: ShutdownGuard) -> PacResolverBuilder
Tie the worker to a graceful shutdown guard.
pub fn set_graceful(
&mut self,
graceful: ShutdownGuard,
) -> &mut PacResolverBuilder
pub fn set_graceful( &mut self, graceful: ShutdownGuard, ) -> &mut PacResolverBuilder
Tie the worker to a graceful shutdown guard.
pub fn without_graceful(self) -> PacResolverBuilder
pub fn without_graceful(self) -> PacResolverBuilder
Tie the worker to a graceful shutdown guard.
pub fn unset_graceful(&mut self) -> &mut PacResolverBuilder
pub fn unset_graceful(&mut self) -> &mut PacResolverBuilder
Tie the worker to a graceful shutdown guard.
pub fn build<P>(
self,
provider: P,
script_uri: Uri,
) -> Result<PacResolver, Box<dyn Error + Sync + Send>>
pub fn build<P>( self, provider: P, script_uri: Uri, ) -> Result<PacResolver, Box<dyn Error + Sync + Send>>
Build a resolver serving the script the provider returns for
script_uri.
pub fn build_static(
self,
script: impl Into<PacScript>,
) -> Result<PacResolver, Box<dyn Error + Sync + Send>>
pub fn build_static( self, script: impl Into<PacScript>, ) -> Result<PacResolver, Box<dyn Error + Sync + Send>>
Build a resolver serving a fixed script.
Trait Implementations§
§impl Debug for PacResolverBuilder
impl Debug for PacResolverBuilder
§impl Default for PacResolverBuilder
impl Default for PacResolverBuilder
§fn default() -> PacResolverBuilder
fn default() -> PacResolverBuilder
Auto Trait Implementations§
impl !RefUnwindSafe for PacResolverBuilder
impl !UnwindSafe for PacResolverBuilder
impl Freeze for PacResolverBuilder
impl Send for PacResolverBuilder
impl Sync for PacResolverBuilder
impl Unpin for PacResolverBuilder
impl UnsafeUnpin for PacResolverBuilder
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
§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.