From 83b242ce587fa910861bb2e6b4cdf2cffd38df65 Mon Sep 17 00:00:00 2001 From: OpenGnSys Support Team Date: Wed, 22 Jan 2020 13:32:12 +0100 Subject: #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 --- sources/schedule.h | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 sources/schedule.h (limited to 'sources/schedule.h') 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 +#include "dbi.h" +#include "list.h" +#include + +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 -- cgit v1.2.3-18-g5258