00001
00002
00003
00004
00005
00006
00007
00008
00014 #ifndef __GEARMAN_TASK_H__
00015 #define __GEARMAN_TASK_H__
00016
00017 #ifdef __cplusplus
00018 extern "C" {
00019 #endif
00020
00035 struct gearman_task_st
00036 {
00037 struct {
00038 bool allocated LIBGEARMAN_BITFIELD;
00039 bool send_in_use LIBGEARMAN_BITFIELD;
00040 bool is_known LIBGEARMAN_BITFIELD;
00041 bool is_running LIBGEARMAN_BITFIELD;
00042 } options;
00043 enum {
00044 GEARMAN_TASK_STATE_NEW,
00045 GEARMAN_TASK_STATE_SUBMIT,
00046 GEARMAN_TASK_STATE_WORKLOAD,
00047 GEARMAN_TASK_STATE_WORK,
00048 GEARMAN_TASK_STATE_CREATED,
00049 GEARMAN_TASK_STATE_DATA,
00050 GEARMAN_TASK_STATE_WARNING,
00051 GEARMAN_TASK_STATE_STATUS,
00052 GEARMAN_TASK_STATE_COMPLETE,
00053 GEARMAN_TASK_STATE_EXCEPTION,
00054 GEARMAN_TASK_STATE_FAIL,
00055 GEARMAN_TASK_STATE_FINISHED
00056 } state;
00057 uint32_t created_id;
00058 uint32_t numerator;
00059 uint32_t denominator;
00060 gearman_client_st *client;
00061 gearman_task_st *next;
00062 gearman_task_st *prev;
00063 void *context;
00064 gearman_connection_st *con;
00065 gearman_packet_st *recv;
00066 gearman_packet_st send;
00067 char job_handle[GEARMAN_JOB_HANDLE_SIZE];
00068 };
00069
00079 GEARMAN_LOCAL
00080 gearman_task_st *gearman_task_create(gearman_client_st *client,
00081 gearman_task_st *task);
00082
00089 GEARMAN_API
00090 void gearman_task_free(gearman_task_st *task);
00091
00092
00096 GEARMAN_API
00097 const void *gearman_task_context(const gearman_task_st *task);
00098
00102 GEARMAN_API
00103 void gearman_task_set_context(gearman_task_st *task, void *context);
00104
00108 GEARMAN_API
00109 const char *gearman_task_function_name(const gearman_task_st *task);
00110
00114 GEARMAN_API
00115 const char *gearman_task_unique(const gearman_task_st *task);
00116
00120 GEARMAN_API
00121 const char *gearman_task_job_handle(const gearman_task_st *task);
00122
00126 GEARMAN_API
00127 bool gearman_task_is_known(const gearman_task_st *task);
00128
00132 GEARMAN_API
00133 bool gearman_task_is_running(const gearman_task_st *task);
00134
00138 GEARMAN_API
00139 uint32_t gearman_task_numerator(const gearman_task_st *task);
00140
00144 GEARMAN_API
00145 uint32_t gearman_task_denominator(const gearman_task_st *task);
00146
00151 GEARMAN_API
00152 void gearman_task_give_workload(gearman_task_st *task, const void *workload,
00153 size_t workload_size);
00154
00158 GEARMAN_API
00159 size_t gearman_task_send_workload(gearman_task_st *task, const void *workload,
00160 size_t workload_size,
00161 gearman_return_t *ret_ptr);
00162
00166 GEARMAN_API
00167 const void *gearman_task_data(const gearman_task_st *task);
00168
00172 GEARMAN_API
00173 size_t gearman_task_data_size(const gearman_task_st *task);
00174
00179 GEARMAN_API
00180 void *gearman_task_take_data(gearman_task_st *task, size_t *data_size);
00181
00185 GEARMAN_API
00186 size_t gearman_task_recv_data(gearman_task_st *task, void *data,
00187 size_t data_size, gearman_return_t *ret_ptr);
00188
00191 #ifdef __cplusplus
00192 }
00193 #endif
00194
00195 #endif