Skip to content

Commit 1ee07ca

Browse files
committed
ref: rename safe to robust provider
1 parent 6c995a2 commit 1ee07ca

File tree

6 files changed

+55
-55
lines changed

6 files changed

+55
-55
lines changed

src/block_range_scanner.rs

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -72,8 +72,8 @@ use tokio_stream::{StreamExt, wrappers::ReceiverStream};
7272

7373
use crate::{
7474
error::ScannerError,
75-
safe_provider::{
76-
DEFAULT_MAX_RETRIES, DEFAULT_MAX_TIMEOUT, DEFAULT_RETRY_INTERVAL, SafeProvider,
75+
robust_provider::{
76+
DEFAULT_MAX_RETRIES, DEFAULT_MAX_TIMEOUT, DEFAULT_RETRY_INTERVAL, RobustProvider,
7777
},
7878
types::{ScannerMessage, ScannerStatus},
7979
};
@@ -198,26 +198,26 @@ impl BlockRangeScanner {
198198
/// Returns an error if the connection fails
199199
#[must_use]
200200
pub fn connect<N: Network>(self, provider: RootProvider<N>) -> ConnectedBlockRangeScanner<N> {
201-
let safe_provider = SafeProvider::new(provider)
201+
let robust_provider = RobustProvider::new(provider)
202202
.max_timeout(self.max_timeout)
203203
.max_retries(self.max_retries)
204204
.retry_interval(self.retry_interval);
205205
ConnectedBlockRangeScanner {
206-
provider: safe_provider,
206+
provider: robust_provider,
207207
max_block_range: self.max_block_range,
208208
}
209209
}
210210
}
211211

212212
pub struct ConnectedBlockRangeScanner<N: Network> {
213-
provider: SafeProvider<N>,
213+
provider: RobustProvider<N>,
214214
max_block_range: u64,
215215
}
216216

217217
impl<N: Network> ConnectedBlockRangeScanner<N> {
218-
/// Returns the `SafeProvider`
218+
/// Returns the `RobustProvider`
219219
#[must_use]
220-
pub fn provider(&self) -> &SafeProvider<N> {
220+
pub fn provider(&self) -> &RobustProvider<N> {
221221
&self.provider
222222
}
223223

@@ -269,7 +269,7 @@ pub enum Command {
269269
}
270270

271271
struct Service<N: Network> {
272-
provider: SafeProvider<N>,
272+
provider: RobustProvider<N>,
273273
max_block_range: u64,
274274
subscriber: Option<mpsc::Sender<Message>>,
275275
websocket_connected: bool,
@@ -280,7 +280,7 @@ struct Service<N: Network> {
280280
}
281281

282282
impl<N: Network> Service<N> {
283-
pub fn new(provider: SafeProvider<N>, max_block_range: u64) -> (Self, mpsc::Sender<Command>) {
283+
pub fn new(provider: RobustProvider<N>, max_block_range: u64) -> (Self, mpsc::Sender<Command>) {
284284
let (cmd_tx, cmd_rx) = mpsc::channel(100);
285285

286286
let service = Self {
@@ -678,7 +678,7 @@ impl<N: Network> Service<N> {
678678

679679
async fn stream_live_blocks(
680680
mut range_start: BlockNumber,
681-
provider: SafeProvider<N>,
681+
provider: RobustProvider<N>,
682682
sender: mpsc::Sender<Message>,
683683
block_confirmations: u64,
684684
max_block_range: u64,
@@ -783,7 +783,7 @@ impl<N: Network> Service<N> {
783783
}
784784

785785
async fn get_block_subscription(
786-
provider: &SafeProvider<N>,
786+
provider: &RobustProvider<N>,
787787
) -> Result<Subscription<N::HeaderResponse>, ScannerError> {
788788
let ws_stream = provider
789789
.subscribe_blocks()
@@ -1018,9 +1018,9 @@ mod tests {
10181018
use tokio::sync::mpsc;
10191019
use tokio_stream::StreamExt;
10201020

1021-
fn mocked_provider(asserter: Asserter) -> SafeProvider<Ethereum> {
1021+
fn mocked_provider(asserter: Asserter) -> RobustProvider<Ethereum> {
10221022
let root_provider = RootProvider::new(RpcClient::mocked(asserter));
1023-
SafeProvider::new(root_provider)
1023+
RobustProvider::new(root_provider)
10241024
}
10251025

10261026
#[test]

src/error.rs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ use alloy::{
77
};
88
use thiserror::Error;
99

10-
use crate::{block_range_scanner::Message, safe_provider::SafeProviderError};
10+
use crate::{block_range_scanner::Message, robust_provider::RobustProviderError};
1111

1212
#[derive(Error, Debug, Clone)]
1313
pub enum ScannerError {
@@ -50,12 +50,12 @@ pub enum ScannerError {
5050
RetryFail(usize),
5151
}
5252

53-
impl From<SafeProviderError> for ScannerError {
54-
fn from(error: SafeProviderError) -> ScannerError {
53+
impl From<RobustProviderError> for ScannerError {
54+
fn from(error: RobustProviderError) -> ScannerError {
5555
match error {
56-
SafeProviderError::RpcError(err) => ScannerError::RpcError(err),
57-
SafeProviderError::Timeout => ScannerError::Timeout,
58-
SafeProviderError::RetryFail(num) => ScannerError::RetryFail(num),
56+
RobustProviderError::RpcError(err) => ScannerError::RpcError(err),
57+
RobustProviderError::Timeout => ScannerError::Timeout,
58+
RobustProviderError::RetryFail(num) => ScannerError::RetryFail(num),
5959
}
6060
}
6161
}

src/event_scanner/message.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
use alloy::{rpc::types::Log, sol_types::SolEvent};
22

3-
use crate::{ScannerError, ScannerMessage, safe_provider::SafeProviderError};
3+
use crate::{ScannerError, ScannerMessage, robust_provider::RobustProviderError};
44

55
pub type Message = ScannerMessage<Vec<Log>, ScannerError>;
66

@@ -10,8 +10,8 @@ impl From<Vec<Log>> for Message {
1010
}
1111
}
1212

13-
impl From<SafeProviderError> for Message {
14-
fn from(error: SafeProviderError) -> Message {
13+
impl From<RobustProviderError> for Message {
14+
fn from(error: RobustProviderError) -> Message {
1515
let scanner_error: ScannerError = error.into();
1616
scanner_error.into()
1717
}

src/event_scanner/modes/common.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ use std::ops::RangeInclusive;
33
use crate::{
44
block_range_scanner::{MAX_BUFFERED_MESSAGES, Message as BlockRangeMessage},
55
event_scanner::{filter::EventFilter, listener::EventListener, message::Message},
6-
safe_provider::{SafeProvider, SafeProviderError},
6+
robust_provider::{RobustProvider, RobustProviderError},
77
};
88
use alloy::{
99
network::Network,
@@ -24,7 +24,7 @@ pub enum ConsumerMode {
2424

2525
pub async fn handle_stream<N: Network>(
2626
mut stream: ReceiverStream<BlockRangeMessage>,
27-
provider: &SafeProvider<N>,
27+
provider: &RobustProvider<N>,
2828
listeners: &[EventListener],
2929
mode: ConsumerMode,
3030
) {
@@ -41,7 +41,7 @@ pub async fn handle_stream<N: Network>(
4141
}
4242

4343
pub fn spawn_log_consumers<N: Network>(
44-
provider: &SafeProvider<N>,
44+
provider: &RobustProvider<N>,
4545
listeners: &[EventListener],
4646
range_tx: &Sender<BlockRangeMessage>,
4747
mode: ConsumerMode,
@@ -128,8 +128,8 @@ async fn get_logs<N: Network>(
128128
range: RangeInclusive<u64>,
129129
event_filter: &EventFilter,
130130
log_filter: &Filter,
131-
provider: &SafeProvider<N>,
132-
) -> Result<Vec<Log>, SafeProviderError> {
131+
provider: &RobustProvider<N>,
132+
) -> Result<Vec<Log>, RobustProviderError> {
133133
let log_filter = log_filter.clone().from_block(*range.start()).to_block(*range.end());
134134

135135
match provider.get_logs(&log_filter).await {

src/lib.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
pub mod block_range_scanner;
22
pub mod error;
33
pub mod event_scanner;
4-
mod safe_provider;
4+
mod robust_provider;
55
#[cfg(any(test, feature = "test-utils"))]
66
pub mod test_utils;
77
pub mod types;
Lines changed: 27 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ use thiserror::Error;
1313
use tracing::{error, info};
1414

1515
#[derive(Error, Debug, Clone)]
16-
pub enum SafeProviderError {
16+
pub enum RobustProviderError {
1717
#[error("RPC error: {0}")]
1818
RpcError(Arc<RpcError<TransportErrorKind>>),
1919
#[error("Operation timed out")]
@@ -22,9 +22,9 @@ pub enum SafeProviderError {
2222
RetryFail(usize),
2323
}
2424

25-
impl From<RpcError<TransportErrorKind>> for SafeProviderError {
25+
impl From<RpcError<TransportErrorKind>> for RobustProviderError {
2626
fn from(err: RpcError<TransportErrorKind>) -> Self {
27-
SafeProviderError::RpcError(Arc::new(err))
27+
RobustProviderError::RpcError(Arc::new(err))
2828
}
2929
}
3030

@@ -33,23 +33,23 @@ impl From<RpcError<TransportErrorKind>> for SafeProviderError {
3333
/// This wrapper around Alloy providers automatically handles retries,
3434
/// timeouts, and error logging for RPC calls.
3535
#[derive(Clone)]
36-
pub struct SafeProvider<N: Network> {
36+
pub struct RobustProvider<N: Network> {
3737
provider: RootProvider<N>,
3838
max_timeout: Duration,
3939
max_retries: usize,
4040
retry_interval: Duration,
4141
}
4242

4343
// RPC retry and timeout settings
44-
/// Default timeout used by `SafeProvider`
44+
/// Default timeout used by `RobustProvider`
4545
pub const DEFAULT_MAX_TIMEOUT: Duration = Duration::from_secs(30);
4646
/// Default maximum number of retry attempts.
4747
pub const DEFAULT_MAX_RETRIES: usize = 5;
4848
/// Default base delay between retries.
4949
pub const DEFAULT_RETRY_INTERVAL: Duration = Duration::from_secs(1);
5050

51-
impl<N: Network> SafeProvider<N> {
52-
/// Create a new `SafeProvider` with default settings.
51+
impl<N: Network> RobustProvider<N> {
52+
/// Create a new `RobustProvider` with default settings.
5353
#[must_use]
5454
pub fn new(provider: RootProvider<N>) -> Self {
5555
Self {
@@ -87,10 +87,10 @@ impl<N: Network> SafeProvider<N> {
8787
pub async fn get_block_by_number(
8888
&self,
8989
number: BlockNumberOrTag,
90-
) -> Result<Option<N::BlockResponse>, SafeProviderError> {
90+
) -> Result<Option<N::BlockResponse>, RobustProviderError> {
9191
info!("eth_getBlockByNumber called");
9292
let operation = async || {
93-
self.provider.get_block_by_number(number).await.map_err(SafeProviderError::from)
93+
self.provider.get_block_by_number(number).await.map_err(RobustProviderError::from)
9494
};
9595
let result = self.retry_with_total_timeout(operation).await;
9696
if let Err(e) = &result {
@@ -105,10 +105,10 @@ impl<N: Network> SafeProvider<N> {
105105
///
106106
/// Returns an error if RPC call fails repeatedly even
107107
/// after exhausting retries or if the call times out.
108-
pub async fn get_block_number(&self) -> Result<u64, SafeProviderError> {
108+
pub async fn get_block_number(&self) -> Result<u64, RobustProviderError> {
109109
info!("eth_getBlockNumber called");
110110
let operation =
111-
async || self.provider.get_block_number().await.map_err(SafeProviderError::from);
111+
async || self.provider.get_block_number().await.map_err(RobustProviderError::from);
112112
let result = self.retry_with_total_timeout(operation).await;
113113
if let Err(e) = &result {
114114
error!(error = %e, "eth_getBlockNumber failed");
@@ -125,10 +125,10 @@ impl<N: Network> SafeProvider<N> {
125125
pub async fn get_block_by_hash(
126126
&self,
127127
hash: alloy::primitives::BlockHash,
128-
) -> Result<Option<N::BlockResponse>, SafeProviderError> {
128+
) -> Result<Option<N::BlockResponse>, RobustProviderError> {
129129
info!("eth_getBlockByHash called");
130130
let operation =
131-
async || self.provider.get_block_by_hash(hash).await.map_err(SafeProviderError::from);
131+
async || self.provider.get_block_by_hash(hash).await.map_err(RobustProviderError::from);
132132
let result = self.retry_with_total_timeout(operation).await;
133133
if let Err(e) = &result {
134134
error!(error = %e, "eth_getBlockByHash failed");
@@ -142,10 +142,10 @@ impl<N: Network> SafeProvider<N> {
142142
///
143143
/// Returns an error if RPC call fails repeatedly even
144144
/// after exhausting retries or if the call times out.
145-
pub async fn get_logs(&self, filter: &Filter) -> Result<Vec<Log>, SafeProviderError> {
145+
pub async fn get_logs(&self, filter: &Filter) -> Result<Vec<Log>, RobustProviderError> {
146146
info!("eth_getLogs called");
147147
let operation =
148-
async || self.provider.get_logs(filter).await.map_err(SafeProviderError::from);
148+
async || self.provider.get_logs(filter).await.map_err(RobustProviderError::from);
149149
let result = self.retry_with_total_timeout(operation).await;
150150
if let Err(e) = &result {
151151
error!(error = %e, "eth_getLogs failed");
@@ -161,12 +161,12 @@ impl<N: Network> SafeProvider<N> {
161161
/// after exhausting retries or if the call times out.
162162
pub async fn subscribe_blocks(
163163
&self,
164-
) -> Result<Subscription<N::HeaderResponse>, SafeProviderError> {
164+
) -> Result<Subscription<N::HeaderResponse>, RobustProviderError> {
165165
info!("eth_subscribe called");
166166
let provider = self.provider.clone();
167167
let result = self
168168
.retry_with_total_timeout(|| async {
169-
provider.subscribe_blocks().await.map_err(SafeProviderError::from)
169+
provider.subscribe_blocks().await.map_err(RobustProviderError::from)
170170
})
171171
.await;
172172
if let Err(e) = &result {
@@ -189,10 +189,10 @@ impl<N: Network> SafeProvider<N> {
189189
async fn retry_with_total_timeout<T, F, Fut>(
190190
&self,
191191
operation: F,
192-
) -> Result<T, SafeProviderError>
192+
) -> Result<T, RobustProviderError>
193193
where
194194
F: Fn() -> Fut,
195-
Fut: Future<Output = Result<T, SafeProviderError>>,
195+
Fut: Future<Output = Result<T, RobustProviderError>>,
196196
{
197197
let retry_strategy = ExponentialBuilder::default()
198198
.with_max_times(self.max_retries)
@@ -205,8 +205,8 @@ impl<N: Network> SafeProvider<N> {
205205
.await
206206
{
207207
Ok(Ok(res)) => Ok(res),
208-
Ok(Err(_)) => Err(SafeProviderError::RetryFail(self.max_retries + 1)),
209-
Err(_) => Err(SafeProviderError::Timeout),
208+
Ok(Err(_)) => Err(RobustProviderError::RetryFail(self.max_retries + 1)),
209+
Err(_) => Err(RobustProviderError::Timeout),
210210
}
211211
}
212212
}
@@ -222,8 +222,8 @@ mod tests {
222222
timeout: u64,
223223
max_retries: usize,
224224
retry_interval: u64,
225-
) -> SafeProvider<Ethereum> {
226-
SafeProvider {
225+
) -> RobustProvider<Ethereum> {
226+
RobustProvider {
227227
provider: RootProvider::new_http("http://localhost:8545".parse().unwrap()),
228228
max_timeout: Duration::from_millis(timeout),
229229
max_retries,
@@ -257,7 +257,7 @@ mod tests {
257257
.retry_with_total_timeout(|| async {
258258
call_count.fetch_add(1, Ordering::SeqCst);
259259
if call_count.load(Ordering::SeqCst) < 3 {
260-
Err(SafeProviderError::RpcError(Arc::new(TransportErrorKind::custom_str(
260+
Err(RobustProviderError::RpcError(Arc::new(TransportErrorKind::custom_str(
261261
"temp error",
262262
))))
263263
} else {
@@ -279,12 +279,12 @@ mod tests {
279279
.retry_with_total_timeout(|| async {
280280
call_count.fetch_add(1, Ordering::SeqCst);
281281
// permanent error
282-
Err::<i32, SafeProviderError>(SafeProviderError::Timeout)
282+
Err::<i32, RobustProviderError>(RobustProviderError::Timeout)
283283
})
284284
.await;
285285

286286
let err = result.unwrap_err();
287-
assert!(matches!(err, SafeProviderError::RetryFail(3)));
287+
assert!(matches!(err, RobustProviderError::RetryFail(3)));
288288
assert_eq!(call_count.load(Ordering::SeqCst), 3);
289289
}
290290

@@ -301,6 +301,6 @@ mod tests {
301301
.await;
302302

303303
let err = result.unwrap_err();
304-
assert!(matches!(err, SafeProviderError::Timeout));
304+
assert!(matches!(err, RobustProviderError::Timeout));
305305
}
306306
}

0 commit comments

Comments
 (0)