horoscope/
lib.rs

1pub mod event;
2pub mod executor;
3pub mod job;
4pub mod ledger;
5pub mod logger;
6pub mod scheduler;
7pub mod store;
8pub mod trigger;
9
10use async_std::task;
11use chrono::prelude::*;
12use std::time::Duration;
13
14use crate::executor::Executor;
15use crate::job::network::{Job, NetType};
16use crate::logger::Logger;
17use crate::scheduler::{blocking, daemon, Msg, Schedule};
18use crate::store::memory::Store;
19
20#[async_std::main]
21async fn main() {
22  let start_time = {
23    let now = Utc::now().timestamp_nanos();
24    let delay: i64 = 10000000000;
25    let start_time = now + delay;
26    // println!("{}\n{}", now, now + delay);
27    start_time
28  };
29
30  let logger = Logger::new(true, vec![]);
31  let mut blk_scheduler = blocking::Scheduler::new(Some(logger));
32
33  let store = Store::new(String::from("jobStore-test"));
34  let exec = Executor::new(String::from("executor-test"));
35  let njob = Job::new(
36    String::from("job-1"),
37    String::from("https://ping.me/"),
38    NetType::Get,
39    None,
40    None,
41  );
42
43  blk_scheduler
44    .add_store(String::from("jobStore-test"), Box::new(store))
45    .await
46    .unwrap();
47  blk_scheduler
48    .add_executor(String::from("executor-test"), exec)
49    .unwrap();
50  blk_scheduler
51    .add_job(
52      String::from("job-1"),
53      String::from("jobStore-test"),
54      String::from("executor-test"),
55      start_time,
56      None,
57      Box::new(njob),
58    )
59    .unwrap();
60
61  let (sender, _reader) = daemon(Box::new(blk_scheduler));
62
63  // sender.send(Msg::AddExecutor(String::from("trigger"), Box::new(exec)));
64
65  match sender
66    .send(Msg::Log(
67      String::from("some id"),
68      String::from("some status"),
69      String::from("some result"),
70    ))
71    .await
72  {
73    Ok(_u) => (),
74    Err(_err) => (),
75  };
76
77  // sender
78  //     .send(Msg::AddStore(
79  //         String::from("jobStore-test"),
80  //         Box::new(store),
81  //     ))
82  //     .await
83  //     .unwrap();
84  // sender
85  //     .send(Msg::AddExecutor(String::from("executor-test"), exec))
86  //     .await
87  //     .unwrap();
88
89  let njob2 = Job::new(
90    String::from("job-2"),
91    String::from("https://ping.me/"),
92    NetType::Get,
93    None,
94    None,
95  );
96
97  task::sleep(Duration::from_secs(3)).await;
98
99  sender
100    .send(Msg::AddJob(
101      String::from("job-2"),
102      String::from("jobStore-test"),
103      String::from("executor-test"),
104      start_time - 2000000000,
105      None,
106      Box::new(njob2),
107    ))
108    .await
109    .unwrap();
110
111  task::sleep(Duration::from_secs(300000)).await;
112}