resolve merge conflict
[wakeup.git] / src / event.h
1
2 #include <list>
3 #include <set>
4 #include <thread>
5
6 #include <xml.h>
7 #include <date.h>
8
9 #include "location.h"
10 #include "action.h"
11
12 class Sequence
13 {
14    String              label;
15    std::list<Action *> sequ;
16
17    std::thread          runner;
18
19    bool                 cancel;
20
21 public: 
22    Sequence (String lbl)
23    {
24       label = lbl;
25    }
26
27    void  add_action(String command);
28    String ToXML(void);
29    String id()
30    {
31       return label;
32    }
33
34    void run(void);
35    void stop(void);
36    friend void _run_(Sequence * sequence);
37 };
38
39 class Event
40 {
41    String              label;
42    String              start_time;
43    String              minimum_time;
44
45    String              pattern;    // for recurrance
46    UTC                 recurrance_interval;
47    std::set<int>       weekdays;
48
49    std::list<Action *> sequence;
50    Sequence            *seq;
51
52    //std::thread         running;
53
54 public:
55
56    Event()
57    {
58       label = "";
59       pattern = "none";
60    }
61
62    Event(String lbl)
63    {
64       label = lbl;
65       pattern = "none";
66    }
67
68    void   FromXML(xml_element x);
69    String ToXML(void);
70
71    String id()
72    {
73       return label;
74    }
75
76    void  start_at(UTC st)
77    {
78       start_time = st.format();
79    }
80
81    void  add_action(String command);
82    Sequence *run_sequence();
83
84    UTC   next_occurance(UTC after, Location loc);
85 };
86
87 std::list<Event> read_alarms(const char *filename);
88 String alarms_to_XML(std::list<Event> alarms);