Main Page | Alphabetical List | Data Structures | File List | Data Fields | Globals | Related Pages

work_queue.h

Go to the documentation of this file.
00001 /*
00002 Copyright (C) 2008- The University of Notre Dame
00003 This software is distributed under the GNU General Public License.
00004 See the file COPYING for details.
00005 */
00006 
00007 #ifndef WORK_QUEUE_H
00008 #define WORK_QUEUE_H
00009 
00020 #include "timestamp.h"
00021 
00022 #define WORK_QUEUE_DEFAULT_PORT 9123
00023 #define WORK_QUEUE_LINE_MAX 1024
00024 
00025 #define WORK_QUEUE_WAITFORTASK -1
00026 
00027 #define WORK_QUEUE_RESULT_UNSET 0
00028 #define WORK_QUEUE_RESULT_INPUT_FAIL 1
00029 #define WORK_QUEUE_RESULT_FUNCTION_FAIL 2
00030 #define WORK_QUEUE_RESULT_OUTPUT_FAIL 3
00031 
00032 #define WORK_QUEUE_SCHEDULE_UNSET 0 // default setting for task.
00033 #define WORK_QUEUE_SCHEDULE_FCFS 1
00034 #define WORK_QUEUE_SCHEDULE_FILES 2
00035 #define WORK_QUEUE_SCHEDULE_TIME 3
00036 #define WORK_QUEUE_SCHEDULE_MAX 3
00037 #define WORK_QUEUE_SCHEDULE_DEFAULT 3 // default setting for queue.
00038 
00039 
00040 extern double wq_option_fast_abort_multiplier; 
00041 extern int wq_option_scheduler; 
00045 struct work_queue_task {
00046         char *tag;                      
00047         char *command_line;             
00048         int worker_selection_algorithm;           
00049         char *output;                   
00050         struct list * input_files;      
00051         struct list * output_files;     
00052         int taskid;                     
00053         int return_status;              
00054         int result;                     
00055         char* host;                     
00056         timestamp_t submit_time;        
00057         timestamp_t start_time;         
00058         timestamp_t finish_time;        
00059         INT64_T total_bytes_transfered;
00060         timestamp_t total_transfer_time;
00061 };
00062 
00065 struct work_queue_stats {
00066         int workers_init;               
00067         int workers_ready;              
00068         int workers_busy;               
00069         int tasks_running;              
00070         int tasks_waiting;              
00071         int tasks_complete;             
00072         int total_tasks_dispatched;     
00073         int total_tasks_complete;       
00074         int total_workers_joined;       
00075         int total_workers_removed;      
00076 };
00077 
00083 struct work_queue * work_queue_create( int port , time_t stoptime);
00084 
00088 void work_queue_delete( struct work_queue *q );
00089 
00094 void work_queue_get_stats( struct work_queue *q, struct work_queue_stats *s );
00095 
00101 int work_queue_activate_fast_abort(struct work_queue* q, double multiplier);
00102 
00107 int work_queue_specify_scheduler( struct work_queue* q, int alg);
00108 
00114 struct work_queue_task * work_queue_wait( struct work_queue *q, int timeout );
00115 
00121 void work_queue_submit( struct work_queue *q, struct work_queue_task *t );
00122 
00126 void work_queue_task_delete( struct work_queue_task *t );
00127 
00131 struct work_queue_task * work_queue_task_create( const char *full_command);
00132 
00138 void work_queue_task_specify_tag( struct work_queue_task *t, const char *tag );
00139 
00144 int work_queue_task_specify_scheduler( struct work_queue_task *t, int alg );
00145 
00152 void work_queue_task_specify_input_buf( struct work_queue_task *t, const char *buf, int length, const char *rname);
00153 
00159 void work_queue_task_specify_input_file( struct work_queue_task *t, const char *fname, const char *rname);
00160 
00166 void work_queue_task_specify_output_file( struct work_queue_task *t, const char *rname, const char *fname);
00167 
00171 int work_queue_hungry (struct work_queue *q);
00172 
00176 int work_queue_empty (struct work_queue *q);
00177 
00182 int work_queue_shut_down_workers (struct work_queue *q, int n);
00183 
00184 #endif

Generated on Fri Jun 4 09:58:45 2010 for cctools by  doxygen 1.3.9.1