Gearman Public API Documentation

libgearman/task.h
Go to the documentation of this file.
00001 /* Gearman server and library
00002  * Copyright (C) 2008 Brian Aker, Eric Day
00003  * All rights reserved.
00004  *
00005  * Use and distribution licensed under the BSD license.  See
00006  * the COPYING file in the parent directory for full text.
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 /* __GEARMAN_TASK_H__ */