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_javascript_disk_cache(
self,
root: impl AsRef<Path>,
directory: impl AsRef<Path>,
) -> PacResolverBuilder
Available on crate feature js-disk-cache only.
pub fn with_javascript_disk_cache( self, root: impl AsRef<Path>, directory: impl AsRef<Path>, ) -> PacResolverBuilder
js-disk-cache only.Configure the process-global JavaScript engine’s persistent compilation cache. Initialization remains lazy and happens when this builder first creates a resolver.
If the cache directory is unavailable, resolver construction logs the setup error at debug level and continues with the in-memory engine.
pub fn set_javascript_disk_cache(
&mut self,
root: impl AsRef<Path>,
directory: impl AsRef<Path>,
) -> &mut PacResolverBuilder
Available on crate feature js-disk-cache only.
pub fn set_javascript_disk_cache( &mut self, root: impl AsRef<Path>, directory: impl AsRef<Path>, ) -> &mut PacResolverBuilder
js-disk-cache only.Configure the process-global JavaScript engine’s persistent compilation cache. Initialization remains lazy and happens when this builder first creates a resolver.
If the cache directory is unavailable, resolver construction logs the setup error at debug level and continues with the in-memory engine.
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 + Send + Sync>>
pub fn build<P>( self, provider: P, script_uri: Uri, ) -> Result<PacResolver, Box<dyn Error + Send + Sync>>
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 + Send + Sync>>
pub fn build_static( self, script: impl Into<PacScript>, ) -> Result<PacResolver, Box<dyn Error + Send + Sync>>
Build a resolver serving a fixed script.
Trait Implementations§
§impl Clone for PacResolverBuilder
impl Clone for PacResolverBuilder
§fn clone(&self) -> PacResolverBuilder
fn clone(&self) -> PacResolverBuilder
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 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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§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> 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