use crate::error::Error;
#[derive(Debug)]
pub struct Event {
pub kind: EventKind,
}
#[derive(Debug)]
pub enum EventKind {
DriveOpened { device: String },
DriveReady,
InitComplete { success: bool },
ProbeComplete { success: bool },
ScanComplete { titles: usize },
BytesRead {
bytes: u64,
total: u64,
},
ReadError {
sector: u64,
error: Error,
},
Retry {
attempt: u32,
},
SpeedChange {
speed_kbs: u16,
},
ExtentStart {
index: usize,
start_sector: u64,
sector_count: u64,
},
SectorRecovered { sector: u64 },
SectorSkipped { sector: u64 },
BatchSizeChanged {
new_size: u16,
reason: BatchSizeReason,
},
Complete {
bytes: u64,
errors: u32,
},
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum BatchSizeReason {
Shrunk,
Probed,
}
pub fn ignore(_event: Event) {}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn batch_size_reason_variants_are_not_equal() {
assert_ne!(BatchSizeReason::Shrunk, BatchSizeReason::Probed);
}
#[test]
fn batch_size_reason_is_copy() {
let r = BatchSizeReason::Shrunk;
let _r2 = r; let _r3 = r; }
}