RpcEndpoint

Struct RpcEndpoint 

Source
pub struct RpcEndpoint {
    pub name: String,
    pub url: String,
    pub healthy: bool,
    pub last_check: Instant,
    pub cooldown_until: Option<Instant>,
    pub cooldown_attempts: u32,
    pub rate_limit_per_sec: u32,
    pub burst_size: u32,
    pub weight: u32,
    pub metrics: Arc<EndpointMetrics>,
}
Expand description

Represents the state and configuration of a single upstream JSON-RPC endpoint.

Fields§

§name: String

The name of the endpoint for identification

§url: String

The URL of the RPC endpoint.

§healthy: bool

Whether the endpoint is currently considered healthy based on the last health check.

§last_check: Instant

The timestamp of the last health check.

§cooldown_until: Option<Instant>

If the endpoint is in cooldown, this holds the time until it is available again.

§cooldown_attempts: u32

The number of times this endpoint has been put into cooldown. Used for exponential backoff.

§rate_limit_per_sec: u32

The configured rate limit in requests per second.

§burst_size: u32

The configured burst size for the rate limiter.

§weight: u32

The manual priority weight assigned to this endpoint. Higher is better.

§metrics: Arc<EndpointMetrics>

A shared, atomically updatable struct for tracking performance metrics.

Implementations§

Source§

impl RpcEndpoint

Source

pub fn is_in_cooldown(&self) -> bool

Returns true if the endpoint is currently in a cooldown period.

Source

pub fn cooldown_remaining_secs(&self) -> i64

Returns the number of seconds remaining in the cooldown period. Returns 0 if the endpoint is not in cooldown.

Source

pub fn is_available(&self) -> bool

Returns true if the endpoint is healthy and not in cooldown. This is the primary check to determine if an endpoint can be used.

Trait Implementations§

Source§

impl Clone for RpcEndpoint

Source§

fn clone(&self) -> RpcEndpoint

Returns a duplicate of the value. Read more
1.0.0 · Source§

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

Performs copy-assignment from source. Read more
Source§

impl Debug for RpcEndpoint

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. 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<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: 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> 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 = 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<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
Source§

impl<T> ErasedDestructor for T
where T: 'static,