alloy_rpc_client

Struct RpcClientInner

source
pub struct RpcClientInner<T> { /* private fields */ }
Expand description

A JSON-RPC client.

This struct manages a Transport and a request ID counter. It is used to build RpcCall and BatchRequest objects. The client delegates transport access to the calls.

§Note

IDs are allocated sequentially, starting at 0. IDs are reserved via RpcClientInner::next_id. Note that allocated IDs may not be used. There is no guarantee that a prepared RpcCall will be sent, or that a sent call will receive a response.

Implementations§

source§

impl RpcClientInner<PubSubFrontend>

source

pub async fn get_raw_subscription(&self, id: B256) -> RawSubscription

Available on crate feature pubsub only.

Get a RawSubscription for the given subscription ID.

source

pub async fn get_subscription<T: DeserializeOwned>( &self, id: B256, ) -> Subscription<T>

Available on crate feature pubsub only.

Get a Subscription for the given subscription ID.

source§

impl<T> RpcClientInner<T>

source

pub const fn new(t: T, is_local: bool) -> Self

Create a new RpcClient with the given transport.

Note: Sets the poll interval to 250ms for local transports and 7s for remote transports by default.

source

pub fn with_id(self, id: u64) -> Self

Sets the starting ID for the client.

source

pub fn poll_interval(&self) -> Duration

Returns the default poll interval (milliseconds) for the client.

source

pub fn set_poll_interval(&self, poll_interval: Duration)

Set the poll interval for the client in milliseconds. Default: 7s for remote and 250ms for local transports.

source

pub const fn transport(&self) -> &T

Returns a reference to the underlying transport.

source

pub fn transport_mut(&mut self) -> &mut T

Returns a mutable reference to the underlying transport.

source

pub fn into_transport(self) -> T

Consumes the client and returns the underlying transport.

source

pub fn pubsub_frontend(&self) -> Option<&PubSubFrontend>
where T: Any,

Available on crate feature pubsub only.

Returns a reference to the pubsub frontend if the transport supports it.

source

pub fn make_request<Params: RpcParam>( &self, method: impl Into<Cow<'static, str>>, params: Params, ) -> Request<Params>

Build a JsonRpcRequest with the given method and params.

This function reserves an ID for the request, however the request is not sent.

To send a request, use RpcClientInner::request and await the returned RpcCall.

source

pub const fn is_local(&self) -> bool

true if the client believes the transport is local.

This can be used to optimize remote API usage, or to change program behavior on local endpoints. When the client is instantiated by parsing a URL or other external input, this value is set on a best-efforts basis and may be incorrect.

source

pub fn set_local(&mut self, is_local: bool)

Set the is_local flag.

source

pub fn next_id(&self) -> Id

Reserve a request ID u64.

source§

impl<T: Transport + Clone> RpcClientInner<T>

source

pub fn request<Params: RpcParam, Resp: RpcReturn>( &self, method: impl Into<Cow<'static, str>>, params: Params, ) -> RpcCall<T, Params, Resp>

Prepares an RpcCall.

This function reserves an ID for the request, however the request is not sent. To send a request, await the returned RpcCall.

§Note

Serialization is done lazily. It will not be performed until the call is awaited. This means that if a serializer error occurs, it will not be caught until the call is awaited.

source

pub fn request_noparams<Resp: RpcReturn>( &self, method: impl Into<Cow<'static, str>>, ) -> RpcCall<T, NoParams, Resp>

Prepares an RpcCall with no parameters.

See request for more details.

source

pub fn boxed(self) -> RpcClientInner<BoxTransport>

Type erase the service in the transport, allowing it to be used in a generic context.

§Note:

This is for abstracting over RpcClient<T> for multiple T by erasing each type. E.g. if you have RpcClient<Http> and RpcClient<Ws> you can put both into a Vec<RpcClient<BoxTransport>>.

Trait Implementations§

source§

impl<T: Debug> Debug for RpcClientInner<T>

source§

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

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl<T> !Freeze for RpcClientInner<T>

§

impl<T> RefUnwindSafe for RpcClientInner<T>
where T: RefUnwindSafe,

§

impl<T> Send for RpcClientInner<T>
where T: Send,

§

impl<T> Sync for RpcClientInner<T>
where T: Sync,

§

impl<T> Unpin for RpcClientInner<T>
where T: Unpin,

§

impl<T> UnwindSafe for RpcClientInner<T>
where T: UnwindSafe,

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> 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