use super::*;
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct SchedulerRequirements {
required: bool,
max_concurrency: u32,
}
impl SchedulerRequirements {
pub fn new(required: bool, max_concurrency: u32) -> ContractResult<Self> {
if required && max_concurrency == 0 {
return Err(ContractError::InvalidValue {
field: "scheduler.max_concurrency",
reason: "must be greater than zero when a scheduler is required",
});
}
Ok(Self {
required,
max_concurrency,
})
}
pub fn is_required(&self) -> bool {
self.required
}
pub fn max_concurrency(&self) -> u32 {
self.max_concurrency
}
pub(crate) fn validate(&self) -> ContractResult<()> {
if self.required && self.max_concurrency == 0 {
return Err(ContractError::InvalidValue {
field: "scheduler.max_concurrency",
reason: "must be greater than zero when a scheduler is required",
});
}
Ok(())
}
}