#ifndef VIETER_JOB_QUEUE #define VIETER_JOB_QUEUE #include #include #include "vieter_cron.h" /* * The order of these do not imply that they happen in this order. New states * will just get added as consecutive numbers. Their values should be * monotonically increasing values, as these will be used to index arrays, among * other things. */ typedef enum vieter_job_state { vieter_job_queued = 0, vieter_job_dispatched = 1, vieter_job_finished = 2 } vieter_job_state; // This macro should be kept in sync with the above enum #define VIETER_JOB_STATES 3 typedef struct vieter_job { int id; uint64_t next_scheduled_time; vieter_cron_expression *ce; bool single; vieter_job_state state; uint64_t state_transition_times[VIETER_JOB_STATES]; } vieter_job; #endif