holochain_zome_types/
schedule.rs1use crate::prelude::*;
2use std::time::Duration;
3
4pub const SCHEDULER_INTERVAL: Duration = Duration::from_millis(100);
6
7pub const PERSISTED_TIMEOUT: Duration = Duration::from_millis(20000);
9
10#[derive(Debug, thiserror::Error)]
12pub enum ScheduleError {
13 #[error("{0}")]
15 Cron(String),
16 #[error(transparent)]
18 Timestamp(crate::timestamp::TimestampError),
19}
20
21#[derive(serde::Serialize, serde::Deserialize, Debug, PartialEq, Clone)]
25pub enum Schedule {
26 Persisted(String),
28 Ephemeral(Duration),
30}
31
32impl From<String> for Schedule {
33 fn from(cron: String) -> Self {
34 Self::Persisted(cron)
35 }
36}
37
38impl From<Duration> for Schedule {
39 fn from(timeout: Duration) -> Self {
40 Self::Ephemeral(timeout)
41 }
42}
43
44#[derive(Debug, Clone, PartialEq)]
46pub struct ScheduledFn(ZomeName, FunctionName);
47
48impl ScheduledFn {
49 pub fn new(zome_name: ZomeName, fn_name: FunctionName) -> Self {
51 Self(zome_name, fn_name)
52 }
53
54 pub fn zome_name(&self) -> &ZomeName {
56 &self.0
57 }
58
59 pub fn fn_name(&self) -> &FunctionName {
61 &self.1
62 }
63}