Skip to main content

PoolBuilder

Struct PoolBuilder 

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

Build a reusable pool. Clone the resulting pool to share rotation counters, health state, and per-node connection pools across tasks.

Implementations§

Source§

impl PoolBuilder

Source

pub fn new() -> Self

Start with per-request rotation, a 30s request timeout, and passive health feedback.

Source

pub fn subscription(self, source: SubscriptionSource) -> Self

Add a subscription; repeated source URLs are deduplicated.

Source

pub fn nodes(self, nodes: impl IntoIterator<Item = ProxyNode>) -> Self

Add static nodes, optionally alongside subscriptions.

Source

pub fn cache(self, policy: CachePolicy) -> Self

Enable private, atomic on-disk subscription caching. Disabled by default.

Source

pub fn rotation(self, policy: RotationPolicy) -> Self

Configure request-count and/or time-based rotation.

Source

pub fn health(self, policy: HealthPolicy) -> Self

Configure health probes and failure cooldowns.

Source

pub fn subscription_client(self, client: Client) -> Self

Override the subscription HTTP client, for example to use a bootstrap proxy. Its headers, redirects, and TLS policy are controlled by the caller.

Source

pub fn request_timeout(self, timeout: Duration) -> Self

Set the total timeout for each business request.

Source

pub fn connect_timeout(self, timeout: Duration) -> Self

Set the connection timeout for each business client.

Source

pub fn subscription_timeout(self, timeout: Duration) -> Self

Bound the entire subscription download, including custom clients.

Source

pub fn refresh_interval(self, interval: Duration) -> Self

Background remote refresh frequency, independent of the disk cache TTL.

Source

pub fn health_interval(self, interval: Duration) -> Self

Background health check frequency.

Source

pub fn max_subscription_bytes(self, bytes: usize) -> Self

Maximum response bytes accepted per subscription.

Source

pub fn max_in_flight_per_proxy(self, limit: NonZeroUsize) -> Self

Bound business attempts per node. Saturated nodes are skipped; if all healthy nodes are busy, acquisition returns Error::PoolSaturated. Automatic execution releases its slot at response headers; a manual lease can be held until its response body has been consumed.

Source

pub fn subscription_concurrency(self, limit: NonZeroUsize) -> Self

Bound simultaneous subscription requests, preserving source order.

Source

pub async fn build(self) -> Result<ProxyPool>

Fetch or restore subscriptions, build clients, and optionally probe nodes. Returns an error for an empty pool or if initial checks find no healthy node.

Trait Implementations§

Source§

impl Default for PoolBuilder

Source§

fn default() -> Self

Returns the “default value” for a type. 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> 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, 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