| /*------------------------------------------------------------------------- |
| * |
| * task_states.h |
| * definition of task state functions |
| * |
| * Copyright (c) 2010-2015, Citus Data, Inc. |
| * |
| *------------------------------------------------------------------------- |
| */ |
| |
| #ifndef TASK_STATES_H |
| #define TASK_STATES_H |
| |
| #include "libpq-fe.h" |
| #include "postmaster/bgworker.h" |
| #include "storage/dsm.h" |
| #include "storage/shm_mq.h" |
| #include "task/job_metadata.h" |
| #include "utils/timestamp.h" |
| |
| typedef enum |
| { |
| CRON_TASK_WAITING = 0, |
| CRON_TASK_START = 1, |
| CRON_TASK_CONNECTING = 2, |
| CRON_TASK_SENDING = 3, |
| CRON_TASK_RUNNING = 4, |
| CRON_TASK_RECEIVING = 5, |
| CRON_TASK_DONE = 6, |
| CRON_TASK_ERROR = 7, |
| CRON_TASK_BGW_START = 8, |
| CRON_TASK_BGW_RUNNING = 9 |
| } CronTaskState; |
| |
| struct BackgroundWorkerHandle |
| { |
| int slot; |
| uint64 generation; |
| }; |
| |
| typedef struct CronTask |
| { |
| int64 jobId; |
| int64 runId; |
| CronTaskState state; |
| uint32 pendingRunCount; |
| PGconn *connection; |
| PostgresPollingStatusType pollingStatus; |
| TimestampTz startDeadline; |
| TimestampTz lastStartTime; |
| uint32 secondsInterval; |
| bool isSocketReady; |
| bool isActive; |
| char *errorMessage; |
| bool freeErrorMessage; |
| shm_mq_handle *sharedMemoryQueue; |
| dsm_segment *seg; |
| BackgroundWorkerHandle handle; |
| } CronTask; |
| |
| extern void InitializeTaskStateHash(void); |
| extern void RefreshTaskHash(void); |
| extern List * CurrentTaskList(void); |
| extern void InitializeCronTask(CronTask *task, int64 jobId); |
| extern void RemoveTask(int64 jobId); |
| |
| #endif /* TASK_STATES_H */ |