00001
00002
00003
00004
00005
00006
00007
00008
00014 #ifndef __GEARMAN_SERVER_H__
00015 #define __GEARMAN_SERVER_H__
00016
00017 #ifdef __cplusplus
00018 extern "C" {
00019 #endif
00020
00027 struct gearman_server_st
00028 {
00029 struct {
00030 bool allocated;
00031 } options;
00032 struct {
00033 bool round_robin;
00034 bool threaded;
00035 } flags;
00036 struct {
00037 bool queue_startup;
00038 } state;
00039 bool shutdown;
00040 bool shutdown_graceful;
00041 bool proc_wakeup;
00042 bool proc_shutdown;
00043 uint8_t job_retries;
00044 uint8_t worker_wakeup;
00045 uint32_t job_handle_count;
00046 uint32_t thread_count;
00047 uint32_t function_count;
00048 uint32_t job_count;
00049 uint32_t unique_count;
00050 uint32_t free_packet_count;
00051 uint32_t free_job_count;
00052 uint32_t free_client_count;
00053 uint32_t free_worker_count;
00054 gearman_universal_st *gearman;
00055 gearman_server_thread_st *thread_list;
00056 gearman_server_function_st *function_list;
00057 gearman_server_packet_st *free_packet_list;
00058 gearman_server_job_st *free_job_list;
00059 gearman_server_client_st *free_client_list;
00060 gearman_server_worker_st *free_worker_list;
00061 gearman_log_fn *log_fn;
00062 void *log_context;
00063 void *queue_context;
00064 gearman_queue_add_fn *queue_add_fn;
00065 gearman_queue_flush_fn *queue_flush_fn;
00066 gearman_queue_done_fn *queue_done_fn;
00067 gearman_queue_replay_fn *queue_replay_fn;
00068 gearman_universal_st gearman_universal_static;
00069 pthread_mutex_t proc_lock;
00070 pthread_cond_t proc_cond;
00071 pthread_t proc_id;
00072 char job_handle_prefix[GEARMAN_JOB_HANDLE_SIZE];
00073 gearman_server_job_st *job_hash[GEARMAN_JOB_HASH_SIZE];
00074 gearman_server_job_st *unique_hash[GEARMAN_JOB_HASH_SIZE];
00075 };
00076
00084 GEARMAN_API
00085 gearman_server_st *gearman_server_create(gearman_server_st *server);
00086
00092 GEARMAN_API
00093 void gearman_server_free(gearman_server_st *server);
00094
00101 GEARMAN_API
00102 void gearman_server_set_job_retries(gearman_server_st *server,
00103 uint8_t job_retries);
00104
00111 GEARMAN_API
00112 void gearman_server_set_worker_wakeup(gearman_server_st *server,
00113 uint8_t worker_wakeup);
00114
00123 GEARMAN_API
00124 void gearman_server_set_log_fn(gearman_server_st *server,
00125 gearman_log_fn *function,
00126 void *context, gearman_verbose_t verbose);
00127
00134 GEARMAN_API
00135 gearman_return_t gearman_server_run_command(gearman_server_con_st *server_con,
00136 gearman_packet_st *packet);
00137
00145 GEARMAN_API
00146 gearman_return_t gearman_server_shutdown_graceful(gearman_server_st *server);
00147
00156 GEARMAN_API
00157 gearman_return_t gearman_server_queue_replay(gearman_server_st *server);
00158
00162 GEARMAN_API
00163 void *gearman_server_queue_context(const gearman_server_st *server);
00164
00169 GEARMAN_API
00170 void gearman_server_set_queue_context(gearman_server_st *server,
00171 void *context);
00172
00176 GEARMAN_API
00177 void gearman_server_set_queue_add_fn(gearman_server_st *server,
00178 gearman_queue_add_fn *function);
00179
00183 GEARMAN_API
00184 void gearman_server_set_queue_flush_fn(gearman_server_st *server,
00185 gearman_queue_flush_fn *function);
00186
00190 GEARMAN_API
00191 void gearman_server_set_queue_done_fn(gearman_server_st *server,
00192 gearman_queue_done_fn *function);
00193
00198 GEARMAN_API
00199 void gearman_server_set_queue_replay_fn(gearman_server_st *server,
00200 gearman_queue_replay_fn *function);
00201
00204 #ifdef __cplusplus
00205 }
00206 #endif
00207
00208 #endif