00001
00002
00003
00004
00005
00006
00007
00008
00014 #ifndef __GEARMAND_H__
00015 #define __GEARMAND_H__
00016
00017 #include <libgearman/gearman.h>
00018 #include <event.h>
00019
00020 #include <libgearman-server/constants.h>
00021 #include <libgearman-server/log.h>
00022 #include <libgearman-server/conf.h>
00023 #include <libgearman-server/conf_module.h>
00024 #include <libgearman-server/connection.h>
00025 #include <libgearman-server/packet.h>
00026 #include <libgearman-server/function.h>
00027 #include <libgearman-server/client.h>
00028 #include <libgearman-server/worker.h>
00029 #include <libgearman-server/job.h>
00030 #include <libgearman-server/thread.h>
00031 #include <libgearman-server/server.h>
00032 #include <libgearman-server/gearmand_thread.h>
00033 #include <libgearman-server/gearmand_con.h>
00034
00035 #ifdef __cplusplus
00036 extern "C" {
00037 #endif
00038
00047 struct gearmand_port_st
00048 {
00049 in_port_t port;
00050 uint32_t listen_count;
00051 gearmand_st *gearmand;
00052 gearman_connection_add_fn *add_fn;
00053 int *listen_fd;
00054 struct event *listen_event;
00055 };
00056
00057 struct gearmand_st
00058 {
00059 gearmand_options_t options;
00060 gearman_verbose_t verbose;
00061 gearman_return_t ret;
00062 int backlog;
00063 uint32_t port_count;
00064 uint32_t threads;
00065 uint32_t thread_count;
00066 uint32_t free_dcon_count;
00067 uint32_t max_thread_free_dcon_count;
00068 int wakeup_fd[2];
00069 const char *host;
00070 gearman_log_fn *log_fn;
00071 void *log_context;
00072 struct event_base *base;
00073 gearmand_port_st *port_list;
00074 gearmand_thread_st *thread_list;
00075 gearmand_thread_st *thread_add_next;
00076 gearmand_con_st *free_dcon_list;
00077 gearman_server_st server;
00078 struct event wakeup_event;
00079 };
00080
00087 GEARMAN_API
00088 gearmand_st *gearmand_create(const char *host, in_port_t port);
00089
00095 GEARMAN_API
00096 void gearmand_free(gearmand_st *gearmand);
00097
00104 GEARMAN_API
00105 void gearmand_set_backlog(gearmand_st *gearmand, int backlog);
00106
00113 GEARMAN_API
00114 void gearmand_set_job_retries(gearmand_st *gearmand, uint8_t job_retries);
00115
00122 GEARMAN_API
00123 void gearmand_set_worker_wakeup(gearmand_st *gearmand, uint8_t worker_wakeup);
00124
00131 GEARMAN_API
00132 void gearmand_set_threads(gearmand_st *gearmand, uint32_t threads);
00133
00142 GEARMAN_API
00143 void gearmand_set_log_fn(gearmand_st *gearmand, gearman_log_fn *function,
00144 void *context, gearman_verbose_t verbose);
00145
00155 GEARMAN_API
00156 gearman_return_t gearmand_port_add(gearmand_st *gearmand, in_port_t port,
00157 gearman_connection_add_fn *function);
00158
00165 GEARMAN_API
00166 gearman_return_t gearmand_run(gearmand_st *gearmand);
00167
00176 GEARMAN_API
00177 void gearmand_wakeup(gearmand_st *gearmand, gearmand_wakeup_t wakeup);
00178
00186 GEARMAN_API
00187 void gearmand_set_round_robin(gearmand_st *gearmand, bool round_robin);
00188
00191 #ifdef __cplusplus
00192 }
00193 #endif
00194
00195 #endif