pub struct DispatchProfile {
pub bypass: Option<DynBypassProvider>,
pub strategy: EscalationStrategy,
pub retry_policy: Option<DynRetryPolicy>,
pub waf_classifier: Option<DynWafClassifier>,
pub domain_state: Option<DynDomainStatePort>,
pub escalation_budget: Option<DynEscalationBudget>,
pub max_total_attempts: u32,
pub antibot_strategy: Option<DynAntibotStrategy>,
}Expand description
Bundle of pluggable dispatch components attached to crate::types::CrawlConfig.
The antibot_strategy field accepts an optional Arc<dyn AntibotStrategy>.
Because it holds an opaque trait object it is excluded from alef-generated
polyglot bindings (#[cfg_attr(alef, alef(skip))]). Language clients that
need custom antibot logic must subclass or wrap DefaultAntibotStrategy at
the Rust layer and expose a language-friendly surface separately.
When antibot_strategy is None (the default), the engine’s built-in
WAF-signal → escalation behaviour is preserved unchanged.
Move the seven Session 1 / 1.5 trait-object and config fields off
CrawlConfig into a single Option<DispatchProfile> field. Callers that
relied on CrawlConfig.bypass.is_some() auto-promoting the strategy to
BypassFirst must now set strategy: EscalationStrategy::BypassFirst
explicitly in this struct (Commit 1.5.12 breaking change).
§Examples
let profile = DispatchProfile::builder()
.strategy(EscalationStrategy::BypassThenBrowser)
.max_total_attempts(15)
.build();
assert_eq!(profile.strategy, EscalationStrategy::BypassThenBrowser);
assert_eq!(profile.max_total_attempts, 15);Fields§
§bypass: Option<DynBypassProvider>Caller-supplied bypass provider.
strategy: EscalationStrategyEscalation strategy for the HTTP → Bypass → Browser dispatch chain.
retry_policy: Option<DynRetryPolicy>Pluggable per-attempt retry/escalation decision policy.
waf_classifier: Option<DynWafClassifier>Pluggable WAF classifier.
domain_state: Option<DynDomainStatePort>Pluggable per-domain state backend.
escalation_budget: Option<DynEscalationBudget>Pluggable per-job escalation budget.
max_total_attempts: u32Maximum total fetch attempts across all tiers before the dispatcher
gives up. Guards against buggy custom RetryPolicy impls that never
return Stop. Default 10.
antibot_strategy: Option<DynAntibotStrategy>Optional pluggable antibot hook pair.
When Some, pre_request fires before each tower-stack fetch and
post_response fires between WAF classification and the retry policy.
When None, the engine’s built-in WAF-signal → escalation logic applies.
Excluded from alef-generated bindings — opaque trait object.
Implementations§
Source§impl DispatchProfile
impl DispatchProfile
Sourcepub fn builder() -> DispatchProfileBuilder
pub fn builder() -> DispatchProfileBuilder
Start a fluent builder for DispatchProfile. See crate::DispatchProfileBuilder.
Trait Implementations§
Source§impl Clone for DispatchProfile
impl Clone for DispatchProfile
Source§fn clone(&self) -> DispatchProfile
fn clone(&self) -> DispatchProfile
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more