Skip to main content

ProxyPool

Struct ProxyPool 

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

A pool whose clones share clients, counters, cached nodes, and health state.

Implementations§

Source§

impl ProxyPool

Source

pub fn builder() -> PoolBuilder

Configure a new shared pool.

Source

pub fn session(&self, policy: RotationPolicy) -> Result<ProxySession>

Create an independently rotating session. New sessions receive initial nodes in round-robin order; no global session map or lifetime limit is needed.

Source

pub fn last_refresh_report(&self) -> Option<RefreshReport>

Inspect the most recent startup, manual, or background refresh.

Source

pub fn stats(&self) -> PoolStats

Inspect node counts without exposing subscription URLs or credentials.

Source

pub fn nodes(&self) -> Vec<ProxyNode>

Snapshot configured nodes. Node Debug is redacted; serialization is not.

Source

pub fn rotate(&self)

Force rotation on the next acquisition, preserving round-robin position.

Source

pub fn acquire(&self) -> Result<ProxyLease>

Reserve exactly one request attempt. The reservation consumes one quota even if later cancelled; network work does not hold the selection mutex.

Source

pub async fn execute(&self, request: Request) -> Result<Response>

Send one request without automatic replay. Reports connection errors, timeouts, transport disconnects, and HTTP 407 as failures. Local request and body-stream errors do not count against the proxy’s health. Other HTTP statuses count as connectivity success. Success is measured when response headers arrive, not when its body is read.

Source

pub async fn execute_with_failover( &self, request: Request, max_attempts: NonZeroUsize, ) -> Result<Response>

Opt-in failover for GET, HEAD, and OPTIONS only. Each attempt uses a distinct eligible node and consumes quota. Only connection/timeouts retry; HTTP responses and uncloneable bodies are never automatically replayed.

Source

pub async fn refresh(&self) -> Result<RefreshReport>

Fetch remote sources now regardless of disk TTL. Failed or empty updates retain previous nodes. Unchanged endpoints retain clients and health state.

Source

pub async fn check_health(&self) -> PoolStats

Probe all nodes with bounded concurrency. Probes never consume rotation quota. Open cooldowns are respected; stale probe outcomes cannot overwrite a newer business-request result.

Source

pub fn spawn_maintenance(&self) -> MaintenanceTask

Start maintenance if needed, sharing tasks with existing handles. The last handle’s drop cancels maintenance. Build never implicitly starts tasks.

Trait Implementations§

Source§

impl Clone for ProxyPool

Source§

fn clone(&self) -> ProxyPool

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more

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<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. 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: Sized + 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: Sized + 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> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

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

Source§

type Error = !

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

fn try_from(value: U) -> Result<T, !>

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