diff options
-rw-r--r-- | sources/ogAdmServer.c | 6 | ||||
-rw-r--r-- | sources/schedule.c | 24 | ||||
-rw-r--r-- | sources/schedule.h | 6 |
3 files changed, 27 insertions, 9 deletions
diff --git a/sources/ogAdmServer.c b/sources/ogAdmServer.c index dbc48ae..8b7b488 100644 --- a/sources/ogAdmServer.c +++ b/sources/ogAdmServer.c @@ -3754,7 +3754,8 @@ static int og_dbi_schedule_get(void) time.am_pm = dbi_result_get_uint(result, "ampm"); time.minutes = dbi_result_get_uint(result, "minutos"); - og_schedule_create(schedule_id, task_id, &time); + og_schedule_create(schedule_id, task_id, OG_SCHEDULE_TASK, + &time); } dbi_result_free(result); @@ -3971,7 +3972,8 @@ static int og_task_schedule_create(struct og_msg_params *params) og_dbi_close(dbi); return -1; } - og_schedule_create(schedule_id, atoi(params->task_id), ¶ms->time); + og_schedule_create(schedule_id, atoi(params->task_id), OG_SCHEDULE_TASK, + ¶ms->time); og_schedule_refresh(og_loop); og_dbi_close(dbi); diff --git a/sources/schedule.c b/sources/schedule.c index 3d30aad..d7eb336 100644 --- a/sources/schedule.c +++ b/sources/schedule.c @@ -197,7 +197,8 @@ static void og_schedule_remove_duplicates() static void og_schedule_create_weekdays(int month, int year, int *hours, int minutes, int week_days, - uint32_t task_id, uint32_t schedule_id) + uint32_t task_id, uint32_t schedule_id, + enum og_schedule_type type) { struct og_schedule *schedule; int month_days[5]; @@ -235,6 +236,7 @@ static void og_schedule_create_weekdays(int month, int year, schedule->seconds = mktime(&tm); schedule->task_id = task_id; schedule->schedule_id = schedule_id; + schedule->type = type; og_schedule_add(schedule); } } @@ -243,7 +245,8 @@ static void og_schedule_create_weekdays(int month, int year, static void og_schedule_create_weeks(int month, int year, int *hours, int minutes, int weeks, - uint32_t task_id, uint32_t schedule_id) + uint32_t task_id, uint32_t schedule_id, + enum og_schedule_type type) { struct og_schedule *schedule; int month_days[7]; @@ -284,6 +287,7 @@ static void og_schedule_create_weeks(int month, int year, schedule->seconds = mktime(&tm); schedule->task_id = task_id; schedule->schedule_id = schedule_id; + schedule->type = type; og_schedule_add(schedule); } } @@ -292,7 +296,8 @@ static void og_schedule_create_weeks(int month, int year, static void og_schedule_create_days(int month, int year, int *hours, int minutes, int *days, - uint32_t task_id, uint32_t schedule_id) + uint32_t task_id, uint32_t schedule_id, + enum og_schedule_type type) { struct og_schedule *schedule; struct tm tm; @@ -315,12 +320,14 @@ static void og_schedule_create_days(int month, int year, schedule->seconds = mktime(&tm); schedule->task_id = task_id; schedule->schedule_id = schedule_id; + schedule->type = type; og_schedule_add(schedule); } } } void og_schedule_create(unsigned int schedule_id, unsigned int task_id, + enum og_schedule_type type, struct og_schedule_time *time) { int year, month, minutes; @@ -346,21 +353,24 @@ void og_schedule_create(unsigned int schedule_id, unsigned int task_id, hours, minutes, time->week_days, task_id, - schedule_id); + schedule_id, + type); if (time->weeks) og_schedule_create_weeks(month, year, hours, minutes, time->weeks, task_id, - schedule_id); + schedule_id, + type); if (time->days) og_schedule_create_days(month, year, hours, minutes, days, task_id, - schedule_id); + schedule_id, + type); } } @@ -389,7 +399,7 @@ void og_schedule_update(struct ev_loop *loop, unsigned int schedule_id, unsigned int task_id, struct og_schedule_time *time) { og_schedule_delete(loop, schedule_id); - og_schedule_create(schedule_id, task_id, time); + og_schedule_create(schedule_id, task_id, OG_SCHEDULE_TASK, time); } static void og_agent_timer_cb(struct ev_loop *loop, ev_timer *timer, int events) diff --git a/sources/schedule.h b/sources/schedule.h index f207afa..061b5db 100644 --- a/sources/schedule.h +++ b/sources/schedule.h @@ -17,15 +17,21 @@ struct og_schedule_time { uint32_t minutes; }; +enum og_schedule_type { + OG_SCHEDULE_TASK, +}; + struct og_schedule { struct list_head list; struct ev_timer timer; time_t seconds; unsigned int task_id; unsigned int schedule_id; + enum og_schedule_type type; }; void og_schedule_create(unsigned int schedule_id, unsigned int task_id, + enum og_schedule_type type, 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); |