use super::*;
pub(crate) fn guard_lease<L: LeaseFence>(
current: Option<&L>,
expected_token: &str,
now: u64,
) -> bool {
match current {
Some(current) => {
current.lease_token() == expected_token && current.expires_at_epoch_ms() > now
}
None => false,
}
}
pub(crate) trait LeaseFence {
fn lease_token(&self) -> &str;
fn expires_at_epoch_ms(&self) -> u64;
}
impl LeaseFence for ProcessLease {
fn lease_token(&self) -> &str {
&self.lease_token
}
fn expires_at_epoch_ms(&self) -> u64 {
self.expires_at_epoch_ms
}
}