in elasticsearch/src/http/transport.rs [919:943]
fn reseedable(&self) -> bool {
let inner = self.inner.read();
let reseed_frequency = match self.reseed_frequency {
Some(wait) => wait,
None => return false,
};
let last_update_is_stale = inner
.last_update
.as_ref()
.map(|last_update| last_update.elapsed() > reseed_frequency);
let reseedable = last_update_is_stale.unwrap_or(true);
if !reseedable {
false
} else {
// Check if refreshing is false if so, sets to true atomically and returns old value (false) meaning refreshable is true
// If refreshing is set to true, do nothing and return true, meaning refreshable is false
!self
.reseeding
.compare_exchange(false, true, Ordering::Relaxed, Ordering::Relaxed)
// This can be replaced with `.into_ok_or_err` once stable.
// https://doc.rust-lang.org/std/result/enum.Result.html#method.into_ok_or_err
.unwrap_or(true)
}
}