Gearman Public API Documentation

libgearman-server/server.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_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 /* __GEARMAN_SERVER_H__ */