in below/store/src/advance.rs [414:445]
fn get_sample_at_timestamp(
&mut self,
timestamp: SystemTime,
direction: Direction,
) -> Result<Option<(SystemTime, Self::SampleType)>> {
if self.raise_error {
bail!("error");
}
let timestamp = util::get_unix_timestamp(timestamp);
// corner cases
if self.sample.is_empty()
|| (timestamp < *self.sample.first().unwrap() && direction == Direction::Reverse)
|| (timestamp > *self.sample.last().unwrap() && direction == Direction::Forward)
{
return Ok(None);
}
match self.sample.binary_search(×tamp) {
Ok(_) => Ok(Some((util::get_system_time(timestamp), timestamp))),
Err(idx) => match direction {
Direction::Reverse => Ok(Some((
util::get_system_time(self.sample[idx - 1]),
self.sample[idx - 1],
))),
Direction::Forward => Ok(Some((
util::get_system_time(self.sample[idx]),
self.sample[idx],
))),
},
}
}