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 #define FNAME 0
00018 #define LITERAL 1
00019 
00020 #define WAITFORTASK -1
00021 
00023 struct task_file {
00024     short fname_or_literal; //0 or 1
00025     short cacheable; // 0=no, 1=yes.
00026     int length;
00027     void* payload; // name on master machine or buffer of data.
00028     char* remote_name; // name on remote machine.
00029 };
00030 
00033 struct work_queue_task {
00034         char *tag;
00035         char *program;                  
00036         char *args;                     
00037         char *output;                   
00038         struct list * standard_input_files;  
00039         struct list * extra_staged_files;    
00040         struct list * extra_created_files;              
00041         char *command;                  
00042         int taskid;                     
00043         int result;                     
00044         char host[32];                  
00045   timestamp_t submit_time;              
00046         timestamp_t start_time;         
00047         timestamp_t finish_time;        
00048         INT64_T total_bytes_transfered;
00049         timestamp_t total_transfer_time;
00050 };
00051 
00054 struct work_queue_stats {
00055         int workers_init;               
00056         int workers_ready;              
00057         int workers_busy;               
00058         int tasks_running;              
00059         int tasks_waiting;              
00060         int tasks_complete;             
00061         int total_tasks_dispatched;     
00062         int total_tasks_complete;       
00063         int total_workers_joined;       
00064         int total_workers_removed;      
00065 };
00066 
00071 struct work_queue * work_queue_create( int port , time_t stoptime);
00072 
00076 void work_queue_delete( struct work_queue *q );
00077 
00082 void work_queue_get_stats( struct work_queue *q, struct work_queue_stats *s );
00083 
00089 struct work_queue_task * work_queue_wait( struct work_queue *q , time_t timeout);
00090 
00095 void work_queue_submit( struct work_queue *q, struct work_queue_task *t );
00096 
00100 void work_queue_task_delete( struct work_queue_task *t );
00101 
00102 
00103 
00104 
00109 struct work_queue_task * work_queue_task_create( const char* program, const char *args);
00110 
00115 INT64_T work_queue_task_add_tag( struct work_queue_task* t, const char* tag);
00116 
00121 INT64_T work_queue_task_add_standard_input_buf( struct work_queue_task* t, const char* buf, int length);
00122 
00127 INT64_T work_queue_task_add_standard_input_file( struct work_queue_task* t, const char* fname);
00128 
00134 INT64_T work_queue_task_add_extra_created_file( struct work_queue_task* t, const char* rname, const char* fname);
00135 
00141 INT64_T work_queue_task_add_extra_staged_buf( struct work_queue_task* t, const char* buf, int length, const char* rname);
00142 
00148 INT64_T work_queue_task_add_extra_staged_file( struct work_queue_task* t, const char* fname, const char* rname);
00149 
00153 int work_queue_hungry (struct work_queue* q);
00154 
00158 int work_queue_empty (struct work_queue* q);
00159 
00164 //int work_queue_resubmit (struct work_queue* q, struct work_queue_task* t);
00165 
00166 
00167 
00172 int work_queue_shut_down_workers (struct work_queue* q, int n);
00173 
00178 //int work_queue_delete_local_state (struct work_queue* q, struct task_file* exceptions);
00179 
00180 
00181 #endif

Generated on Fri Jun 26 09:34:26 2009 for cctools by  doxygen 1.3.9.1