use crate::control::maintenance::MaintenanceLease;
use crate::data::executor::core_loop::CoreLoop;
use nodedb_types::DatabaseId;
pub(in crate::data::executor::handlers) enum BudgetGate {
Granted(Option<MaintenanceLease>),
Deferred,
}
impl CoreLoop {
pub(in crate::data::executor::handlers) fn acquire_maintenance_lease(
&self,
db: DatabaseId,
force: bool,
) -> BudgetGate {
if force {
return BudgetGate::Granted(None);
}
match self.maintenance_budget.as_ref() {
None => BudgetGate::Granted(None),
Some(tracker) => match tracker.try_acquire(db, 0.0) {
Some(lease) => BudgetGate::Granted(Some(lease)),
None => BudgetGate::Deferred,
},
}
}
}