Skip to main content

BrowserSelector

Struct BrowserSelector 

Source
pub struct BrowserSelector { /* private fields */ }
Expand description

Picks the next browser in rotation based on per-domain failure history.

Follows the server’s hints.rs logic:

  1. Try current browser until ROTATE_AFTER_FAILURES consecutive failures.
  2. Then move to the next browser in BROWSER_ROTATION order.
  3. Skip browsers that have also exceeded the failure threshold.

Implementations§

Source§

impl BrowserSelector

Source

pub fn new(tracker: FailureTracker) -> Self

Create a new selector backed by the given failure tracker.

Source

pub fn failure_tracker(&self) -> &FailureTracker

Borrow the underlying failure tracker.

Source

pub fn should_rotate(&self, domain: &str, current_browser: &str) -> bool

Check if the current browser should be rotated for a domain.

Returns true when the failure count for (domain, current_browser) meets or exceeds ROTATE_AFTER_FAILURES.

Source

pub fn next_browser( &self, domain: &str, current_browser: &str, ) -> Option<&'static str>

Pick the next browser to try after current_browser has failed.

Walks BROWSER_ROTATION starting from the position after current_browser, wrapping around, and returns the first candidate that has not exceeded the failure threshold for domain.

Returns None if every browser in the rotation has been exhausted.

Source

pub fn choose_browser<'a>(&self, domain: &str, fallback: &'a str) -> &'a str
where 'static: 'a,

Choose the best browser for a domain (mirrors hints.rs choose_browser_for_domain).

Returns the first browser in BROWSER_ROTATION that has not exceeded the failure threshold. Falls back to fallback if every browser is exhausted.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more