custom_retry/
custom_retry.rs1use cd_da_reader::{CdReader, RetryConfig};
7
8fn main() -> Result<(), Box<dyn std::error::Error>> {
9 let reader = CdReader::open_default()?;
10 let toc = reader.read_toc()?;
11
12 let first_audio = toc
13 .tracks
14 .iter()
15 .find(|t| t.is_audio)
16 .ok_or("no audio tracks found")?;
17
18 let retry = RetryConfig {
21 max_attempts: 8,
22 initial_backoff_ms: 50,
23 max_backoff_ms: 1000,
24 reduce_chunk_on_retry: true,
25 min_sectors_per_read: 1,
26 };
27
28 println!(
29 "Reading track {} with aggressive retry...",
30 first_audio.number
31 );
32 let data = reader.read_track_with_retry(&toc, first_audio.number, &retry)?;
33
34 let wav = CdReader::create_wav(data);
35 let filename = format!("track{:02}.wav", first_audio.number);
36 std::fs::write(&filename, wav)?;
37 println!("Saved {}", filename);
38
39 Ok(())
40}