use super::{touch_activity, SharedActivityTimestamp};
pub struct ActivityTrackingReader<R: std::io::Read> {
inner: R,
activity_timestamp: SharedActivityTimestamp,
}
impl<R: std::io::Read> ActivityTrackingReader<R> {
pub fn new(inner: R, activity_timestamp: SharedActivityTimestamp) -> Self {
touch_activity(&activity_timestamp);
Self {
inner,
activity_timestamp,
}
}
}
impl<R: std::io::Read> std::io::Read for ActivityTrackingReader<R> {
fn read(&mut self, buf: &mut [u8]) -> std::io::Result<usize> {
let n = std::io::Read::read(&mut self.inner, buf)?;
if n > 0 {
touch_activity(&self.activity_timestamp);
}
Ok(n)
}
}