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_CON_H__ 00015 #define __GEARMAN_SERVER_CON_H__ 00016 00017 #ifdef __cplusplus 00018 extern "C" { 00019 #endif 00020 00031 struct gearman_server_con_st 00032 { 00033 gearman_connection_st con; /* This must be the first struct member. */ 00034 bool is_sleeping; 00035 bool is_exceptions; 00036 bool is_dead; 00037 bool is_noop_sent; 00038 gearman_return_t ret; 00039 bool io_list; 00040 bool proc_list; 00041 bool proc_removed; 00042 uint32_t io_packet_count; 00043 uint32_t proc_packet_count; 00044 uint32_t worker_count; 00045 uint32_t client_count; 00046 gearman_server_thread_st *thread; 00047 gearman_server_con_st *next; 00048 gearman_server_con_st *prev; 00049 gearman_server_packet_st *packet; 00050 gearman_server_packet_st *io_packet_list; 00051 gearman_server_packet_st *io_packet_end; 00052 gearman_server_packet_st *proc_packet_list; 00053 gearman_server_packet_st *proc_packet_end; 00054 gearman_server_con_st *io_next; 00055 gearman_server_con_st *io_prev; 00056 gearman_server_con_st *proc_next; 00057 gearman_server_con_st *proc_prev; 00058 gearman_server_worker_st *worker_list; 00059 gearman_server_client_st *client_list; 00060 const char *host; 00061 const char *port; 00062 char id[GEARMAN_SERVER_CON_ID_SIZE]; 00063 }; 00064 00074 GEARMAN_API 00075 gearman_server_con_st *gearman_server_con_add(gearman_server_thread_st *thread, 00076 int fd, void *data); 00077 00081 GEARMAN_API 00082 gearman_server_con_st * 00083 gearman_server_con_create(gearman_server_thread_st *thread); 00084 00088 GEARMAN_API 00089 void gearman_server_con_free(gearman_server_con_st *con); 00090 00094 GEARMAN_API 00095 gearman_connection_st *gearman_server_con_con(gearman_server_con_st *con); 00096 00100 GEARMAN_API 00101 const void *gearman_server_con_data(const gearman_server_con_st *con); 00102 00106 GEARMAN_API 00107 void gearman_server_con_set_data(gearman_server_con_st *con, void *data); 00108 00112 GEARMAN_API 00113 const char *gearman_server_con_host(gearman_server_con_st *con); 00114 00118 GEARMAN_API 00119 void gearman_server_con_set_host(gearman_server_con_st *con, const char *host); 00120 00124 GEARMAN_API 00125 const char *gearman_server_con_port(gearman_server_con_st *con); 00126 00130 GEARMAN_API 00131 void gearman_server_con_set_port(gearman_server_con_st *con, const char *port); 00132 00136 GEARMAN_API 00137 const char *gearman_server_con_id(gearman_server_con_st *con); 00138 00142 GEARMAN_API 00143 void gearman_server_con_set_id(gearman_server_con_st *con, char *id, 00144 size_t size); 00145 00149 GEARMAN_API 00150 void gearman_server_con_free_worker(gearman_server_con_st *con, 00151 char *function_name, 00152 size_t function_name_size); 00153 00157 GEARMAN_API 00158 void gearman_server_con_free_workers(gearman_server_con_st *con); 00159 00163 GEARMAN_API 00164 void gearman_server_con_io_add(gearman_server_con_st *con); 00165 00169 GEARMAN_API 00170 void gearman_server_con_io_remove(gearman_server_con_st *con); 00171 00175 GEARMAN_API 00176 gearman_server_con_st * 00177 gearman_server_con_io_next(gearman_server_thread_st *thread); 00178 00182 GEARMAN_API 00183 void gearman_server_con_proc_add(gearman_server_con_st *con); 00184 00188 GEARMAN_API 00189 void gearman_server_con_proc_remove(gearman_server_con_st *con); 00190 00194 GEARMAN_API 00195 gearman_server_con_st * 00196 gearman_server_con_proc_next(gearman_server_thread_st *thread); 00197 00200 #ifdef __cplusplus 00201 } 00202 #endif 00203 00204 #endif /* __GEARMAN_SERVER_CON_H__ */