rpc: genericize client constructors

This commit is contained in:
Trent Nelson
2022-02-14 23:40:08 -07:00
committed by mergify[bot]
parent 73016d3ed2
commit 7d0a0a26bb
3 changed files with 15 additions and 15 deletions

View File

@ -37,14 +37,14 @@ impl HttpSender {
/// ///
/// The URL is an HTTP URL, usually for port 8899, as in /// The URL is an HTTP URL, usually for port 8899, as in
/// "http://localhost:8899". The sender has a default timeout of 30 seconds. /// "http://localhost:8899". The sender has a default timeout of 30 seconds.
pub fn new(url: String) -> Self { pub fn new<U: ToString>(url: U) -> Self {
Self::new_with_timeout(url, Duration::from_secs(30)) Self::new_with_timeout(url, Duration::from_secs(30))
} }
/// Create an HTTP RPC sender. /// Create an HTTP RPC sender.
/// ///
/// The URL is an HTTP URL, usually for port 8899. /// The URL is an HTTP URL, usually for port 8899.
pub fn new_with_timeout(url: String, timeout: Duration) -> Self { pub fn new_with_timeout<U: ToString>(url: U, timeout: Duration) -> Self {
// `reqwest::blocking::Client` panics if run in a tokio async context. Shuttle the // `reqwest::blocking::Client` panics if run in a tokio async context. Shuttle the
// request to a different tokio thread to avoid this // request to a different tokio thread to avoid this
let client = Arc::new( let client = Arc::new(
@ -58,7 +58,7 @@ impl HttpSender {
Self { Self {
client, client,
url, url: url.to_string(),
request_id: AtomicU64::new(0), request_id: AtomicU64::new(0),
stats: RwLock::new(RpcTransportStats::default()), stats: RwLock::new(RpcTransportStats::default()),
} }

View File

@ -75,13 +75,13 @@ pub struct MockSender {
/// from [`RpcRequest`] to a JSON [`Value`] response, Any entries in this map /// from [`RpcRequest`] to a JSON [`Value`] response, Any entries in this map
/// override the default behavior for the given request. /// override the default behavior for the given request.
impl MockSender { impl MockSender {
pub fn new(url: String) -> Self { pub fn new<U: ToString>(url: U) -> Self {
Self::new_with_mocks(url, Mocks::default()) Self::new_with_mocks(url, Mocks::default())
} }
pub fn new_with_mocks(url: String, mocks: Mocks) -> Self { pub fn new_with_mocks<U: ToString>(url: U, mocks: Mocks) -> Self {
Self { Self {
url, url: url.to_string(),
mocks: RwLock::new(mocks), mocks: RwLock::new(mocks),
} }
} }

View File

@ -191,7 +191,7 @@ impl RpcClient {
/// let url = "http://localhost:8899".to_string(); /// let url = "http://localhost:8899".to_string();
/// let client = RpcClient::new(url); /// let client = RpcClient::new(url);
/// ``` /// ```
pub fn new(url: String) -> Self { pub fn new<U: ToString>(url: U) -> Self {
Self::new_with_commitment(url, CommitmentConfig::default()) Self::new_with_commitment(url, CommitmentConfig::default())
} }
@ -214,7 +214,7 @@ impl RpcClient {
/// let commitment_config = CommitmentConfig::processed(); /// let commitment_config = CommitmentConfig::processed();
/// let client = RpcClient::new_with_commitment(url, commitment_config); /// let client = RpcClient::new_with_commitment(url, commitment_config);
/// ``` /// ```
pub fn new_with_commitment(url: String, commitment_config: CommitmentConfig) -> Self { pub fn new_with_commitment<U: ToString>(url: U, commitment_config: CommitmentConfig) -> Self {
Self::new_sender( Self::new_sender(
HttpSender::new(url), HttpSender::new(url),
RpcClientConfig::with_commitment(commitment_config), RpcClientConfig::with_commitment(commitment_config),
@ -240,7 +240,7 @@ impl RpcClient {
/// let timeout = Duration::from_secs(1); /// let timeout = Duration::from_secs(1);
/// let client = RpcClient::new_with_timeout(url, timeout); /// let client = RpcClient::new_with_timeout(url, timeout);
/// ``` /// ```
pub fn new_with_timeout(url: String, timeout: Duration) -> Self { pub fn new_with_timeout<U: ToString>(url: U, timeout: Duration) -> Self {
Self::new_sender( Self::new_sender(
HttpSender::new_with_timeout(url, timeout), HttpSender::new_with_timeout(url, timeout),
RpcClientConfig::with_commitment(CommitmentConfig::default()), RpcClientConfig::with_commitment(CommitmentConfig::default()),
@ -269,8 +269,8 @@ impl RpcClient {
/// commitment_config, /// commitment_config,
/// ); /// );
/// ``` /// ```
pub fn new_with_timeout_and_commitment( pub fn new_with_timeout_and_commitment<U: ToString>(
url: String, url: U,
timeout: Duration, timeout: Duration,
commitment_config: CommitmentConfig, commitment_config: CommitmentConfig,
) -> Self { ) -> Self {
@ -312,8 +312,8 @@ impl RpcClient {
/// confirm_transaction_initial_timeout, /// confirm_transaction_initial_timeout,
/// ); /// );
/// ``` /// ```
pub fn new_with_timeouts_and_commitment( pub fn new_with_timeouts_and_commitment<U: ToString>(
url: String, url: U,
timeout: Duration, timeout: Duration,
commitment_config: CommitmentConfig, commitment_config: CommitmentConfig,
confirm_transaction_initial_timeout: Duration, confirm_transaction_initial_timeout: Duration,
@ -347,7 +347,7 @@ impl RpcClient {
/// let url = "fails".to_string(); /// let url = "fails".to_string();
/// let successful_client = RpcClient::new_mock(url); /// let successful_client = RpcClient::new_mock(url);
/// ``` /// ```
pub fn new_mock(url: String) -> Self { pub fn new_mock<U: ToString>(url: U) -> Self {
Self::new_sender( Self::new_sender(
MockSender::new(url), MockSender::new(url),
RpcClientConfig::with_commitment(CommitmentConfig::default()), RpcClientConfig::with_commitment(CommitmentConfig::default()),
@ -381,7 +381,7 @@ impl RpcClient {
/// let url = "succeeds".to_string(); /// let url = "succeeds".to_string();
/// let client = RpcClient::new_mock_with_mocks(url, mocks); /// let client = RpcClient::new_mock_with_mocks(url, mocks);
/// ``` /// ```
pub fn new_mock_with_mocks(url: String, mocks: Mocks) -> Self { pub fn new_mock_with_mocks<U: ToString>(url: U, mocks: Mocks) -> Self {
Self::new_sender( Self::new_sender(
MockSender::new_with_mocks(url, mocks), MockSender::new_with_mocks(url, mocks),
RpcClientConfig::with_commitment(CommitmentConfig::default()), RpcClientConfig::with_commitment(CommitmentConfig::default()),