Skip to content

Commit 0ea6b05

Browse files
committed
feat: add convenience scan_latest_in_range
1 parent fa9bca6 commit 0ea6b05

File tree

2 files changed

+23
-12
lines changed

2 files changed

+23
-12
lines changed

src/event_scanner.rs

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -400,12 +400,23 @@ impl<N: Network> Client<N> {
400400
self.event_scanner.start(start_height, end_height).await
401401
}
402402

403-
/// Scans the latest `count` blocks in a given block range.
403+
/// Scans the latest `count` events.
404404
///
405405
/// # Errors
406406
///
407407
/// Returns an error if the scanner fails to scan
408-
pub async fn scan_latest(
408+
pub async fn scan_latest(self, count: usize) -> Result<(), EventScannerError> {
409+
self.event_scanner
410+
.scan_latest(count, BlockNumberOrTag::Earliest, BlockNumberOrTag::Latest)
411+
.await
412+
}
413+
414+
/// Scans the latest `count` events in a given block range.
415+
///
416+
/// # Errors
417+
///
418+
/// Returns an error if the scanner fails to scan
419+
pub async fn scan_latest_in_range(
409420
self,
410421
count: usize,
411422
start_height: BlockNumberOrTag,

tests/latest_events/basic.rs

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ async fn scan_latest_exact_count_returns_last_events_in_order() -> anyhow::Resul
6060
}
6161

6262
// Ask for the latest 5
63-
client.scan_latest(5, BlockNumberOrTag::Earliest, BlockNumberOrTag::Latest).await?;
63+
client.scan_latest(5).await?;
6464

6565
let logs = collect_events(&mut stream).await;
6666

@@ -89,7 +89,7 @@ async fn scan_latest_fewer_available_than_count_returns_all() -> anyhow::Result<
8989
tx_hashes.push(receipt.transaction_hash);
9090
}
9191

92-
client.scan_latest(5, BlockNumberOrTag::Earliest, BlockNumberOrTag::Latest).await?;
92+
client.scan_latest(5).await?;
9393

9494
let logs = collect_events(&mut stream).await;
9595

@@ -109,7 +109,7 @@ async fn scan_latest_no_events_returns_empty() -> anyhow::Result<()> {
109109
let client = setup.client;
110110
let mut stream = setup.stream;
111111

112-
client.scan_latest(5, BlockNumberOrTag::Earliest, BlockNumberOrTag::Latest).await?;
112+
client.scan_latest(5).await?;
113113

114114
let logs = collect_events(&mut stream).await;
115115

@@ -146,7 +146,7 @@ async fn scan_latest_respects_range_subset() -> anyhow::Result<()> {
146146
let start = BlockNumberOrTag::from(head - 3);
147147
let end = BlockNumberOrTag::from(head);
148148

149-
client.scan_latest(10, start, end).await?;
149+
client.scan_latest_in_range(10, start, end).await?;
150150

151151
let logs = collect_events(&mut stream).await;
152152

@@ -181,7 +181,7 @@ async fn scan_latest_multiple_listeners_to_same_event_receive_same_results() ->
181181
tx_hashes.push(receipt.transaction_hash);
182182
}
183183

184-
client.scan_latest(5, BlockNumberOrTag::Earliest, BlockNumberOrTag::Latest).await?;
184+
client.scan_latest(5).await?;
185185

186186
let logs1 = collect_events(&mut stream1).await;
187187
let logs2 = collect_events(&mut stream2).await;
@@ -230,7 +230,7 @@ async fn scan_latest_different_filters_receive_different_results() -> anyhow::Re
230230

231231
// Ask for latest 3 across the full range: each filtered listener should receive their own last
232232
// 3 events
233-
client.scan_latest(3, BlockNumberOrTag::Earliest, BlockNumberOrTag::Latest).await?;
233+
client.scan_latest(3).await?;
234234

235235
let logs_inc = collect_events(&mut stream_inc).await;
236236
let logs_dec = collect_events(&mut stream_dec).await;
@@ -284,7 +284,7 @@ async fn scan_latest_mixed_events_and_filters_return_correct_streams() -> anyhow
284284
// dec -> 1
285285
dec_hashes.push(contract.decrease().send().await?.get_receipt().await?.transaction_hash);
286286

287-
client.scan_latest(2, BlockNumberOrTag::Earliest, BlockNumberOrTag::Latest).await?;
287+
client.scan_latest(2).await?;
288288

289289
let inc_logs = collect_events(&mut inc_stream).await;
290290
let dec_logs = collect_events(&mut dec_stream).await;
@@ -343,7 +343,7 @@ async fn scan_latest_cross_contract_filtering() -> anyhow::Result<()> {
343343
let _ = contract_b.increase().send().await?.get_receipt().await?; // ignored by filter
344344
a_hashes.push(contract_a.increase().send().await?.get_receipt().await?.transaction_hash);
345345

346-
client.scan_latest(5, BlockNumberOrTag::Earliest, BlockNumberOrTag::Latest).await?;
346+
client.scan_latest(5).await?;
347347

348348
let logs_a = collect_events(&mut stream_a).await;
349349
assert_eq!(logs_a.len(), 3);
@@ -390,7 +390,7 @@ async fn scan_latest_large_gaps_and_empty_ranges() -> anyhow::Result<()> {
390390
let start = BlockNumberOrTag::from(head - 12);
391391
let end = BlockNumberOrTag::from(head);
392392

393-
client.scan_latest(5, start, end).await?;
393+
client.scan_latest_in_range(5, start, end).await?;
394394
let logs = collect_events(&mut stream).await;
395395

396396
assert_eq!(logs.len(), 3);
@@ -423,7 +423,7 @@ async fn scan_latest_boundary_range_single_block() -> anyhow::Result<()> {
423423
let start = BlockNumberOrTag::from(mid_block);
424424
let end = BlockNumberOrTag::from(mid_block);
425425

426-
client.scan_latest(5, start, end).await?;
426+
client.scan_latest_in_range(5, start, end).await?;
427427
let logs = collect_events(&mut stream).await;
428428

429429
// Expect exactly the middle event only, with count 2

0 commit comments

Comments
 (0)