summaryrefslogtreecommitdiffstats
path: root/sources/schedule.h
diff options
context:
space:
mode:
authorOpenGnSys Support Team <soporte-og@soleta.eu>2020-01-22 13:32:12 +0100
committerOpenGnSys Support Team <soporte-og@soleta.eu>2020-06-02 12:32:36 +0200
commit83b242ce587fa910861bb2e6b4cdf2cffd38df65 (patch)
treec6fd25d74ac98afb8101913d810ca8798dc800d7 /sources/schedule.h
parentaf30cc7dbbd9ee4d6ae2c93fd9ecd46975bf16a6 (diff)
#942 Add support for scheduled tasks and commands
This field needs to be at least 31 bits long to store all days in a month. Other fields are also set to 32 bits because unsigned int length can change depending on the system. We also need to support the three ways that the ogAdmAgent and the WebConsole have to create an schedule. At first, we only supported the easiest method: * Hour, day, month and year -> 10:00, 28, february, 2020 This commit adds these two ways to create an schedule: * Hour, week day, month and year -> 10:00, Monday, february, 2020 * Hour, week, month and year -> 10:00, first week, february, 2020
Diffstat (limited to 'sources/schedule.h')
-rw-r--r--sources/schedule.h37
1 files changed, 37 insertions, 0 deletions
diff --git a/sources/schedule.h b/sources/schedule.h
new file mode 100644
index 0000000..7195a05
--- /dev/null
+++ b/sources/schedule.h
@@ -0,0 +1,37 @@
+#ifndef _OG_SCHEDULE_H_
+#define _OG_SCHEDULE_H_
+
+#include <stdint.h>
+#include "dbi.h"
+#include "list.h"
+#include <ev.h>
+
+struct og_schedule_time {
+ uint32_t years;
+ uint32_t months;
+ uint32_t weeks;
+ uint32_t week_days;
+ uint32_t days;
+ uint32_t hours;
+ uint32_t am_pm;
+ uint32_t minutes;
+};
+
+struct og_schedule {
+ struct list_head list;
+ struct ev_timer timer;
+ time_t seconds;
+ unsigned int task_id;
+ unsigned int schedule_id;
+};
+
+void og_schedule_create(unsigned int schedule_id, unsigned int task_id,
+ struct og_schedule_time *time);
+void og_schedule_update(struct ev_loop *loop, unsigned int schedule_id,
+ unsigned int task_id, struct og_schedule_time *time);
+void og_schedule_delete(struct ev_loop *loop, uint32_t schedule_id);
+void og_schedule_next(struct ev_loop *loop);
+void og_schedule_refresh(struct ev_loop *loop);
+void og_dbi_schedule_task(unsigned int task_id);
+
+#endif