Last change
on this file since 33d8cec was
e68fefe,
checked in by OpenGnSys Support Team <soporte-og@…>, 4 years ago
|
#997 Set stale check flag when processing schedule/create
If you schedule a command in the past, the scheduler executes such
command immediately.
When expanding a schedule that result in commands that run weekly,
commands in the past are also executed, which is not expected.
Fix this by using the check_stale flag (formerly on_start) so
commands in the past that result from expansions are skipped.
|
-
Property mode set to
100644
|
File size:
1.5 KB
|
Line | |
---|
1 | #ifndef _OG_SCHEDULE_H_ |
---|
2 | #define _OG_SCHEDULE_H_ |
---|
3 | |
---|
4 | #include <stdint.h> |
---|
5 | #include <stdbool.h> |
---|
6 | #include "dbi.h" |
---|
7 | #include "list.h" |
---|
8 | #include <ev.h> |
---|
9 | |
---|
10 | struct og_schedule_time { |
---|
11 | uint32_t years; |
---|
12 | uint32_t months; |
---|
13 | uint32_t weeks; |
---|
14 | uint32_t week_days; |
---|
15 | uint32_t days; |
---|
16 | uint32_t hours; |
---|
17 | uint32_t am_pm; |
---|
18 | uint32_t minutes; |
---|
19 | bool check_stale; |
---|
20 | }; |
---|
21 | |
---|
22 | enum og_schedule_type { |
---|
23 | OG_SCHEDULE_TASK, |
---|
24 | OG_SCHEDULE_PROCEDURE, |
---|
25 | OG_SCHEDULE_COMMAND, |
---|
26 | }; |
---|
27 | |
---|
28 | struct og_schedule { |
---|
29 | struct list_head list; |
---|
30 | struct ev_timer timer; |
---|
31 | time_t seconds; |
---|
32 | unsigned int task_id; |
---|
33 | unsigned int schedule_id; |
---|
34 | enum og_schedule_type type; |
---|
35 | }; |
---|
36 | |
---|
37 | void og_schedule_create(unsigned int schedule_id, unsigned int task_id, |
---|
38 | enum og_schedule_type type, |
---|
39 | struct og_schedule_time *time); |
---|
40 | void og_schedule_update(struct ev_loop *loop, unsigned int schedule_id, |
---|
41 | unsigned int task_id, struct og_schedule_time *time); |
---|
42 | void og_schedule_delete(struct ev_loop *loop, uint32_t schedule_id); |
---|
43 | void og_schedule_next(struct ev_loop *loop); |
---|
44 | void og_schedule_refresh(struct ev_loop *loop); |
---|
45 | void og_schedule_run(unsigned int task_id, unsigned int schedule_id, |
---|
46 | enum og_schedule_type type); |
---|
47 | |
---|
48 | int og_dbi_schedule_get(void); |
---|
49 | int og_dbi_update_action(uint32_t id, bool success); |
---|
50 | |
---|
51 | struct og_task { |
---|
52 | uint32_t task_id; |
---|
53 | uint32_t procedure_id; |
---|
54 | uint32_t command_id; |
---|
55 | uint32_t center_id; |
---|
56 | uint32_t schedule_id; |
---|
57 | uint32_t type_scope; |
---|
58 | uint32_t scope; |
---|
59 | const char *filtered_scope; |
---|
60 | const char *params; |
---|
61 | }; |
---|
62 | |
---|
63 | int og_dbi_queue_procedure(struct og_dbi *dbi, struct og_task *task); |
---|
64 | |
---|
65 | #endif |
---|
Note: See
TracBrowser
for help on using the repository browser.