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

work_queue.h

Go to the documentation of this file.
00001 #ifndef WORK_QUEUE_H
00002 #define WORK_QUEUE_H
00003 
00014 #include "timestamp.h"
00015 
00016 #define WORK_QUEUE_LINE_MAX 1024
00017 
00018 
00019 #define WAITFORTASK -1
00020 
00021 
00022 
00025 struct work_queue_task {
00026         char *tag;
00027         char *command_line;             
00028         char *output;                   
00029         struct list * input_files;      
00030         struct list * output_files;     
00031         int taskid;                     
00032         int return_status;              
00033         int result;                     
00034         char* host;                     
00035         timestamp_t submit_time;        
00036         timestamp_t start_time;         
00037         timestamp_t finish_time;        
00038         INT64_T total_bytes_transfered;
00039         timestamp_t total_transfer_time;
00040 };
00041 
00044 struct work_queue_stats {
00045         int workers_init;               
00046         int workers_ready;              
00047         int workers_busy;               
00048         int tasks_running;              
00049         int tasks_waiting;              
00050         int tasks_complete;             
00051         int total_tasks_dispatched;     
00052         int total_tasks_complete;       
00053         int total_workers_joined;       
00054         int total_workers_removed;      
00055 };
00056 
00062 struct work_queue * work_queue_create( int port , time_t stoptime);
00063 
00067 void work_queue_delete( struct work_queue *q );
00068 
00073 void work_queue_get_stats( struct work_queue *q, struct work_queue_stats *s );
00074 
00080 struct work_queue_task * work_queue_wait( struct work_queue *q, int timeout );
00081 
00086 void work_queue_submit( struct work_queue *q, struct work_queue_task *t );
00087 
00091 void work_queue_task_delete( struct work_queue_task *t );
00092 
00096 struct work_queue_task * work_queue_task_create( const char* full_command);
00097 
00102 INT64_T work_queue_task_specify_tag( struct work_queue_task* t, const char* tag);
00103 
00110 INT64_T work_queue_task_specify_input_buf( struct work_queue_task* t, const char* buf, int length, const char* rname);
00111 
00117 INT64_T work_queue_task_specify_input_file( struct work_queue_task* t, const char* fname, const char* rname);
00118 
00124 INT64_T work_queue_task_specify_output_file( struct work_queue_task* t, const char* rname, const char* fname);
00125 
00129 int work_queue_hungry (struct work_queue* q);
00130 
00134 int work_queue_empty (struct work_queue* q);
00135 
00140 int work_queue_shut_down_workers (struct work_queue* q, int n);
00141 
00146 //int work_queue_delete_local_state (struct work_queue* q, struct task_file* exceptions);
00147 
00152 //int work_queue_resubmit (struct work_queue* q, struct work_queue_task* t);
00153 
00154 #endif

Generated on Thu Jul 2 15:49:25 2009 for cctools by  doxygen 1.3.9.1