appcore_contracts/policy/
scheduler.rs1use super::*;
12
13#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
15pub struct SchedulerRequirements {
16 required: bool,
17 max_concurrency: u32,
18}
19
20impl SchedulerRequirements {
21 pub fn new(required: bool, max_concurrency: u32) -> ContractResult<Self> {
23 if required && max_concurrency == 0 {
24 return Err(ContractError::InvalidValue {
25 field: "scheduler.max_concurrency",
26 reason: "must be greater than zero when a scheduler is required",
27 });
28 }
29 Ok(Self {
30 required,
31 max_concurrency,
32 })
33 }
34
35 pub fn is_required(&self) -> bool {
37 self.required
38 }
39
40 pub fn max_concurrency(&self) -> u32 {
42 self.max_concurrency
43 }
44
45 pub(crate) fn validate(&self) -> ContractResult<()> {
46 if self.required && self.max_concurrency == 0 {
47 return Err(ContractError::InvalidValue {
48 field: "scheduler.max_concurrency",
49 reason: "must be greater than zero when a scheduler is required",
50 });
51 }
52 Ok(())
53 }
54}