1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
use {
crate::{client_error::Result, rpc_request::RpcRequest},
async_trait::async_trait,
std::time::Duration,
};
#[derive(Default, Clone)]
pub struct RpcTransportStats {
pub request_count: usize,
pub elapsed_time: Duration,
pub rate_limited_time: Duration,
}
#[async_trait]
pub trait RpcSender {
async fn send(
&self,
request: RpcRequest,
params: serde_json::Value,
) -> Result<serde_json::Value>;
fn get_transport_stats(&self) -> RpcTransportStats;
fn url(&self) -> String;
}