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 gearman_server_con_options_t options; 00035 gearman_return_t ret; 00036 bool io_list; 00037 bool proc_list; 00038 bool proc_removed; 00039 uint32_t io_packet_count; 00040 uint32_t proc_packet_count; 00041 uint32_t worker_count; 00042 uint32_t client_count; 00043 gearman_server_thread_st *thread; 00044 gearman_server_con_st *next; 00045 gearman_server_con_st *prev; 00046 gearman_server_packet_st *packet; 00047 gearman_server_packet_st *io_packet_list; 00048 gearman_server_packet_st *io_packet_end; 00049 gearman_server_packet_st *proc_packet_list; 00050 gearman_server_packet_st *proc_packet_end; 00051 gearman_server_con_st *io_next; 00052 gearman_server_con_st *io_prev; 00053 gearman_server_con_st *proc_next; 00054 gearman_server_con_st *proc_prev; 00055 gearman_server_worker_st *worker_list; 00056 gearman_server_client_st *client_list; 00057 const char *host; 00058 const char *port; 00059 char id[GEARMAN_SERVER_CON_ID_SIZE]; 00060 }; 00061 00071 GEARMAN_API 00072 gearman_server_con_st *gearman_server_con_add(gearman_server_thread_st *thread, 00073 int fd, void *data); 00074 00078 GEARMAN_API 00079 gearman_server_con_st * 00080 gearman_server_con_create(gearman_server_thread_st *thread); 00081 00085 GEARMAN_API 00086 void gearman_server_con_free(gearman_server_con_st *con); 00087 00091 GEARMAN_API 00092 gearman_connection_st *gearman_server_con_con(gearman_server_con_st *con); 00093 00097 GEARMAN_API 00098 const void *gearman_server_con_data(const gearman_server_con_st *con); 00099 00103 GEARMAN_API 00104 void gearman_server_con_set_data(gearman_server_con_st *con, void *data); 00105 00109 GEARMAN_API 00110 const char *gearman_server_con_host(gearman_server_con_st *con); 00111 00115 GEARMAN_API 00116 void gearman_server_con_set_host(gearman_server_con_st *con, const char *host); 00117 00121 GEARMAN_API 00122 const char *gearman_server_con_port(gearman_server_con_st *con); 00123 00127 GEARMAN_API 00128 void gearman_server_con_set_port(gearman_server_con_st *con, const char *port); 00129 00133 GEARMAN_API 00134 const char *gearman_server_con_id(gearman_server_con_st *con); 00135 00139 GEARMAN_API 00140 void gearman_server_con_set_id(gearman_server_con_st *con, char *id, 00141 size_t size); 00142 00146 GEARMAN_API 00147 void gearman_server_con_free_worker(gearman_server_con_st *con, 00148 char *function_name, 00149 size_t function_name_size); 00150 00154 GEARMAN_API 00155 void gearman_server_con_free_workers(gearman_server_con_st *con); 00156 00160 GEARMAN_API 00161 void gearman_server_con_io_add(gearman_server_con_st *con); 00162 00166 GEARMAN_API 00167 void gearman_server_con_io_remove(gearman_server_con_st *con); 00168 00172 GEARMAN_API 00173 gearman_server_con_st * 00174 gearman_server_con_io_next(gearman_server_thread_st *thread); 00175 00179 GEARMAN_API 00180 void gearman_server_con_proc_add(gearman_server_con_st *con); 00181 00185 GEARMAN_API 00186 void gearman_server_con_proc_remove(gearman_server_con_st *con); 00187 00191 GEARMAN_API 00192 gearman_server_con_st * 00193 gearman_server_con_proc_next(gearman_server_thread_st *thread); 00194 00197 #ifdef __cplusplus 00198 } 00199 #endif 00200 00201 #endif /* __GEARMAN_SERVER_CON_H__ */