use crate::utils::{calc::SlotCalculator, from_env::FromEnv};
#[derive(Debug, Clone, Copy, PartialEq, Eq, serde::Deserialize, FromEnv)]
#[from_env(crate)]
pub struct SlotAuthzConfig {
calc: SlotCalculator,
#[from_env(
var = "BLOCK_QUERY_CUTOFF",
desc = "The block query cutoff time in seconds."
)]
block_query_cutoff: u8,
#[from_env(
var = "BLOCK_QUERY_START",
desc = "The block query start time in seconds."
)]
block_query_start: u8,
}
impl SlotAuthzConfig {
pub fn new(calc: SlotCalculator, block_query_cutoff: u8, block_query_start: u8) -> Self {
Self {
calc,
block_query_cutoff: block_query_cutoff.clamp(0, calc.slot_duration() as u8),
block_query_start: block_query_start.clamp(0, calc.slot_duration() as u8),
}
}
pub const fn calc(&self) -> SlotCalculator {
self.calc
}
pub const fn block_query_cutoff(&self) -> u64 {
self.block_query_cutoff as u64
}
pub const fn block_query_start(&self) -> u64 {
self.block_query_start as u64
}
}