work_queue_internal.h
00001
00002
00003
00004
00005
00006
00007 #include "work_queue.h"
00008 #include "work_queue_resources.h"
00009
00010 #include "list.h"
00011
00012 typedef enum {
00013 WORK_QUEUE_FILE = 1,
00014 WORK_QUEUE_BUFFER,
00015 WORK_QUEUE_REMOTECMD,
00016 WORK_QUEUE_FILE_PIECE,
00017 WORK_QUEUE_DIRECTORY,
00018 WORK_QUEUE_URL
00019 } work_queue_file_t;
00020
00021 struct work_queue_file {
00022 work_queue_file_t type;
00023 int flags;
00024 int length;
00025 off_t offset;
00026 off_t piece_length;
00027 char *payload;
00028 char *remote_name;
00029 };
00030
00031 struct work_queue_task *work_queue_wait_internal(struct work_queue *q, int timeout, struct link *foreman_uplink, int *foreman_uplink_active);
00032
00033
00034 void aggregate_workers_resources( struct work_queue *q, struct work_queue_resources *r );
00035
00041 void work_queue_enable_process_module(struct work_queue *q);
00042
00047 int work_queue_submit_internal(struct work_queue *q, struct work_queue_task *t);
00048
00049 void release_all_workers(struct work_queue *q);