00001
00002
00003
00004
00005
00006
00007
00008 #ifndef BATCH_JOB_H
00009 #define BATCH_JOB_H
00010
00011 #include <time.h>
00012
00021 typedef int batch_job_id_t;
00022
00024 typedef enum {
00025 BATCH_QUEUE_TYPE_UNKNOWN = -1,
00026 BATCH_QUEUE_TYPE_LOCAL,
00027 BATCH_QUEUE_TYPE_CONDOR,
00028 BATCH_QUEUE_TYPE_SGE,
00029 BATCH_QUEUE_TYPE_MOAB,
00030 BATCH_QUEUE_TYPE_CLUSTER,
00031 BATCH_QUEUE_TYPE_WORK_QUEUE,
00032 BATCH_QUEUE_TYPE_WORK_QUEUE_SHAREDFS,
00033 BATCH_QUEUE_TYPE_XGRID,
00034 BATCH_QUEUE_TYPE_HADOOP,
00035 BATCH_QUEUE_TYPE_MPI_QUEUE,
00036 BATCH_QUEUE_TYPE_TORQUE,
00037 } batch_queue_type_t;
00038
00040 struct batch_job_info {
00041 time_t submitted;
00042 time_t started;
00043 time_t finished;
00044 int exited_normally;
00045 int exit_code;
00046 int exit_signal;
00047 };
00048
00053 struct batch_queue *batch_queue_create(batch_queue_type_t type);
00054
00063 batch_job_id_t batch_job_submit_simple(struct batch_queue *q, const char *cmdline, const char *input_files, const char *output_files);
00064
00077 batch_job_id_t batch_job_submit(struct batch_queue *q, const char *cmd, const char *args, const char *infile, const char *outfile, const char *errfile, const char *extra_input_files, const char *extra_output_files);
00078
00088 batch_job_id_t batch_job_wait(struct batch_queue *q, struct batch_job_info *info);
00089
00101 batch_job_id_t batch_job_wait_timeout(struct batch_queue *q, struct batch_job_info *info, time_t stoptime);
00102
00111 int batch_job_remove(struct batch_queue *q, batch_job_id_t jobid);
00112
00117 batch_queue_type_t batch_queue_type_from_string(const char *str);
00118
00123 const char *batch_queue_type_to_string(batch_queue_type_t t);
00124
00131 void batch_queue_set_logfile(struct batch_queue *q, const char *logfile);
00132
00144 void batch_queue_set_options(struct batch_queue *q, const char *options);
00145
00153 void batch_queue_delete(struct batch_queue *q);
00154
00160 const char *batch_queue_type_string();
00161
00167 int batch_queue_port(struct batch_queue *q);
00168
00169 #endif