Status: | Superseded | ||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Proposed branch: | lp:~eday/gearmand/fixes | ||||||||||||||||||||||||||||
Merge into: | lp:gearmand/1.0 | ||||||||||||||||||||||||||||
Diff against target: |
4072 lines 67 files modified
ChangeLog (+8/-0) benchmark/blobslap_worker.c (+5/-5) bin/gearman.c (+5/-5) configure.ac (+3/-3) docs/Doxyfile.api (+32/-4) docs/Doxyfile.dev (+31/-1) examples/reverse_worker.c (+5/-5) examples/wc_worker.c (+3/-3) gearmand/gearmand.c (+7/-0) libgearman-server/client.h (+4/-2) libgearman-server/common.h (+5/-3) libgearman-server/conf.h (+3/-2) libgearman-server/conf_module.h (+3/-2) libgearman-server/conn.c (+1/-1) libgearman-server/conn.h (+4/-2) libgearman-server/constants.h (+31/-19) libgearman-server/function.h (+4/-2) libgearman-server/gearmand.c (+5/-0) libgearman-server/gearmand.h (+13/-2) libgearman-server/gearmand_con.c (+2/-2) libgearman-server/gearmand_con.h (+6/-3) libgearman-server/gearmand_thread.h (+5/-2) libgearman-server/job.c (+24/-13) libgearman-server/job.h (+4/-2) libgearman-server/packet.c (+2/-2) libgearman-server/packet.h (+4/-2) libgearman-server/protocol_http.c (+7/-10) libgearman-server/protocol_http.h (+6/-2) libgearman-server/queue_libdrizzle.c (+4/-8) libgearman-server/queue_libdrizzle.h (+2/-2) libgearman-server/queue_libmemcached.c (+4/-8) libgearman-server/queue_libmemcached.h (+2/-2) libgearman-server/queue_libpq.c (+4/-8) libgearman-server/queue_libpq.h (+2/-2) libgearman-server/queue_libsqlite3.c (+4/-8) libgearman-server/queue_libsqlite3.h (+2/-2) libgearman-server/server.c (+9/-2) libgearman-server/server.h (+13/-1) libgearman-server/structs.h (+2/-1) libgearman-server/thread.c (+1/-1) libgearman-server/thread.h (+5/-2) libgearman-server/worker.c (+28/-2) libgearman-server/worker.h (+4/-2) libgearman/Makefile.am (+2/-1) libgearman/client.c (+64/-41) libgearman/client.h (+5/-4) libgearman/common.h (+2/-30) libgearman/conn.c (+52/-53) libgearman/conn.h (+5/-2) libgearman/constants.h (+20/-13) libgearman/gearman.c (+94/-91) libgearman/gearman.h (+45/-33) libgearman/gearman_local.h (+150/-0) libgearman/job.c (+64/-36) libgearman/job.h (+4/-2) libgearman/packet.c (+9/-13) libgearman/packet.h (+5/-2) libgearman/structs.h (+1/-1) libgearman/task.c (+2/-2) libgearman/task.h (+4/-2) libgearman/visibility.h (+4/-2) libgearman/worker.c (+63/-54) libgearman/worker.h (+3/-2) tests/client_test.c (+7/-6) tests/memcached_test.c (+1/-2) tests/sqlite_test.c (+1/-2) tests/worker_test.c (+80/-70) |
||||||||||||||||||||||||||||
To merge this branch: | bzr merge lp:~eday/gearmand/fixes | ||||||||||||||||||||||||||||
Related bugs: |
|
||||||||||||||||||||||||||||
Related blueprints: |
Rework the worker library code for durability
(Undefined)
|
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Gearman-developers | Pending | ||
Review via email: mp+14235@code.launchpad.net |
This proposal has been superseded by a proposal from 2009-11-04.
Commit message
Description of the change
To post a comment you must log in.
lp:~eday/gearmand/fixes
updated
- 251. By Eric Day
-
Removed va_args packet add function, replaced with array passing.
- 252. By Eric Day
-
Merged trunk.
- 253. By Eric Day
-
Updated ChangeLog
- 254. By Eric Day
-
Small fixes for release while working with Monty on packaging.
- 255. By Eric Day
-
Fixed job handle compare for work_fail bug, added test case.
- 256. By Eric Day
-
Merged Monty's build fixes.
Unmerged revisions
Preview Diff
[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1 | === modified file 'ChangeLog' |
2 | --- ChangeLog 2009-09-28 17:47:34 +0000 |
3 | +++ ChangeLog 2009-11-04 22:14:13 +0000 |
4 | @@ -1,3 +1,11 @@ |
5 | +0.11 - 2009-11-03 |
6 | + * Added max wakeup-worker option to gearmand. Default is still to wakeup all. |
7 | + * API and documentation cleanup. |
8 | + * Fixed bug where task context free function was getting called for do() |
9 | + functions. This was PECL/Gearman bug #16899 as well. |
10 | + * Fixed bug #458912, not flushing with multiple gearmands in client. |
11 | + * Fixed PECL/Gearman bug #16847, was actually in C library and not in PHP. |
12 | + |
13 | 0.10 - 2009-09-28 |
14 | * Added timeout option. |
15 | * Separated libgearman client/worker library from the server/gearmand code. |
16 | |
17 | === modified file 'benchmark/blobslap_worker.c' |
18 | --- benchmark/blobslap_worker.c 2009-06-14 07:26:30 +0000 |
19 | +++ benchmark/blobslap_worker.c 2009-11-04 22:14:13 +0000 |
20 | @@ -13,8 +13,8 @@ |
21 | |
22 | #include "benchmark.h" |
23 | |
24 | -static void *worker_fn(gearman_job_st *job, void *cb_arg, size_t *result_size, |
25 | - gearman_return_t *ret_ptr); |
26 | +static void *worker_fn(gearman_job_st *job, void *context, |
27 | + size_t *result_size, gearman_return_t *ret_ptr); |
28 | |
29 | static void usage(char *name); |
30 | |
31 | @@ -130,10 +130,10 @@ |
32 | return 0; |
33 | } |
34 | |
35 | -static void *worker_fn(gearman_job_st *job, void *cb_arg, size_t *result_size, |
36 | - gearman_return_t *ret_ptr) |
37 | +static void *worker_fn(gearman_job_st *job, void *context, |
38 | + size_t *result_size, gearman_return_t *ret_ptr) |
39 | { |
40 | - gearman_benchmark_st *benchmark= (gearman_benchmark_st *)cb_arg; |
41 | + gearman_benchmark_st *benchmark= (gearman_benchmark_st *)context; |
42 | |
43 | (void)result_size; |
44 | |
45 | |
46 | === modified file 'bin/gearman.c' |
47 | --- bin/gearman.c 2009-09-28 17:47:34 +0000 |
48 | +++ bin/gearman.c 2009-11-04 22:14:13 +0000 |
49 | @@ -92,8 +92,8 @@ |
50 | /** |
51 | * Callback function when worker gets a job. |
52 | */ |
53 | -static void *_worker_cb(gearman_job_st *job, void *cb_arg, size_t *result_size, |
54 | - gearman_return_t *ret_ptr); |
55 | +static void *_worker_cb(gearman_job_st *job, void *context, |
56 | + size_t *result_size, gearman_return_t *ret_ptr); |
57 | |
58 | /** |
59 | * Read workload chunk from a file descriptor and put into allocated memory. |
60 | @@ -460,10 +460,10 @@ |
61 | gearman_worker_free(&worker); |
62 | } |
63 | |
64 | -static void *_worker_cb(gearman_job_st *job, void *cb_arg, size_t *result_size, |
65 | - gearman_return_t *ret_ptr) |
66 | +static void *_worker_cb(gearman_job_st *job, void *context, |
67 | + size_t *result_size, gearman_return_t *ret_ptr) |
68 | { |
69 | - gearman_args_st *args= (gearman_args_st *)cb_arg; |
70 | + gearman_args_st *args= (gearman_args_st *)context; |
71 | int in_fds[2]; |
72 | int out_fds[2]; |
73 | char *result= NULL; |
74 | |
75 | === modified file 'configure.ac' |
76 | --- configure.ac 2009-09-30 06:07:17 +0000 |
77 | +++ configure.ac 2009-11-04 22:14:13 +0000 |
78 | @@ -6,7 +6,7 @@ |
79 | # the COPYING file in this directory for full text. |
80 | |
81 | AC_PREREQ(2.59) |
82 | -AC_INIT([gearmand],[0.10],[https://launchpad.net/gearmand]) |
83 | +AC_INIT([gearmand],[0.11],[https://launchpad.net/gearmand]) |
84 | AC_CONFIG_SRCDIR(libgearman/gearman.c) |
85 | AC_CONFIG_AUX_DIR(config) |
86 | AC_CONFIG_HEADERS([config.h]) |
87 | @@ -14,7 +14,7 @@ |
88 | |
89 | PANDORA_CANONICAL_TARGET(require-cxx) |
90 | |
91 | -GEARMAN_LIBRARY_VERSION=2:0:0 |
92 | +GEARMAN_LIBRARY_VERSION=2:1:0 |
93 | # | | | |
94 | # +------+ | +---+ |
95 | # | | | |
96 | @@ -28,7 +28,7 @@ |
97 | # +- increment if interfaces have been added, removed or changed |
98 | AC_SUBST(GEARMAN_LIBRARY_VERSION) |
99 | |
100 | -GEARMAN_SERVER_LIBRARY_VERSION=0:0:0 |
101 | +GEARMAN_SERVER_LIBRARY_VERSION=0:1:0 |
102 | # | | | |
103 | # +------+ | +---+ |
104 | # | | | |
105 | |
106 | === modified file 'docs/Doxyfile.api' |
107 | --- docs/Doxyfile.api 2009-09-25 00:04:06 +0000 |
108 | +++ docs/Doxyfile.api 2009-11-04 22:14:13 +0000 |
109 | @@ -534,7 +534,35 @@ |
110 | # directories like "/usr/src/myproject". Separate the files or directories |
111 | # with spaces. |
112 | |
113 | -INPUT = docs libgearman libgearman-server examples examples/reverse_client.c examples/reverse_client_bg.c examples/reverse_client_cb.c examples/reverse_worker.c |
114 | +INPUT = docs/doxygen.h \ |
115 | + libgearman/constants.h \ |
116 | + libgearman/client.h \ |
117 | + libgearman/task.h \ |
118 | + libgearman/worker.h \ |
119 | + libgearman/job.h \ |
120 | + libgearman/gearman.h \ |
121 | + libgearman/conn.h \ |
122 | + libgearman/packet.h \ |
123 | + libgearman-server/constants.h \ |
124 | + libgearman-server/client.h \ |
125 | + libgearman-server/conf.h \ |
126 | + libgearman-server/conf_module.h \ |
127 | + libgearman-server/conn.h \ |
128 | + libgearman-server/function.h \ |
129 | + libgearman-server/job.h \ |
130 | + libgearman-server/packet.h \ |
131 | + libgearman-server/server.h \ |
132 | + libgearman-server/thread.h \ |
133 | + libgearman-server/worker.h \ |
134 | + libgearman-server/protocol_http.h \ |
135 | + libgearman-server/queue_libdrizzle.h \ |
136 | + libgearman-server/queue_libmemcached.h \ |
137 | + libgearman-server/queue_libpq.h \ |
138 | + libgearman-server/queue_libsqlite3.h \ |
139 | + libgearman-server/gearmand.h \ |
140 | + libgearman-server/gearmand_con.h \ |
141 | + libgearman-server/gearmand_thread.h \ |
142 | + examples |
143 | |
144 | # This tag can be used to specify the character encoding of the source files |
145 | # that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is |
146 | @@ -551,7 +579,7 @@ |
147 | # *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx |
148 | # *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.py *.f90 |
149 | |
150 | -FILE_PATTERNS = *.h |
151 | +FILE_PATTERNS = *.h *.c |
152 | |
153 | # The RECURSIVE tag can be used to turn specify whether or not subdirectories |
154 | # should be searched for input files as well. Possible values are YES and NO. |
155 | @@ -563,7 +591,7 @@ |
156 | # excluded from the INPUT source files. This way you can easily exclude a |
157 | # subdirectory from a directory tree whose root is specified with the INPUT tag. |
158 | |
159 | -EXCLUDE = libgearman/common.h libgearman/structs.h libgearman-server/common.h libgearman-server/structs.h |
160 | +EXCLUDE = |
161 | |
162 | # The EXCLUDE_SYMLINKS tag can be used select whether or not files or |
163 | # directories that are symbolic links (a Unix filesystem feature) are excluded |
164 | @@ -747,7 +775,7 @@ |
165 | # each generated HTML page. If it is left blank doxygen will generate a |
166 | # standard footer. |
167 | |
168 | -HTML_FOOTER = |
169 | +HTML_FOOTER = |
170 | |
171 | # The HTML_STYLESHEET tag can be used to specify a user-defined cascading |
172 | # style sheet that is used by each HTML page. It can be used to |
173 | |
174 | === modified file 'docs/Doxyfile.dev' |
175 | --- docs/Doxyfile.dev 2009-09-25 00:04:06 +0000 |
176 | +++ docs/Doxyfile.dev 2009-11-04 22:14:13 +0000 |
177 | @@ -534,7 +534,37 @@ |
178 | # directories like "/usr/src/myproject". Separate the files or directories |
179 | # with spaces. |
180 | |
181 | -INPUT = docs libgearman libgearman-server examples |
182 | +INPUT = docs/doxygen.h \ |
183 | + libgearman/constants.h \ |
184 | + libgearman/client.h \ |
185 | + libgearman/task.h \ |
186 | + libgearman/worker.h \ |
187 | + libgearman/job.h \ |
188 | + libgearman/gearman.h \ |
189 | + libgearman/conn.h \ |
190 | + libgearman/packet.h \ |
191 | + libgearman \ |
192 | + libgearman-server/constants.h \ |
193 | + libgearman-server/client.h \ |
194 | + libgearman-server/conf.h \ |
195 | + libgearman-server/conf_module.h \ |
196 | + libgearman-server/conn.h \ |
197 | + libgearman-server/function.h \ |
198 | + libgearman-server/job.h \ |
199 | + libgearman-server/packet.h \ |
200 | + libgearman-server/server.h \ |
201 | + libgearman-server/thread.h \ |
202 | + libgearman-server/worker.h \ |
203 | + libgearman-server/protocol_http.h \ |
204 | + libgearman-server/queue_libdrizzle.h \ |
205 | + libgearman-server/queue_libmemcached.h \ |
206 | + libgearman-server/queue_libpq.h \ |
207 | + libgearman-server/queue_libsqlite3.h \ |
208 | + libgearman-server/gearmand.h \ |
209 | + libgearman-server/gearmand_con.h \ |
210 | + libgearman-server/gearmand_thread.h \ |
211 | + libgearman-server \ |
212 | + examples |
213 | |
214 | # This tag can be used to specify the character encoding of the source files |
215 | # that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is |
216 | |
217 | === modified file 'examples/reverse_worker.c' |
218 | --- examples/reverse_worker.c 2009-09-28 17:47:34 +0000 |
219 | +++ examples/reverse_worker.c 2009-11-04 22:14:13 +0000 |
220 | @@ -27,8 +27,8 @@ |
221 | REVERSE_WORKER_OPTIONS_UNIQUE= (1 << 2) |
222 | } reverse_worker_options_t; |
223 | |
224 | -static void *reverse(gearman_job_st *job, void *cb_arg, size_t *result_size, |
225 | - gearman_return_t *ret_ptr); |
226 | +static void *reverse(gearman_job_st *job, void *context, |
227 | + size_t *result_size, gearman_return_t *ret_ptr); |
228 | |
229 | static void usage(char *name); |
230 | |
231 | @@ -136,10 +136,10 @@ |
232 | return 0; |
233 | } |
234 | |
235 | -static void *reverse(gearman_job_st *job, void *cb_arg, size_t *result_size, |
236 | - gearman_return_t *ret_ptr) |
237 | +static void *reverse(gearman_job_st *job, void *context, |
238 | + size_t *result_size, gearman_return_t *ret_ptr) |
239 | { |
240 | - reverse_worker_options_t options= *((reverse_worker_options_t *)cb_arg); |
241 | + reverse_worker_options_t options= *((reverse_worker_options_t *)context); |
242 | const uint8_t *workload; |
243 | uint8_t *result; |
244 | size_t x; |
245 | |
246 | === modified file 'examples/wc_worker.c' |
247 | --- examples/wc_worker.c 2009-06-14 07:26:30 +0000 |
248 | +++ examples/wc_worker.c 2009-11-04 22:14:14 +0000 |
249 | @@ -19,7 +19,7 @@ |
250 | |
251 | #include <libgearman/gearman.h> |
252 | |
253 | -static void *wc(gearman_job_st *job, void *cb_arg, size_t *result_size, |
254 | +static void *wc(gearman_job_st *job, void *context, size_t *result_size, |
255 | gearman_return_t *ret_ptr); |
256 | |
257 | static void usage(char *name); |
258 | @@ -97,14 +97,14 @@ |
259 | return 0; |
260 | } |
261 | |
262 | -static void *wc(gearman_job_st *job, void *cb_arg, size_t *result_size, |
263 | +static void *wc(gearman_job_st *job, void *context, size_t *result_size, |
264 | gearman_return_t *ret_ptr) |
265 | { |
266 | const uint8_t *workload; |
267 | uint8_t *result; |
268 | size_t x; |
269 | uint64_t count= 0; |
270 | - (void)cb_arg; |
271 | + (void)context; |
272 | |
273 | workload= gearman_job_workload(job); |
274 | *result_size= gearman_job_workload_size(job); |
275 | |
276 | === modified file 'gearmand/gearmand.c' |
277 | --- gearmand/gearmand.c 2009-09-24 23:43:15 +0000 |
278 | +++ gearmand/gearmand.c 2009-11-04 22:14:14 +0000 |
279 | @@ -102,6 +102,7 @@ |
280 | int backlog= GEARMAND_LISTEN_BACKLOG; |
281 | rlim_t fds= 0; |
282 | uint8_t job_retries= 0; |
283 | + uint8_t worker_wakeup= 0; |
284 | in_port_t port= 0; |
285 | const char *host= NULL; |
286 | const char *pid_file= NULL; |
287 | @@ -157,6 +158,9 @@ |
288 | MCO("user", 'u', "USER", "Switch to given user after startup.") |
289 | MCO("verbose", 'v', NULL, "Increase verbosity level by one.") |
290 | MCO("version", 'V', NULL, "Display the version of gearmand and exit.") |
291 | + MCO("worker-wakeup", 'w', "WORKERS", |
292 | + "Number of workers to wakeup for each job received. The default is to " |
293 | + "wakeup all avaiable workers.") |
294 | |
295 | /* Make sure none of the gearman_conf_module_add_option calls failed. */ |
296 | if (gearman_conf_return(&conf) != GEARMAN_SUCCESS) |
297 | @@ -280,6 +284,8 @@ |
298 | verbose++; |
299 | else if (!strcmp(name, "version")) |
300 | printf("\ngearmand %s - %s\n", gearman_version(), gearman_bugreport()); |
301 | + else if (!strcmp(name, "worker-wakeup")) |
302 | + worker_wakeup= (uint8_t)atoi(value); |
303 | else |
304 | { |
305 | fprintf(stderr, "gearmand: Unknown option:%s\n", name); |
306 | @@ -331,6 +337,7 @@ |
307 | gearmand_set_backlog(_gearmand, backlog); |
308 | gearmand_set_threads(_gearmand, threads); |
309 | gearmand_set_job_retries(_gearmand, job_retries); |
310 | + gearmand_set_worker_wakeup(_gearmand, worker_wakeup); |
311 | gearmand_set_log_fn(_gearmand, _log, &log_info, verbose); |
312 | |
313 | if (queue_type != NULL) |
314 | |
315 | === modified file 'libgearman-server/client.h' |
316 | --- libgearman-server/client.h 2009-09-24 23:43:15 +0000 |
317 | +++ libgearman-server/client.h 2009-11-04 22:14:14 +0000 |
318 | @@ -8,7 +8,7 @@ |
319 | |
320 | /** |
321 | * @file |
322 | - * @brief Server client declarations |
323 | + * @brief Client Declarations |
324 | */ |
325 | |
326 | #ifndef __GEARMAN_SERVER_CLIENT_H__ |
327 | @@ -19,10 +19,12 @@ |
328 | #endif |
329 | |
330 | /** |
331 | - * @addtogroup gearman_server_client Server Client Handling |
332 | + * @addtogroup gearman_server_client Client Declarations |
333 | * @ingroup gearman_server |
334 | + * |
335 | * This is a low level interface for gearman server clients. This is used |
336 | * internally by the server interface, so you probably want to look there first. |
337 | + * |
338 | * @{ |
339 | */ |
340 | |
341 | |
342 | === modified file 'libgearman-server/common.h' |
343 | --- libgearman-server/common.h 2009-09-24 23:43:15 +0000 |
344 | +++ libgearman-server/common.h 2009-11-04 22:14:14 +0000 |
345 | @@ -8,7 +8,7 @@ |
346 | |
347 | /** |
348 | * @file |
349 | - * @brief System include files |
350 | + * @brief System Include Files |
351 | */ |
352 | |
353 | #ifndef __GEARMAN_SERVER_COMMON_H__ |
354 | @@ -106,8 +106,10 @@ |
355 | * Macro to log fatal errors. |
356 | * @ingroup gearman_constants |
357 | */ |
358 | -#define GEARMAN_FATAL(__gearman, ...) \ |
359 | - GEARMAN_LOG(__gearman, GEARMAN_VERBOSE_FATAL, __VA_ARGS__) |
360 | +#define GEARMAN_FATAL(__gearman, ...) { \ |
361 | + unlikely ((__gearman)->verbose >= GEARMAN_VERBOSE_FATAL) \ |
362 | + GEARMAN_LOG(__gearman, GEARMAN_VERBOSE_FATAL, __VA_ARGS__) \ |
363 | +} |
364 | #define GEARMAN_SERVER_FATAL(__server, ...) \ |
365 | GEARMAN_FATAL((__server)->gearman, __VA_ARGS__) |
366 | |
367 | |
368 | === modified file 'libgearman-server/conf.h' |
369 | --- libgearman-server/conf.h 2009-09-24 23:43:15 +0000 |
370 | +++ libgearman-server/conf.h 2009-11-04 22:14:14 +0000 |
371 | @@ -8,7 +8,7 @@ |
372 | |
373 | /** |
374 | * @file |
375 | - * @brief Gearman conf declarations |
376 | + * @brief Configuration Declarations |
377 | */ |
378 | |
379 | #ifndef __GEARMAN_SERVER_CONF_H__ |
380 | @@ -19,7 +19,8 @@ |
381 | #endif |
382 | |
383 | /** |
384 | - * @addtogroup gearman_conf Gearman Conf Interface |
385 | + * @addtogroup gearman_conf Configuration Declarations |
386 | + * @ingroup gearman_server |
387 | * @{ |
388 | */ |
389 | |
390 | |
391 | === modified file 'libgearman-server/conf_module.h' |
392 | --- libgearman-server/conf_module.h 2009-09-24 23:43:15 +0000 |
393 | +++ libgearman-server/conf_module.h 2009-11-04 22:14:14 +0000 |
394 | @@ -8,7 +8,7 @@ |
395 | |
396 | /** |
397 | * @file |
398 | - * @brief Gearman conf module declarations |
399 | + * @brief Configuration Module Declarations |
400 | */ |
401 | |
402 | #ifndef __GEARMAN_SERVER_CONF_MODULE_H__ |
403 | @@ -19,7 +19,8 @@ |
404 | #endif |
405 | |
406 | /** |
407 | - * @addtogroup gearman_conf_module Gearman conf module interface |
408 | + * @addtogroup gearman_conf_module Configuration Module Declarations |
409 | + * @ingroup gearman_server |
410 | * @{ |
411 | */ |
412 | |
413 | |
414 | === modified file 'libgearman-server/conn.c' |
415 | --- libgearman-server/conn.c 2009-09-24 23:43:15 +0000 |
416 | +++ libgearman-server/conn.c 2009-11-04 22:14:14 +0000 |
417 | @@ -66,7 +66,7 @@ |
418 | } |
419 | } |
420 | |
421 | - if (gearman_con_create(thread->gearman, &(con->con)) == NULL) |
422 | + if (gearman_add_con(thread->gearman, &(con->con)) == NULL) |
423 | { |
424 | free(con); |
425 | return NULL; |
426 | |
427 | === modified file 'libgearman-server/conn.h' |
428 | --- libgearman-server/conn.h 2009-09-24 23:43:15 +0000 |
429 | +++ libgearman-server/conn.h 2009-11-04 22:14:14 +0000 |
430 | @@ -8,7 +8,7 @@ |
431 | |
432 | /** |
433 | * @file |
434 | - * @brief Server connection declarations |
435 | + * @brief Connection Declarations |
436 | */ |
437 | |
438 | #ifndef __GEARMAN_SERVER_CON_H__ |
439 | @@ -19,10 +19,12 @@ |
440 | #endif |
441 | |
442 | /** |
443 | - * @addtogroup gearman_server_con Server Connection Handling |
444 | + * @addtogroup gearman_server_con Connection Declarations |
445 | * @ingroup gearman_server |
446 | + * |
447 | * This is a low level interface for gearman server connections. This is used |
448 | * internally by the server interface, so you probably want to look there first. |
449 | + * |
450 | * @{ |
451 | */ |
452 | |
453 | |
454 | === modified file 'libgearman-server/constants.h' |
455 | --- libgearman-server/constants.h 2009-09-25 00:04:06 +0000 |
456 | +++ libgearman-server/constants.h 2009-11-04 22:14:14 +0000 |
457 | @@ -19,7 +19,8 @@ |
458 | #endif |
459 | |
460 | /** |
461 | - * @addtogroup gearman_server_constants Gearman Server Constants |
462 | + * @addtogroup gearman_server_constants Constants |
463 | + * @ingroup gearman_server |
464 | * @{ |
465 | */ |
466 | |
467 | @@ -38,23 +39,6 @@ |
468 | #define GEARMAN_CONF_MAX_OPTION_SHORT 128 |
469 | #define GEARMAN_CONF_DISPLAY_WIDTH 80 |
470 | |
471 | -/* Types. */ |
472 | -typedef struct gearman_server_st gearman_server_st; |
473 | -typedef struct gearman_server_thread_st gearman_server_thread_st; |
474 | -typedef struct gearman_server_con_st gearman_server_con_st; |
475 | -typedef struct gearman_server_packet_st gearman_server_packet_st; |
476 | -typedef struct gearman_server_function_st gearman_server_function_st; |
477 | -typedef struct gearman_server_client_st gearman_server_client_st; |
478 | -typedef struct gearman_server_worker_st gearman_server_worker_st; |
479 | -typedef struct gearman_server_job_st gearman_server_job_st; |
480 | -typedef struct gearmand_st gearmand_st; |
481 | -typedef struct gearmand_port_st gearmand_port_st; |
482 | -typedef struct gearmand_con_st gearmand_con_st; |
483 | -typedef struct gearmand_thread_st gearmand_thread_st; |
484 | -typedef struct gearman_conf_st gearman_conf_st; |
485 | -typedef struct gearman_conf_option_st gearman_conf_option_st; |
486 | -typedef struct gearman_conf_module_st gearman_conf_module_st; |
487 | - |
488 | /** @} */ |
489 | |
490 | /** |
491 | @@ -180,10 +164,28 @@ |
492 | |
493 | |
494 | /** |
495 | - * @addtogroup gearman_server_constants Gearman Server Constants |
496 | + * @addtogroup gearman_server_types Types |
497 | + * @ingroup gearman_server |
498 | * @{ |
499 | */ |
500 | |
501 | +/* Types. */ |
502 | +typedef struct gearman_server_st gearman_server_st; |
503 | +typedef struct gearman_server_thread_st gearman_server_thread_st; |
504 | +typedef struct gearman_server_con_st gearman_server_con_st; |
505 | +typedef struct gearman_server_packet_st gearman_server_packet_st; |
506 | +typedef struct gearman_server_function_st gearman_server_function_st; |
507 | +typedef struct gearman_server_client_st gearman_server_client_st; |
508 | +typedef struct gearman_server_worker_st gearman_server_worker_st; |
509 | +typedef struct gearman_server_job_st gearman_server_job_st; |
510 | +typedef struct gearmand_st gearmand_st; |
511 | +typedef struct gearmand_port_st gearmand_port_st; |
512 | +typedef struct gearmand_con_st gearmand_con_st; |
513 | +typedef struct gearmand_thread_st gearmand_thread_st; |
514 | +typedef struct gearman_conf_st gearman_conf_st; |
515 | +typedef struct gearman_conf_option_st gearman_conf_option_st; |
516 | +typedef struct gearman_conf_module_st gearman_conf_module_st; |
517 | + |
518 | /* Function types. */ |
519 | typedef void (gearman_server_thread_run_fn)(gearman_server_thread_st *thread, |
520 | void *context); |
521 | @@ -214,6 +216,16 @@ |
522 | |
523 | /** @} */ |
524 | |
525 | +/** |
526 | + * @addtogroup gearman_server_protocol Protocol Plugins |
527 | + * @ingroup gearman_server |
528 | + */ |
529 | + |
530 | +/** |
531 | + * @addtogroup gearman_server_queue Queue Plugins |
532 | + * @ingroup gearman_server |
533 | + */ |
534 | + |
535 | #ifdef __cplusplus |
536 | } |
537 | #endif |
538 | |
539 | === modified file 'libgearman-server/function.h' |
540 | --- libgearman-server/function.h 2009-09-24 23:43:15 +0000 |
541 | +++ libgearman-server/function.h 2009-11-04 22:14:14 +0000 |
542 | @@ -8,7 +8,7 @@ |
543 | |
544 | /** |
545 | * @file |
546 | - * @brief Server function declarations |
547 | + * @brief Function Declarations |
548 | */ |
549 | |
550 | #ifndef __GEARMAN_SERVER_FUNCTION_H__ |
551 | @@ -19,10 +19,12 @@ |
552 | #endif |
553 | |
554 | /** |
555 | - * @addtogroup gearman_server_function Server Function Handling |
556 | + * @addtogroup gearman_server_function Function Declarations |
557 | * @ingroup gearman_server |
558 | + * |
559 | * This is a low level interface for gearman server functions. This is used |
560 | * internally by the server interface, so you probably want to look there first. |
561 | + * |
562 | * @{ |
563 | */ |
564 | |
565 | |
566 | === modified file 'libgearman-server/gearmand.c' |
567 | --- libgearman-server/gearmand.c 2009-09-24 23:43:15 +0000 |
568 | +++ libgearman-server/gearmand.c 2009-11-04 22:14:14 +0000 |
569 | @@ -146,6 +146,11 @@ |
570 | gearman_server_set_job_retries(&(gearmand->server), job_retries); |
571 | } |
572 | |
573 | +void gearmand_set_worker_wakeup(gearmand_st *gearmand, uint8_t worker_wakeup) |
574 | +{ |
575 | + gearman_server_set_worker_wakeup(&(gearmand->server), worker_wakeup); |
576 | +} |
577 | + |
578 | void gearmand_set_threads(gearmand_st *gearmand, uint32_t threads) |
579 | { |
580 | gearmand->threads= threads; |
581 | |
582 | === modified file 'libgearman-server/gearmand.h' |
583 | --- libgearman-server/gearmand.h 2009-09-24 23:43:15 +0000 |
584 | +++ libgearman-server/gearmand.h 2009-11-04 22:14:14 +0000 |
585 | @@ -8,7 +8,7 @@ |
586 | |
587 | /** |
588 | * @file |
589 | - * @brief Gearmand declarations |
590 | + * @brief Gearmand Declarations |
591 | */ |
592 | |
593 | #ifndef __GEARMAND_H__ |
594 | @@ -23,8 +23,10 @@ |
595 | #endif |
596 | |
597 | /** |
598 | - * @addtogroup gearmand Gearmand |
599 | + * @addtogroup gearmand Gearmand Declarations |
600 | + * |
601 | * This is a server implementation using the gearman_server interface. |
602 | + * |
603 | * @{ |
604 | */ |
605 | |
606 | @@ -64,6 +66,15 @@ |
607 | void gearmand_set_job_retries(gearmand_st *gearmand, uint8_t job_retries); |
608 | |
609 | /** |
610 | + * Set maximum number of workers to wake up per job. |
611 | + * @param gearmand Server instance structure previously initialized with |
612 | + * gearmand_create. |
613 | + * @param worker_wakeup Number of workers to wake up. |
614 | + */ |
615 | +GEARMAN_API |
616 | +void gearmand_set_worker_wakeup(gearmand_st *gearmand, uint8_t worker_wakeup); |
617 | + |
618 | +/** |
619 | * Set number of I/O threads for server to use. |
620 | * @param gearmand Server instance structure previously initialized with |
621 | * gearmand_create. |
622 | |
623 | === modified file 'libgearman-server/gearmand_con.c' |
624 | --- libgearman-server/gearmand_con.c 2009-09-24 23:43:15 +0000 |
625 | +++ libgearman-server/gearmand_con.c 2009-11-04 22:14:14 +0000 |
626 | @@ -178,9 +178,9 @@ |
627 | } |
628 | |
629 | gearman_return_t gearmand_con_watch(gearman_con_st *con, short events, |
630 | - void *arg __attribute__ ((unused))) |
631 | + void *context __attribute__ ((unused))) |
632 | { |
633 | - (void) arg; |
634 | + (void) context; |
635 | gearmand_con_st *dcon; |
636 | short set_events= 0; |
637 | |
638 | |
639 | === modified file 'libgearman-server/gearmand_con.h' |
640 | --- libgearman-server/gearmand_con.h 2009-09-24 23:43:15 +0000 |
641 | +++ libgearman-server/gearmand_con.h 2009-11-04 22:14:14 +0000 |
642 | @@ -8,7 +8,7 @@ |
643 | |
644 | /** |
645 | * @file |
646 | - * @brief Gearmand Connection Declarations |
647 | + * @brief Connection Declarations |
648 | */ |
649 | |
650 | #ifndef __GEARMAND_CON_H__ |
651 | @@ -19,8 +19,11 @@ |
652 | #endif |
653 | |
654 | /** |
655 | - * @addtogroup gearmand_con Gearmand Connections |
656 | + * @addtogroup gearmand_con Connection Declarations |
657 | + * @ingroup gearmand |
658 | + * |
659 | * Connection handling for gearmand. |
660 | + * |
661 | * @{ |
662 | */ |
663 | |
664 | @@ -58,7 +61,7 @@ |
665 | */ |
666 | GEARMAN_API |
667 | gearman_return_t gearmand_con_watch(gearman_con_st *con, short events, |
668 | - void *arg); |
669 | + void *context); |
670 | |
671 | /** @} */ |
672 | |
673 | |
674 | === modified file 'libgearman-server/gearmand_thread.h' |
675 | --- libgearman-server/gearmand_thread.h 2009-09-24 23:43:15 +0000 |
676 | +++ libgearman-server/gearmand_thread.h 2009-11-04 22:14:14 +0000 |
677 | @@ -8,7 +8,7 @@ |
678 | |
679 | /** |
680 | * @file |
681 | - * @brief Gearmand Thread Declarations |
682 | + * @brief Thread Declarations |
683 | */ |
684 | |
685 | #ifndef __GEARMAND_THREAD_H__ |
686 | @@ -19,8 +19,11 @@ |
687 | #endif |
688 | |
689 | /** |
690 | - * @addtogroup gearmand_thread Gearmand Threads |
691 | + * @addtogroup gearmand_thread Thread Declarations |
692 | + * @ingroup gearmand |
693 | + * |
694 | * Thread handling for gearmand. |
695 | + * |
696 | * @{ |
697 | */ |
698 | |
699 | |
700 | === modified file 'libgearman-server/job.c' |
701 | --- libgearman-server/job.c 2009-09-26 17:11:51 +0000 |
702 | +++ libgearman-server/job.c 2009-11-04 22:14:14 +0000 |
703 | @@ -380,6 +380,7 @@ |
704 | { |
705 | gearman_server_client_st *client; |
706 | gearman_server_worker_st *worker; |
707 | + uint32_t noop_sent; |
708 | gearman_return_t ret; |
709 | |
710 | if (job->worker != NULL) |
711 | @@ -415,22 +416,32 @@ |
712 | } |
713 | |
714 | /* Queue NOOP for possible sleeping workers. */ |
715 | - for (worker= job->function->worker_list; worker != NULL; |
716 | - worker= worker->function_next) |
717 | + if (job->function->worker_list != NULL) |
718 | { |
719 | - if (!(worker->con->options & GEARMAN_SERVER_CON_SLEEPING) || |
720 | - worker->con->options & GEARMAN_SERVER_CON_NOOP_SENT) |
721 | + worker= job->function->worker_list; |
722 | + noop_sent= 0; |
723 | + do |
724 | { |
725 | - continue; |
726 | + if (worker->con->options & GEARMAN_SERVER_CON_SLEEPING && |
727 | + !(worker->con->options & GEARMAN_SERVER_CON_NOOP_SENT)) |
728 | + { |
729 | + ret= gearman_server_io_packet_add(worker->con, false, |
730 | + GEARMAN_MAGIC_RESPONSE, |
731 | + GEARMAN_COMMAND_NOOP, NULL); |
732 | + if (ret != GEARMAN_SUCCESS) |
733 | + return ret; |
734 | + |
735 | + worker->con->options|= GEARMAN_SERVER_CON_NOOP_SENT; |
736 | + noop_sent++; |
737 | + } |
738 | + |
739 | + worker= worker->function_next; |
740 | } |
741 | - |
742 | - ret= gearman_server_io_packet_add(worker->con, false, |
743 | - GEARMAN_MAGIC_RESPONSE, |
744 | - GEARMAN_COMMAND_NOOP, NULL); |
745 | - if (ret != GEARMAN_SUCCESS) |
746 | - return ret; |
747 | - |
748 | - worker->con->options|= GEARMAN_SERVER_CON_NOOP_SENT; |
749 | + while (worker != job->function->worker_list && |
750 | + (job->server->worker_wakeup == 0 || |
751 | + noop_sent < job->server->worker_wakeup)); |
752 | + |
753 | + job->function->worker_list= worker; |
754 | } |
755 | |
756 | /* Queue the job to be run. */ |
757 | |
758 | === modified file 'libgearman-server/job.h' |
759 | --- libgearman-server/job.h 2009-09-24 23:43:15 +0000 |
760 | +++ libgearman-server/job.h 2009-11-04 22:14:14 +0000 |
761 | @@ -8,7 +8,7 @@ |
762 | |
763 | /** |
764 | * @file |
765 | - * @brief Server job declarations |
766 | + * @brief Job Declarations |
767 | */ |
768 | |
769 | #ifndef __GEARMAN_SERVER_JOB_H__ |
770 | @@ -19,10 +19,12 @@ |
771 | #endif |
772 | |
773 | /** |
774 | - * @addtogroup gearman_server_job Server Job Handling |
775 | + * @addtogroup gearman_server_job Job Declarations |
776 | * @ingroup gearman_server |
777 | + * |
778 | * This is a low level interface for gearman server jobs. This is used |
779 | * internally by the server interface, so you probably want to look there first. |
780 | + * |
781 | * @{ |
782 | */ |
783 | |
784 | |
785 | === modified file 'libgearman-server/packet.c' |
786 | --- libgearman-server/packet.c 2009-09-24 23:43:15 +0000 |
787 | +++ libgearman-server/packet.c 2009-11-04 22:14:14 +0000 |
788 | @@ -101,8 +101,8 @@ |
789 | if (server_packet == NULL) |
790 | return GEARMAN_MEMORY_ALLOCATION_FAILURE; |
791 | |
792 | - if (gearman_packet_create(con->thread->gearman, |
793 | - &(server_packet->packet)) == NULL) |
794 | + if (gearman_add_packet(con->thread->gearman, |
795 | + &(server_packet->packet)) == NULL) |
796 | { |
797 | gearman_server_packet_free(server_packet, con->thread, false); |
798 | return GEARMAN_MEMORY_ALLOCATION_FAILURE; |
799 | |
800 | === modified file 'libgearman-server/packet.h' |
801 | --- libgearman-server/packet.h 2009-09-24 23:43:15 +0000 |
802 | +++ libgearman-server/packet.h 2009-11-04 22:14:14 +0000 |
803 | @@ -8,7 +8,7 @@ |
804 | |
805 | /** |
806 | * @file |
807 | - * @brief Server Packet declarations |
808 | + * @brief Packet Declarations |
809 | */ |
810 | |
811 | #ifndef __GEARMAN_SERVER_PACKET_H__ |
812 | @@ -19,10 +19,12 @@ |
813 | #endif |
814 | |
815 | /** |
816 | - * @addtogroup gearman_server_con Server Connection Handling |
817 | + * @addtogroup gearman_server_packet Packet Declarations |
818 | * @ingroup gearman_server |
819 | + * |
820 | * This is a low level interface for gearman server connections. This is used |
821 | * internally by the server interface, so you probably want to look there first. |
822 | + * |
823 | * @{ |
824 | */ |
825 | |
826 | |
827 | === modified file 'libgearman-server/protocol_http.c' |
828 | --- libgearman-server/protocol_http.c 2009-09-24 23:43:15 +0000 |
829 | +++ libgearman-server/protocol_http.c 2009-11-04 22:14:14 +0000 |
830 | @@ -17,8 +17,8 @@ |
831 | #include <libgearman-server/protocol_http.h> |
832 | |
833 | /** |
834 | - * @addtogroup gearman_protocol_http HTTP Protocol Functions |
835 | - * @ingroup gearman_protocol |
836 | + * @addtogroup gearman_protocol_http_static Static HTTP Protocol Definitions |
837 | + * @ingroup gearman_protocol_http |
838 | * @{ |
839 | */ |
840 | |
841 | @@ -27,10 +27,6 @@ |
842 | */ |
843 | #define GEARMAN_PROTOCOL_HTTP_DEFAULT_PORT 8080 |
844 | |
845 | -/* |
846 | - * Private declarations |
847 | - */ |
848 | - |
849 | /** |
850 | * Structure for HTTP specific data. |
851 | */ |
852 | @@ -42,7 +38,7 @@ |
853 | |
854 | /* Protocol callback functions. */ |
855 | static gearman_return_t _http_con_add(gearman_con_st *con); |
856 | -static void _http_free(gearman_con_st *con , void *data); |
857 | +static void _http_free(gearman_con_st *con, void *context); |
858 | static size_t _http_pack(const gearman_packet_st *packet, gearman_con_st *con, |
859 | void *data, size_t data_size, |
860 | gearman_return_t *ret_ptr); |
861 | @@ -115,7 +111,7 @@ |
862 | } |
863 | |
864 | /* |
865 | - * Private definitions |
866 | + * Static definitions |
867 | */ |
868 | |
869 | static gearman_return_t _http_con_add(gearman_con_st *con) |
870 | @@ -140,9 +136,10 @@ |
871 | return GEARMAN_SUCCESS; |
872 | } |
873 | |
874 | -static void _http_free(gearman_con_st *con __attribute__ ((unused)), void *data) |
875 | +static void _http_free(gearman_con_st *con __attribute__ ((unused)), |
876 | + void *context) |
877 | { |
878 | - free(data); |
879 | + free((gearman_protocol_http_st *)context); |
880 | } |
881 | |
882 | static size_t _http_pack(const gearman_packet_st *packet, gearman_con_st *con, |
883 | |
884 | === modified file 'libgearman-server/protocol_http.h' |
885 | --- libgearman-server/protocol_http.h 2009-09-24 23:43:15 +0000 |
886 | +++ libgearman-server/protocol_http.h 2009-11-04 22:14:14 +0000 |
887 | @@ -19,20 +19,24 @@ |
888 | #endif |
889 | |
890 | /** |
891 | - * @addtogroup gearman_protocol_http HTTP Protocol Functions |
892 | - * @ingroup gearman_protocol |
893 | + * @addtogroup gearman_protocol_http HTTP Protocol Declarations |
894 | + * @ingroup gearman_server_protocol |
895 | + * |
896 | * This module provides a simple HTTP interface into the Gearman job server. It |
897 | * is also meant to serve as an example of how other protocols can plug into |
898 | * the server. This module will ignore all headers except: |
899 | + * |
900 | * Content-Length: SIZE |
901 | * Connection: Keep-Alive |
902 | * X-Gearman-Unique: UNIQUE_KEY |
903 | * X-Gearman-Background: true |
904 | * X-Gearman-Priority: HIGH | LOW |
905 | + * |
906 | * All HTTP requests are translated into SUBMIT_JOB requests, and only |
907 | * WORK_COMPLETE, WORK_FAIL, and JOB_CREATED responses are returned. |
908 | * JOB_CREATED packet are only sent back if the "X-Gearman-Background: true" |
909 | * header is given. |
910 | + * |
911 | * @{ |
912 | */ |
913 | |
914 | |
915 | === modified file 'libgearman-server/queue_libdrizzle.c' |
916 | --- libgearman-server/queue_libdrizzle.c 2009-09-24 23:43:15 +0000 |
917 | +++ libgearman-server/queue_libdrizzle.c 2009-11-04 22:14:14 +0000 |
918 | @@ -8,7 +8,7 @@ |
919 | |
920 | /** |
921 | * @file |
922 | - * @brief Drizzle Queue Storage Definitions |
923 | + * @brief libdrizzle Queue Storage Definitions |
924 | */ |
925 | |
926 | #include "common.h" |
927 | @@ -17,8 +17,8 @@ |
928 | #include <libdrizzle/drizzle_client.h> |
929 | |
930 | /** |
931 | - * @addtogroup gearman_queue_libdrizzle libdrizzle Queue Storage Functions |
932 | - * @ingroup gearman_queue |
933 | + * @addtogroup gearman_queue_libdrizzle_static Static libdrizzle Queue Storage Definitions |
934 | + * @ingroup gearman_queue_libdrizzle |
935 | * @{ |
936 | */ |
937 | |
938 | @@ -29,10 +29,6 @@ |
939 | #define GEARMAN_QUEUE_LIBDRIZZLE_DEFAULT_TABLE "queue" |
940 | #define GEARMAN_QUEUE_QUERY_BUFFER 256 |
941 | |
942 | -/* |
943 | - * Private declarations |
944 | - */ |
945 | - |
946 | /** |
947 | * Structure for libdrizzle specific data. |
948 | */ |
949 | @@ -289,7 +285,7 @@ |
950 | } |
951 | |
952 | /* |
953 | - * Private definitions |
954 | + * Static definitions |
955 | */ |
956 | |
957 | static drizzle_return_t _libdrizzle_query(gearman_server_st *server, |
958 | |
959 | === modified file 'libgearman-server/queue_libdrizzle.h' |
960 | --- libgearman-server/queue_libdrizzle.h 2009-09-24 23:43:15 +0000 |
961 | +++ libgearman-server/queue_libdrizzle.h 2009-11-04 22:14:14 +0000 |
962 | @@ -19,8 +19,8 @@ |
963 | #endif |
964 | |
965 | /** |
966 | - * @addtogroup gearman_queue_libdrizzle libdrizzle Queue Storage Functions |
967 | - * @ingroup gearman_queue |
968 | + * @addtogroup gearman_queue_libdrizzle libdrizzle Queue Storage Declarations |
969 | + * @ingroup gearman_server_queue |
970 | * @{ |
971 | */ |
972 | |
973 | |
974 | === modified file 'libgearman-server/queue_libmemcached.c' |
975 | --- libgearman-server/queue_libmemcached.c 2009-09-24 23:43:15 +0000 |
976 | +++ libgearman-server/queue_libmemcached.c 2009-11-04 22:14:14 +0000 |
977 | @@ -8,7 +8,7 @@ |
978 | |
979 | /** |
980 | * @file |
981 | - * @brief Drizzle Queue Storage Definitions |
982 | + * @brief libmemcached Queue Storage Definitions |
983 | */ |
984 | |
985 | #include "common.h" |
986 | @@ -17,8 +17,8 @@ |
987 | #include <libmemcached/memcached.h> |
988 | |
989 | /** |
990 | - * @addtogroup gearman_queue_libmemcached libmemcached Queue Storage Functions |
991 | - * @ingroup gearman_queue |
992 | + * @addtogroup gearman_queue_libmemcached_static Static libmemcached Queue Storage Functions |
993 | + * @ingroup gearman_queue_libmemcached |
994 | * @{ |
995 | */ |
996 | |
997 | @@ -27,10 +27,6 @@ |
998 | */ |
999 | #define GEARMAN_QUEUE_LIBMEMCACHED_DEFAULT_PREFIX "gear_" |
1000 | |
1001 | -/* |
1002 | - * Private declarations |
1003 | - */ |
1004 | - |
1005 | /** |
1006 | * Structure for libmemcached specific data. |
1007 | */ |
1008 | @@ -191,7 +187,7 @@ |
1009 | } |
1010 | |
1011 | /* |
1012 | - * Private definitions |
1013 | + * Static definitions |
1014 | */ |
1015 | |
1016 | static gearman_return_t _libmemcached_add(gearman_server_st *server, |
1017 | |
1018 | === modified file 'libgearman-server/queue_libmemcached.h' |
1019 | --- libgearman-server/queue_libmemcached.h 2009-09-24 23:43:15 +0000 |
1020 | +++ libgearman-server/queue_libmemcached.h 2009-11-04 22:14:14 +0000 |
1021 | @@ -19,8 +19,8 @@ |
1022 | #endif |
1023 | |
1024 | /** |
1025 | - * @addtogroup gearman_queue_libmemcached libmemcached Queue Storage Functions |
1026 | - * @ingroup gearman_queue |
1027 | + * @addtogroup gearman_queue_libmemcached libmemcached Queue Storage Declarations |
1028 | + * @ingroup gearman_server_queue |
1029 | * @{ |
1030 | */ |
1031 | |
1032 | |
1033 | === modified file 'libgearman-server/queue_libpq.c' |
1034 | --- libgearman-server/queue_libpq.c 2009-09-24 23:43:15 +0000 |
1035 | +++ libgearman-server/queue_libpq.c 2009-11-04 22:14:14 +0000 |
1036 | @@ -8,7 +8,7 @@ |
1037 | |
1038 | /** |
1039 | * @file |
1040 | - * @brief PostgreSQL Queue Storage Definitions |
1041 | + * @brief libpq Queue Storage Definitions |
1042 | */ |
1043 | |
1044 | #include "common.h" |
1045 | @@ -24,8 +24,8 @@ |
1046 | #endif |
1047 | |
1048 | /** |
1049 | - * @addtogroup gearman_queue_libpq libpq Queue Storage Functions |
1050 | - * @ingroup gearman_queue |
1051 | + * @addtogroup gearman_queue_libpq_static Static libpq Queue Storage Definitions |
1052 | + * @ingroup gearman_queue_libpq |
1053 | * @{ |
1054 | */ |
1055 | |
1056 | @@ -35,10 +35,6 @@ |
1057 | #define GEARMAN_QUEUE_LIBPQ_DEFAULT_TABLE "queue" |
1058 | #define GEARMAN_QUEUE_QUERY_BUFFER 256 |
1059 | |
1060 | -/* |
1061 | - * Private declarations |
1062 | - */ |
1063 | - |
1064 | /** |
1065 | * Structure for libpq specific data. |
1066 | */ |
1067 | @@ -241,7 +237,7 @@ |
1068 | } |
1069 | |
1070 | /* |
1071 | - * Private definitions |
1072 | + * Static definitions |
1073 | */ |
1074 | |
1075 | static void _libpq_notice_processor(void *arg, const char *message) |
1076 | |
1077 | === modified file 'libgearman-server/queue_libpq.h' |
1078 | --- libgearman-server/queue_libpq.h 2009-09-24 23:43:15 +0000 |
1079 | +++ libgearman-server/queue_libpq.h 2009-11-04 22:14:14 +0000 |
1080 | @@ -19,8 +19,8 @@ |
1081 | #endif |
1082 | |
1083 | /** |
1084 | - * @addtogroup gearman_queue_libpq libpq Queue Storage Functions |
1085 | - * @ingroup gearman_queue |
1086 | + * @addtogroup gearman_queue_libpq libpq Queue Storage Declarations |
1087 | + * @ingroup gearman_server_queue |
1088 | * @{ |
1089 | */ |
1090 | |
1091 | |
1092 | === modified file 'libgearman-server/queue_libsqlite3.c' |
1093 | --- libgearman-server/queue_libsqlite3.c 2009-09-24 23:43:15 +0000 |
1094 | +++ libgearman-server/queue_libsqlite3.c 2009-11-04 22:14:14 +0000 |
1095 | @@ -8,7 +8,7 @@ |
1096 | |
1097 | /** |
1098 | * @file |
1099 | - * @brief Sqlite Queue Storage Definitions |
1100 | + * @brief libsqlite3 Queue Storage Definitions |
1101 | */ |
1102 | |
1103 | #include "common.h" |
1104 | @@ -17,8 +17,8 @@ |
1105 | #include <sqlite3.h> |
1106 | |
1107 | /** |
1108 | - * @addtogroup gearman_queue_sqlite sqlite Queue Storage Functions |
1109 | - * @ingroup gearman_queue |
1110 | + * @addtogroup gearman_queue_libsqlite3_static Static libsqlite3 Queue Storage Definitions |
1111 | + * @ingroup gearman_queue_libsqlite3 |
1112 | * @{ |
1113 | */ |
1114 | |
1115 | @@ -27,10 +27,6 @@ |
1116 | */ |
1117 | #define GEARMAN_QUEUE_SQLITE_DEFAULT_TABLE "gearman_queue" |
1118 | #define GEARMAN_QUEUE_QUERY_BUFFER 256 |
1119 | - |
1120 | -/* |
1121 | - * Private declarations |
1122 | - */ |
1123 | #define SQLITE_MAX_TABLE_SIZE 256 |
1124 | #define SQLITE_MAX_CREATE_TABLE_SIZE 1024 |
1125 | |
1126 | @@ -281,7 +277,7 @@ |
1127 | } |
1128 | |
1129 | /* |
1130 | - * Private definitions |
1131 | + * Static definitions |
1132 | */ |
1133 | |
1134 | int _sqlite_query(gearman_server_st *server, |
1135 | |
1136 | === modified file 'libgearman-server/queue_libsqlite3.h' |
1137 | --- libgearman-server/queue_libsqlite3.h 2009-09-24 23:43:15 +0000 |
1138 | +++ libgearman-server/queue_libsqlite3.h 2009-11-04 22:14:14 +0000 |
1139 | @@ -19,8 +19,8 @@ |
1140 | #endif |
1141 | |
1142 | /** |
1143 | - * @addtogroup gearman_queue_libsqlite3 libsqlite3 Queue Storage Functions |
1144 | - * @ingroup gearman_queue |
1145 | + * @addtogroup gearman_queue_libsqlite3 libsqlite3 Queue Storage Declarations |
1146 | + * @ingroup gearman_server_queue |
1147 | * @{ |
1148 | */ |
1149 | |
1150 | |
1151 | === modified file 'libgearman-server/server.c' |
1152 | --- libgearman-server/server.c 2009-09-24 23:43:15 +0000 |
1153 | +++ libgearman-server/server.c 2009-11-04 22:14:14 +0000 |
1154 | @@ -84,6 +84,7 @@ |
1155 | server->proc_wakeup= false; |
1156 | server->proc_shutdown= false; |
1157 | server->job_retries= 0; |
1158 | + server->worker_wakeup= 0; |
1159 | server->thread_count= 0; |
1160 | server->free_packet_count= 0; |
1161 | server->function_count= 0; |
1162 | @@ -191,6 +192,12 @@ |
1163 | server->job_retries= job_retries; |
1164 | } |
1165 | |
1166 | +void gearman_server_set_worker_wakeup(gearman_server_st *server, |
1167 | + uint8_t worker_wakeup) |
1168 | +{ |
1169 | + server->worker_wakeup= worker_wakeup; |
1170 | +} |
1171 | + |
1172 | void gearman_server_set_log_fn(gearman_server_st *server, |
1173 | gearman_log_fn *function, |
1174 | const void *context, gearman_verbose_t verbose) |
1175 | @@ -906,8 +913,8 @@ |
1176 | return GEARMAN_MEMORY_ALLOCATION_FAILURE; |
1177 | } |
1178 | |
1179 | - if (gearman_packet_create(server_con->thread->gearman, |
1180 | - &(server_packet->packet)) == NULL) |
1181 | + if (gearman_add_packet(server_con->thread->gearman, |
1182 | + &(server_packet->packet)) == NULL) |
1183 | { |
1184 | free(data); |
1185 | gearman_server_packet_free(server_packet, server_con->thread, false); |
1186 | |
1187 | === modified file 'libgearman-server/server.h' |
1188 | --- libgearman-server/server.h 2009-09-24 23:43:15 +0000 |
1189 | +++ libgearman-server/server.h 2009-11-04 22:14:14 +0000 |
1190 | @@ -15,6 +15,8 @@ |
1191 | #define __GEARMAN_SERVER_H__ |
1192 | |
1193 | #include <libgearman/gearman.h> |
1194 | +#include <event.h> |
1195 | + |
1196 | #include <libgearman-server/constants.h> |
1197 | #include <libgearman-server/structs.h> |
1198 | #include <libgearman-server/conf.h> |
1199 | @@ -32,7 +34,7 @@ |
1200 | #endif |
1201 | |
1202 | /** |
1203 | - * @addtogroup gearman_server Server Interface |
1204 | + * @addtogroup gearman_server Gearman Server Declarations |
1205 | * This is the interface gearman servers should use. |
1206 | * @{ |
1207 | */ |
1208 | @@ -66,6 +68,16 @@ |
1209 | uint8_t job_retries); |
1210 | |
1211 | /** |
1212 | + * Set maximum number of workers to wake up per job. |
1213 | + * @param server Server structure previously initialized with |
1214 | + * gearman_server_create. |
1215 | + * @param worker_wakeup Number of workers to wake up. |
1216 | + */ |
1217 | +GEARMAN_API |
1218 | +void gearman_server_set_worker_wakeup(gearman_server_st *server, |
1219 | + uint8_t worker_wakeup); |
1220 | + |
1221 | +/** |
1222 | * Set logging callback for server instance. |
1223 | * @param server Server structure previously initialized with |
1224 | * gearman_server_create. |
1225 | |
1226 | === modified file 'libgearman-server/structs.h' |
1227 | --- libgearman-server/structs.h 2009-09-24 23:43:15 +0000 |
1228 | +++ libgearman-server/structs.h 2009-11-04 22:14:14 +0000 |
1229 | @@ -8,7 +8,7 @@ |
1230 | |
1231 | /** |
1232 | * @file |
1233 | - * @brief Struct definitions |
1234 | + * @brief Struct Definitions |
1235 | */ |
1236 | |
1237 | #ifndef __GEARMAN_SERVER_STRUCTS_H__ |
1238 | @@ -29,6 +29,7 @@ |
1239 | bool proc_wakeup; |
1240 | bool proc_shutdown; |
1241 | uint8_t job_retries; |
1242 | + uint8_t worker_wakeup; |
1243 | uint32_t job_handle_count; |
1244 | uint32_t thread_count; |
1245 | uint32_t function_count; |
1246 | |
1247 | === modified file 'libgearman-server/thread.c' |
1248 | --- libgearman-server/thread.c 2009-09-24 23:43:15 +0000 |
1249 | +++ libgearman-server/thread.c 2009-11-04 22:14:14 +0000 |
1250 | @@ -227,7 +227,7 @@ |
1251 | } |
1252 | |
1253 | /* Check for new activity on connections. */ |
1254 | - while ((con= gearman_con_ready(thread->gearman)) != NULL) |
1255 | + while ((con= gearman_ready(thread->gearman)) != NULL) |
1256 | { |
1257 | /* Inherited classes anyone? Some people would call this a hack, I call |
1258 | it clean (avoids extra ptrs). Brian, I'll give you your C99 0-byte |
1259 | |
1260 | === modified file 'libgearman-server/thread.h' |
1261 | --- libgearman-server/thread.h 2009-09-24 23:43:15 +0000 |
1262 | +++ libgearman-server/thread.h 2009-11-04 22:14:14 +0000 |
1263 | @@ -8,7 +8,7 @@ |
1264 | |
1265 | /** |
1266 | * @file |
1267 | - * @brief Server Thread Declarations |
1268 | + * @brief Thread Declarations |
1269 | */ |
1270 | |
1271 | #ifndef __GEARMAN_SERVER_THREAD_H__ |
1272 | @@ -19,8 +19,11 @@ |
1273 | #endif |
1274 | |
1275 | /** |
1276 | - * @addtogroup gearman_server_thread Server Thread Handling |
1277 | + * @addtogroup gearman_server_thread Thread Declarations |
1278 | + * @ingroup gearman_server |
1279 | + * |
1280 | * This is the interface gearman servers should use for creating threads. |
1281 | + * |
1282 | * @{ |
1283 | */ |
1284 | |
1285 | |
1286 | === modified file 'libgearman-server/worker.c' |
1287 | --- libgearman-server/worker.c 2009-09-24 23:43:15 +0000 |
1288 | +++ libgearman-server/worker.c 2009-11-04 22:14:14 +0000 |
1289 | @@ -73,7 +73,23 @@ |
1290 | worker->con= con; |
1291 | GEARMAN_LIST_ADD(con->worker, worker, con_) |
1292 | worker->function= function; |
1293 | - GEARMAN_LIST_ADD(function->worker, worker, function_) |
1294 | + |
1295 | + /* Add worker to the function list, which is a double-linked circular list. */ |
1296 | + if (function->worker_list == NULL) |
1297 | + { |
1298 | + function->worker_list= worker; |
1299 | + worker->function_next= worker; |
1300 | + worker->function_prev= worker; |
1301 | + } |
1302 | + else |
1303 | + { |
1304 | + worker->function_next= function->worker_list; |
1305 | + worker->function_prev= function->worker_list->function_prev; |
1306 | + worker->function_next->function_prev= worker; |
1307 | + worker->function_prev->function_next= worker; |
1308 | + } |
1309 | + function->worker_count++; |
1310 | + |
1311 | worker->job_list= NULL; |
1312 | |
1313 | return worker; |
1314 | @@ -88,7 +104,17 @@ |
1315 | (void)gearman_server_job_queue(worker->job_list); |
1316 | |
1317 | GEARMAN_LIST_DEL(worker->con->worker, worker, con_) |
1318 | - GEARMAN_LIST_DEL(worker->function->worker, worker, function_) |
1319 | + |
1320 | + if (worker == worker->function_next) |
1321 | + worker->function->worker_list= NULL; |
1322 | + else |
1323 | + { |
1324 | + worker->function_next->function_prev= worker->function_prev; |
1325 | + worker->function_prev->function_next= worker->function_next; |
1326 | + if (worker == worker->function->worker_list) |
1327 | + worker->function->worker_list= worker->function_next; |
1328 | + } |
1329 | + worker->function->worker_count--; |
1330 | |
1331 | if (worker->options & GEARMAN_SERVER_WORKER_ALLOCATED) |
1332 | { |
1333 | |
1334 | === modified file 'libgearman-server/worker.h' |
1335 | --- libgearman-server/worker.h 2009-09-24 23:43:15 +0000 |
1336 | +++ libgearman-server/worker.h 2009-11-04 22:14:14 +0000 |
1337 | @@ -8,7 +8,7 @@ |
1338 | |
1339 | /** |
1340 | * @file |
1341 | - * @brief Server worker declarations |
1342 | + * @brief Worker Declarations |
1343 | */ |
1344 | |
1345 | #ifndef __GEARMAN_SERVER_WORKER_H__ |
1346 | @@ -19,10 +19,12 @@ |
1347 | #endif |
1348 | |
1349 | /** |
1350 | - * @addtogroup gearman_server_worker Server Worker Handling |
1351 | + * @addtogroup gearman_server_worker Worker Declarations |
1352 | * @ingroup gearman_server |
1353 | + * |
1354 | * This is a low level interface for gearman server workers. This is used |
1355 | * internally by the server interface, so you probably want to look there first. |
1356 | + * |
1357 | * @{ |
1358 | */ |
1359 | |
1360 | |
1361 | === modified file 'libgearman/Makefile.am' |
1362 | --- libgearman/Makefile.am 2009-09-26 16:54:44 +0000 |
1363 | +++ libgearman/Makefile.am 2009-11-04 22:14:14 +0000 |
1364 | @@ -22,7 +22,8 @@ |
1365 | worker.h |
1366 | |
1367 | noinst_HEADERS= \ |
1368 | - common.h |
1369 | + common.h \ |
1370 | + gearman_local.h |
1371 | |
1372 | libgearman_la_SOURCES= \ |
1373 | client.c \ |
1374 | |
1375 | === modified file 'libgearman/client.c' |
1376 | --- libgearman/client.c 2009-09-28 17:47:34 +0000 |
1377 | +++ libgearman/client.c 2009-11-04 22:14:14 +0000 |
1378 | @@ -8,17 +8,13 @@ |
1379 | |
1380 | /** |
1381 | * @file |
1382 | - * @brief Client definitions |
1383 | + * @brief Client Definitions |
1384 | */ |
1385 | |
1386 | #include "common.h" |
1387 | |
1388 | -/* |
1389 | - * Private declarations |
1390 | - */ |
1391 | - |
1392 | /** |
1393 | - * @addtogroup gearman_client_private Private Client Functions |
1394 | + * @addtogroup gearman_client_static Static Client Declarations |
1395 | * @ingroup gearman_client |
1396 | * @{ |
1397 | */ |
1398 | @@ -102,7 +98,7 @@ |
1399 | /** @} */ |
1400 | |
1401 | /* |
1402 | - * Public definitions |
1403 | + * Public Definitions |
1404 | */ |
1405 | |
1406 | gearman_client_st *gearman_client_create(gearman_client_st *client) |
1407 | @@ -251,7 +247,7 @@ |
1408 | gearman_return_t gearman_client_add_server(gearman_client_st *client, |
1409 | const char *host, in_port_t port) |
1410 | { |
1411 | - if (gearman_con_add(client->gearman, NULL, host, port) == NULL) |
1412 | + if (gearman_add_con_args(client->gearman, NULL, host, port) == NULL) |
1413 | return GEARMAN_MEMORY_ALLOCATION_FAILURE; |
1414 | |
1415 | return GEARMAN_SUCCESS; |
1416 | @@ -265,12 +261,12 @@ |
1417 | |
1418 | void gearman_client_remove_servers(gearman_client_st *client) |
1419 | { |
1420 | - gearman_con_free_all(client->gearman); |
1421 | + gearman_free_all_cons(client->gearman); |
1422 | } |
1423 | |
1424 | gearman_return_t gearman_client_wait(gearman_client_st *client) |
1425 | { |
1426 | - return gearman_con_wait(client->gearman); |
1427 | + return gearman_wait(client->gearman); |
1428 | } |
1429 | |
1430 | void *gearman_client_do(gearman_client_st *client, const char *function_name, |
1431 | @@ -394,7 +390,7 @@ |
1432 | const void *workload, |
1433 | size_t workload_size) |
1434 | { |
1435 | - return gearman_con_echo(client->gearman, workload, workload_size); |
1436 | + return gearman_echo(client->gearman, workload, workload_size); |
1437 | } |
1438 | |
1439 | void gearman_task_free(gearman_task_st *task) |
1440 | @@ -402,8 +398,11 @@ |
1441 | if (task->options & GEARMAN_TASK_SEND_IN_USE) |
1442 | gearman_packet_free(&(task->send)); |
1443 | |
1444 | - if (task->context != NULL && task->client->task_context_free_fn != NULL) |
1445 | - (*(task->client->task_context_free_fn))(task, (void *)(task->context)); |
1446 | + if (task != &(task->client->do_task) && task->context != NULL && |
1447 | + task->client->task_context_free_fn != NULL) |
1448 | + { |
1449 | + task->client->task_context_free_fn(task, (void *)task->context); |
1450 | + } |
1451 | |
1452 | if (task->client->task_list == task) |
1453 | task->client->task_list= task->next; |
1454 | @@ -521,6 +520,9 @@ |
1455 | const char *job_handle, |
1456 | gearman_return_t *ret_ptr) |
1457 | { |
1458 | + const void *args[1]; |
1459 | + size_t args_size[1]; |
1460 | + |
1461 | task= _task_create(client, task); |
1462 | if (task == NULL) |
1463 | { |
1464 | @@ -531,10 +533,12 @@ |
1465 | task->context= context; |
1466 | snprintf(task->job_handle, GEARMAN_JOB_HANDLE_SIZE, "%s", job_handle); |
1467 | |
1468 | - *ret_ptr= gearman_packet_add(client->gearman, &(task->send), |
1469 | - GEARMAN_MAGIC_REQUEST, |
1470 | - GEARMAN_COMMAND_GET_STATUS, |
1471 | - (uint8_t *)job_handle, strlen(job_handle), NULL); |
1472 | + args[0]= job_handle; |
1473 | + args_size[0]= strlen(job_handle); |
1474 | + *ret_ptr= gearman_add_packet_args(client->gearman, &(task->send), |
1475 | + GEARMAN_MAGIC_REQUEST, |
1476 | + GEARMAN_COMMAND_GET_STATUS, |
1477 | + args, args_size, 1); |
1478 | if (*ret_ptr == GEARMAN_SUCCESS) |
1479 | { |
1480 | client->new_tasks++; |
1481 | @@ -636,10 +640,20 @@ |
1482 | return ret; |
1483 | } |
1484 | } |
1485 | + |
1486 | + if (client->new_tasks == 0) |
1487 | + { |
1488 | + ret= gearman_flush_all(client->gearman); |
1489 | + if (ret != GEARMAN_SUCCESS) |
1490 | + { |
1491 | + client->gearman->options= options; |
1492 | + return ret; |
1493 | + } |
1494 | + } |
1495 | } |
1496 | |
1497 | /* See if there are any connections ready for I/O. */ |
1498 | - while ((client->con= gearman_con_ready(client->gearman)) != NULL) |
1499 | + while ((client->con= gearman_ready(client->gearman)) != NULL) |
1500 | { |
1501 | if (client->con->revents & (POLLOUT | POLLERR | POLLHUP | POLLNVAL)) |
1502 | { |
1503 | @@ -738,7 +752,7 @@ |
1504 | } |
1505 | else if (client->con->packet.command == GEARMAN_COMMAND_ERROR) |
1506 | { |
1507 | - gearman_error_set(client->gearman, "gearman_client_run_tasks", |
1508 | + gearman_set_error(client->gearman, "gearman_client_run_tasks", |
1509 | "%s:%.*s", |
1510 | (char *)(client->con->packet.arg[0]), |
1511 | (int)(client->con->packet.arg_size[1]), |
1512 | @@ -800,7 +814,7 @@ |
1513 | } |
1514 | |
1515 | /* Wait for activity on one of the connections. */ |
1516 | - ret= gearman_con_wait(client->gearman); |
1517 | + ret= gearman_wait(client->gearman); |
1518 | if (ret != GEARMAN_SUCCESS && ret != GEARMAN_IO_WAIT) |
1519 | { |
1520 | client->state= GEARMAN_CLIENT_STATE_IDLE; |
1521 | @@ -812,7 +826,7 @@ |
1522 | break; |
1523 | |
1524 | default: |
1525 | - gearman_error_set(client->gearman, "gearman_client_run_tasks", |
1526 | + gearman_set_error(client->gearman, "gearman_client_run_tasks", |
1527 | "unknown state: %u", client->state); |
1528 | client->gearman->options= options; |
1529 | return GEARMAN_UNKNOWN_STATE; |
1530 | @@ -824,7 +838,7 @@ |
1531 | } |
1532 | |
1533 | /* |
1534 | - * Private definitions |
1535 | + * Static Definitions |
1536 | */ |
1537 | |
1538 | static gearman_client_st *_client_allocate(gearman_client_st *client) |
1539 | @@ -883,6 +897,8 @@ |
1540 | { |
1541 | uuid_t uuid; |
1542 | char uuid_string[37]; |
1543 | + const void *args[3]; |
1544 | + size_t args_size[3]; |
1545 | |
1546 | task= _task_create(client, task); |
1547 | if (task == NULL) |
1548 | @@ -900,12 +916,16 @@ |
1549 | unique= uuid_string; |
1550 | } |
1551 | |
1552 | - *ret_ptr= gearman_packet_add(client->gearman, &(task->send), |
1553 | - GEARMAN_MAGIC_REQUEST, command, |
1554 | - (uint8_t *)function_name, |
1555 | - (size_t)(strlen(function_name) + 1), |
1556 | - (uint8_t *)unique, (size_t)(strlen(unique) + 1), |
1557 | - workload, workload_size, NULL); |
1558 | + args[0]= function_name; |
1559 | + args_size[0]= (size_t)strlen(function_name) + 1; |
1560 | + args[1]= unique; |
1561 | + args_size[1]= (size_t)strlen(unique) + 1; |
1562 | + args[2]= workload; |
1563 | + args_size[2]= workload_size; |
1564 | + |
1565 | + *ret_ptr= gearman_add_packet_args(client->gearman, &(task->send), |
1566 | + GEARMAN_MAGIC_REQUEST, command, |
1567 | + args, args_size, 3); |
1568 | if (*ret_ptr == GEARMAN_SUCCESS) |
1569 | { |
1570 | client->new_tasks++; |
1571 | @@ -930,7 +950,8 @@ |
1572 | { |
1573 | client->new_tasks--; |
1574 | client->running_tasks--; |
1575 | - gearman_error_set(client->gearman, "_client_run_task", "no servers added"); |
1576 | + gearman_set_error(client->gearman, "_client_run_task", |
1577 | + "no servers added"); |
1578 | return GEARMAN_NO_SERVERS; |
1579 | } |
1580 | |
1581 | @@ -981,6 +1002,8 @@ |
1582 | break; |
1583 | } |
1584 | } |
1585 | + else |
1586 | + task->con= NULL; |
1587 | |
1588 | if (task->con == NULL) |
1589 | { |
1590 | @@ -1000,13 +1023,13 @@ |
1591 | { |
1592 | if (client->workload_fn == NULL) |
1593 | { |
1594 | - gearman_error_set(client->gearman, "_client_run_task", |
1595 | - "workload size > 0, but no data pointer or workload_fn was given"); |
1596 | + gearman_set_error(client->gearman, "_client_run_task", |
1597 | + "workload size > 0, but no data pointer or workload_fn was given"); |
1598 | return GEARMAN_NEED_WORKLOAD_FN; |
1599 | } |
1600 | |
1601 | case GEARMAN_TASK_STATE_WORKLOAD: |
1602 | - ret= (*(client->workload_fn))(task); |
1603 | + ret= client->workload_fn(task); |
1604 | if (ret != GEARMAN_SUCCESS) |
1605 | { |
1606 | task->state= GEARMAN_TASK_STATE_WORKLOAD; |
1607 | @@ -1028,7 +1051,7 @@ |
1608 | case GEARMAN_TASK_STATE_CREATED: |
1609 | if (client->created_fn != NULL) |
1610 | { |
1611 | - ret= (*(client->created_fn))(task); |
1612 | + ret= client->created_fn(task); |
1613 | if (ret != GEARMAN_SUCCESS) |
1614 | { |
1615 | task->state= GEARMAN_TASK_STATE_CREATED; |
1616 | @@ -1048,7 +1071,7 @@ |
1617 | case GEARMAN_TASK_STATE_DATA: |
1618 | if (client->data_fn != NULL) |
1619 | { |
1620 | - ret= (*(client->data_fn))(task); |
1621 | + ret= client->data_fn(task); |
1622 | if (ret != GEARMAN_SUCCESS) |
1623 | { |
1624 | task->state= GEARMAN_TASK_STATE_DATA; |
1625 | @@ -1061,7 +1084,7 @@ |
1626 | case GEARMAN_TASK_STATE_WARNING: |
1627 | if (client->warning_fn != NULL) |
1628 | { |
1629 | - ret= (*(client->warning_fn))(task); |
1630 | + ret= client->warning_fn(task); |
1631 | if (ret != GEARMAN_SUCCESS) |
1632 | { |
1633 | task->state= GEARMAN_TASK_STATE_WARNING; |
1634 | @@ -1098,7 +1121,7 @@ |
1635 | case GEARMAN_TASK_STATE_STATUS: |
1636 | if (client->status_fn != NULL) |
1637 | { |
1638 | - ret= (*(client->status_fn))(task); |
1639 | + ret= client->status_fn(task); |
1640 | if (ret != GEARMAN_SUCCESS) |
1641 | { |
1642 | task->state= GEARMAN_TASK_STATE_STATUS; |
1643 | @@ -1114,7 +1137,7 @@ |
1644 | case GEARMAN_TASK_STATE_COMPLETE: |
1645 | if (client->complete_fn != NULL) |
1646 | { |
1647 | - ret= (*(client->complete_fn))(task); |
1648 | + ret= client->complete_fn(task); |
1649 | if (ret != GEARMAN_SUCCESS) |
1650 | { |
1651 | task->state= GEARMAN_TASK_STATE_COMPLETE; |
1652 | @@ -1129,7 +1152,7 @@ |
1653 | case GEARMAN_TASK_STATE_EXCEPTION: |
1654 | if (client->exception_fn != NULL) |
1655 | { |
1656 | - ret= (*(client->exception_fn))(task); |
1657 | + ret= client->exception_fn(task); |
1658 | if (ret != GEARMAN_SUCCESS) |
1659 | { |
1660 | task->state= GEARMAN_TASK_STATE_EXCEPTION; |
1661 | @@ -1142,7 +1165,7 @@ |
1662 | case GEARMAN_TASK_STATE_FAIL: |
1663 | if (client->fail_fn != NULL) |
1664 | { |
1665 | - ret= (*(client->fail_fn))(task); |
1666 | + ret= client->fail_fn(task); |
1667 | if (ret != GEARMAN_SUCCESS) |
1668 | { |
1669 | task->state= GEARMAN_TASK_STATE_FAIL; |
1670 | @@ -1160,7 +1183,7 @@ |
1671 | break; |
1672 | |
1673 | default: |
1674 | - gearman_error_set(client->gearman, "_client_run_task", "unknown state: %u", |
1675 | + gearman_set_error(client->gearman, "_client_run_task", "unknown state: %u", |
1676 | task->state); |
1677 | return GEARMAN_UNKNOWN_STATE; |
1678 | } |
1679 | @@ -1311,7 +1334,7 @@ |
1680 | task= malloc(sizeof(gearman_task_st)); |
1681 | if (task == NULL) |
1682 | { |
1683 | - gearman_error_set(client->gearman, "_task_create", "malloc"); |
1684 | + gearman_set_error(client->gearman, "_task_create", "malloc"); |
1685 | return NULL; |
1686 | } |
1687 | |
1688 | |
1689 | === modified file 'libgearman/client.h' |
1690 | --- libgearman/client.h 2009-10-02 01:13:31 +0000 |
1691 | +++ libgearman/client.h 2009-11-04 22:14:14 +0000 |
1692 | @@ -8,7 +8,7 @@ |
1693 | |
1694 | /** |
1695 | * @file |
1696 | - * @brief Client declarations |
1697 | + * @brief Client Declarations |
1698 | */ |
1699 | |
1700 | #ifndef __GEARMAN_CLIENT_H__ |
1701 | @@ -19,7 +19,8 @@ |
1702 | #endif |
1703 | |
1704 | /** |
1705 | - * @addtogroup gearman_client Client Interface |
1706 | + * @addtogroup gearman_client Client Declarations |
1707 | + * |
1708 | * This is the interface gearman clients should use. You can run tasks one at a |
1709 | * time or concurrently. |
1710 | * |
1711 | @@ -227,6 +228,8 @@ |
1712 | GEARMAN_API |
1713 | gearman_return_t gearman_client_wait(gearman_client_st *client); |
1714 | |
1715 | +/** @} */ |
1716 | + |
1717 | /** |
1718 | * @addtogroup gearman_client_single Single Task Interface |
1719 | * @ingroup gearman_client |
1720 | @@ -654,8 +657,6 @@ |
1721 | |
1722 | /** @} */ |
1723 | |
1724 | -/** @} */ |
1725 | - |
1726 | #ifdef __cplusplus |
1727 | } |
1728 | #endif |
1729 | |
1730 | === modified file 'libgearman/common.h' |
1731 | --- libgearman/common.h 2009-09-26 16:54:44 +0000 |
1732 | +++ libgearman/common.h 2009-11-04 22:14:14 +0000 |
1733 | @@ -8,7 +8,7 @@ |
1734 | |
1735 | /** |
1736 | * @file |
1737 | - * @brief System include files |
1738 | + * @brief System Include Files |
1739 | */ |
1740 | |
1741 | #ifndef __GEARMAN_COMMON_H__ |
1742 | @@ -75,34 +75,6 @@ |
1743 | # endif |
1744 | #endif |
1745 | |
1746 | -#ifdef __cplusplus |
1747 | -extern "C" { |
1748 | -#endif |
1749 | - |
1750 | -/** |
1751 | - * Utility function used for error logging |
1752 | - * @ingroup gearman_private |
1753 | - * |
1754 | - * @param[in] gearman Structure previously initialized with gearman_create() or |
1755 | - * gearman_clone(). |
1756 | - * @param[in] function Name of function the error happened in. |
1757 | - * @param[in] format Format and variable argument list of message. |
1758 | - */ |
1759 | -GEARMAN_LOCAL |
1760 | -void gearman_error_set(gearman_st *gearman, const char *function, |
1761 | - const char *format, ...); |
1762 | - |
1763 | -/** |
1764 | - * Utility function used for parsing server lists. |
1765 | - * @ingroup gearman_private |
1766 | - */ |
1767 | -GEARMAN_LOCAL |
1768 | -gearman_return_t gearman_parse_servers(const char *servers, |
1769 | - gearman_parse_server_fn *callback, |
1770 | - const void *context); |
1771 | - |
1772 | -#ifdef __cplusplus |
1773 | -} |
1774 | -#endif |
1775 | +#include "gearman_local.h" |
1776 | |
1777 | #endif /* __GEARMAN_COMMON_H__ */ |
1778 | |
1779 | === modified file 'libgearman/conn.c' |
1780 | --- libgearman/conn.c 2009-09-28 17:47:34 +0000 |
1781 | +++ libgearman/conn.c 2009-11-04 22:14:14 +0000 |
1782 | @@ -8,17 +8,13 @@ |
1783 | |
1784 | /** |
1785 | * @file |
1786 | - * @brief Connection definitions |
1787 | + * @brief Connection Definitions |
1788 | */ |
1789 | |
1790 | #include "common.h" |
1791 | |
1792 | -/* |
1793 | - * Private declarations |
1794 | - */ |
1795 | - |
1796 | /** |
1797 | - * @addtogroup gearman_con_private Private Connection Functions |
1798 | + * @addtogroup gearman_con_static Static Connection Declarations |
1799 | * @ingroup gearman_con |
1800 | * @{ |
1801 | */ |
1802 | @@ -31,7 +27,7 @@ |
1803 | /** @} */ |
1804 | |
1805 | /* |
1806 | - * Public definitions |
1807 | + * Public Definitions |
1808 | */ |
1809 | |
1810 | void gearman_con_set_host(gearman_con_st *con, const char *host) |
1811 | @@ -156,19 +152,18 @@ |
1812 | case GEARMAN_CON_SEND_STATE_NONE: |
1813 | if (!(packet->options & GEARMAN_PACKET_COMPLETE)) |
1814 | { |
1815 | - gearman_error_set(con->gearman, "gearman_con_send", "packet not complete"); |
1816 | + gearman_set_error(con->gearman, "gearman_con_send", |
1817 | + "packet not complete"); |
1818 | return GEARMAN_INVALID_PACKET; |
1819 | } |
1820 | |
1821 | /* Pack first part of packet, which is everything but the payload. */ |
1822 | while (1) |
1823 | { |
1824 | - send_size= (*con->packet_pack_fn)(packet, con, |
1825 | - con->send_buffer + |
1826 | - con->send_buffer_size, |
1827 | - GEARMAN_SEND_BUFFER_SIZE - |
1828 | - con->send_buffer_size, |
1829 | - &ret); |
1830 | + send_size= con->packet_pack_fn(packet, con, |
1831 | + con->send_buffer + con->send_buffer_size, |
1832 | + GEARMAN_SEND_BUFFER_SIZE - |
1833 | + con->send_buffer_size, &ret); |
1834 | if (ret == GEARMAN_SUCCESS) |
1835 | { |
1836 | con->send_buffer_size+= send_size; |
1837 | @@ -182,7 +177,7 @@ |
1838 | /* We were asked to flush when the buffer is already flushed! */ |
1839 | if (con->send_buffer_size == 0) |
1840 | { |
1841 | - gearman_error_set(con->gearman, "gearman_con_send", |
1842 | + gearman_set_error(con->gearman, "gearman_con_send", |
1843 | "send buffer too small (%u)", |
1844 | GEARMAN_SEND_BUFFER_SIZE); |
1845 | return GEARMAN_SEND_BUFFER_TOO_SMALL; |
1846 | @@ -264,7 +259,7 @@ |
1847 | return ret; |
1848 | |
1849 | default: |
1850 | - gearman_error_set(con->gearman, "gearman_con_send", "unknown state: %u", |
1851 | + gearman_set_error(con->gearman, "gearman_con_send", "unknown state: %u", |
1852 | con->send_state); |
1853 | return GEARMAN_UNKNOWN_STATE; |
1854 | } |
1855 | @@ -290,13 +285,13 @@ |
1856 | { |
1857 | if (con->send_state != GEARMAN_CON_SEND_STATE_FLUSH_DATA) |
1858 | { |
1859 | - gearman_error_set(con->gearman, "gearman_con_send_data", "not flushing"); |
1860 | + gearman_set_error(con->gearman, "gearman_con_send_data", "not flushing"); |
1861 | return GEARMAN_NOT_FLUSHING; |
1862 | } |
1863 | |
1864 | if (data_size > (con->send_data_size - con->send_data_offset)) |
1865 | { |
1866 | - gearman_error_set(con->gearman, "gearman_con_send_data", "data too large"); |
1867 | + gearman_set_error(con->gearman, "gearman_con_send_data", "data too large"); |
1868 | return GEARMAN_DATA_TOO_LARGE; |
1869 | } |
1870 | |
1871 | @@ -336,7 +331,7 @@ |
1872 | ret= getaddrinfo(con->host, port_str, &ai, &(con->addrinfo)); |
1873 | if (ret != 0) |
1874 | { |
1875 | - gearman_error_set(con->gearman, "gearman_con_flush", "getaddrinfo:%s", |
1876 | + gearman_set_error(con->gearman, "gearman_con_flush", "getaddrinfo:%s", |
1877 | gai_strerror(ret)); |
1878 | return GEARMAN_GETADDRINFO; |
1879 | } |
1880 | @@ -350,7 +345,7 @@ |
1881 | if (con->addrinfo_next == NULL) |
1882 | { |
1883 | con->state= GEARMAN_CON_STATE_ADDRINFO; |
1884 | - gearman_error_set(con->gearman, "gearman_con_flush", |
1885 | + gearman_set_error(con->gearman, "gearman_con_flush", |
1886 | "could not connect"); |
1887 | return GEARMAN_COULD_NOT_CONNECT; |
1888 | } |
1889 | @@ -361,7 +356,8 @@ |
1890 | if (con->fd == -1) |
1891 | { |
1892 | con->state= GEARMAN_CON_STATE_ADDRINFO; |
1893 | - gearman_error_set(con->gearman, "gearman_con_flush", "socket:%d", errno); |
1894 | + gearman_set_error(con->gearman, "gearman_con_flush", "socket:%d", |
1895 | + errno); |
1896 | con->gearman->last_errno= errno; |
1897 | return GEARMAN_ERRNO; |
1898 | } |
1899 | @@ -401,7 +397,8 @@ |
1900 | break; |
1901 | } |
1902 | |
1903 | - gearman_error_set(con->gearman, "gearman_con_flush", "connect:%d", errno); |
1904 | + gearman_set_error(con->gearman, "gearman_con_flush", "connect:%d", |
1905 | + errno); |
1906 | con->gearman->last_errno= errno; |
1907 | gearman_con_close(con); |
1908 | return GEARMAN_ERRNO; |
1909 | @@ -435,7 +432,7 @@ |
1910 | return GEARMAN_IO_WAIT; |
1911 | } |
1912 | |
1913 | - gret= gearman_con_wait(con->gearman); |
1914 | + gret= gearman_wait(con->gearman); |
1915 | if (gret != GEARMAN_SUCCESS) |
1916 | return gret; |
1917 | } |
1918 | @@ -451,7 +448,7 @@ |
1919 | { |
1920 | if (!(con->options & GEARMAN_CON_IGNORE_LOST_CONNECTION)) |
1921 | { |
1922 | - gearman_error_set(con->gearman, "gearman_con_flush", |
1923 | + gearman_set_error(con->gearman, "gearman_con_flush", |
1924 | "lost connection to server (EOF)"); |
1925 | } |
1926 | gearman_con_close(con); |
1927 | @@ -468,7 +465,7 @@ |
1928 | if (con->gearman->options & GEARMAN_NON_BLOCKING) |
1929 | return GEARMAN_IO_WAIT; |
1930 | |
1931 | - gret= gearman_con_wait(con->gearman); |
1932 | + gret= gearman_wait(con->gearman); |
1933 | if (gret != GEARMAN_SUCCESS) |
1934 | return gret; |
1935 | |
1936 | @@ -480,14 +477,15 @@ |
1937 | { |
1938 | if (!(con->options & GEARMAN_CON_IGNORE_LOST_CONNECTION)) |
1939 | { |
1940 | - gearman_error_set(con->gearman, "gearman_con_flush", |
1941 | + gearman_set_error(con->gearman, "gearman_con_flush", |
1942 | "lost connection to server (%d)", errno); |
1943 | } |
1944 | gearman_con_close(con); |
1945 | return GEARMAN_LOST_CONNECTION; |
1946 | } |
1947 | |
1948 | - gearman_error_set(con->gearman, "gearman_con_flush", "write:%d", errno); |
1949 | + gearman_set_error(con->gearman, "gearman_con_flush", "write:%d", |
1950 | + errno); |
1951 | con->gearman->last_errno= errno; |
1952 | gearman_con_close(con); |
1953 | return GEARMAN_ERRNO; |
1954 | @@ -518,7 +516,8 @@ |
1955 | return GEARMAN_SUCCESS; |
1956 | |
1957 | default: |
1958 | - gearman_error_set(con->gearman, "gearman_con_flush", "unknown state: %u", con->state); |
1959 | + gearman_set_error(con->gearman, "gearman_con_flush", "unknown state: %u", |
1960 | + con->state); |
1961 | |
1962 | return GEARMAN_UNKNOWN_STATE; |
1963 | } |
1964 | @@ -536,12 +535,12 @@ |
1965 | case GEARMAN_CON_RECV_STATE_NONE: |
1966 | if (con->state != GEARMAN_CON_STATE_CONNECTED) |
1967 | { |
1968 | - gearman_error_set(con->gearman, "gearman_con_recv", "not connected"); |
1969 | + gearman_set_error(con->gearman, "gearman_con_recv", "not connected"); |
1970 | *ret_ptr= GEARMAN_NOT_CONNECTED; |
1971 | return NULL; |
1972 | } |
1973 | |
1974 | - con->recv_packet= gearman_packet_create(con->gearman, packet); |
1975 | + con->recv_packet= gearman_add_packet(con->gearman, packet); |
1976 | if (con->recv_packet == NULL) |
1977 | { |
1978 | *ret_ptr= GEARMAN_MEMORY_ALLOCATION_FAILURE; |
1979 | @@ -555,9 +554,9 @@ |
1980 | { |
1981 | if (con->recv_buffer_size > 0) |
1982 | { |
1983 | - recv_size= (*con->packet_unpack_fn)(con->recv_packet, con, |
1984 | - con->recv_buffer_ptr, |
1985 | - con->recv_buffer_size, ret_ptr); |
1986 | + recv_size= con->packet_unpack_fn(con->recv_packet, con, |
1987 | + con->recv_buffer_ptr, |
1988 | + con->recv_buffer_size, ret_ptr); |
1989 | con->recv_buffer_ptr+= recv_size; |
1990 | con->recv_buffer_size-= recv_size; |
1991 | if (*ret_ptr == GEARMAN_SUCCESS) |
1992 | @@ -602,7 +601,7 @@ |
1993 | else |
1994 | { |
1995 | packet->data= packet->gearman->workload_malloc_fn(packet->data_size, |
1996 | - (void *)(packet->gearman->workload_malloc_context)); |
1997 | + (void *)packet->gearman->workload_malloc_context); |
1998 | } |
1999 | if (packet->data == NULL) |
2000 | { |
2001 | @@ -630,7 +629,7 @@ |
2002 | break; |
2003 | |
2004 | default: |
2005 | - gearman_error_set(con->gearman, "gearman_con_recv", "unknown state: %u", |
2006 | + gearman_set_error(con->gearman, "gearman_con_recv", "unknown state: %u", |
2007 | con->recv_state); |
2008 | *ret_ptr= GEARMAN_UNKNOWN_STATE; |
2009 | return NULL; |
2010 | @@ -702,7 +701,7 @@ |
2011 | { |
2012 | if (!(con->options & GEARMAN_CON_IGNORE_LOST_CONNECTION)) |
2013 | { |
2014 | - gearman_error_set(con->gearman, "gearman_con_read", |
2015 | + gearman_set_error(con->gearman, "gearman_con_read", |
2016 | "lost connection to server (EOF)"); |
2017 | } |
2018 | gearman_con_close(con); |
2019 | @@ -723,7 +722,7 @@ |
2020 | return 0; |
2021 | } |
2022 | |
2023 | - *ret_ptr= gearman_con_wait(con->gearman); |
2024 | + *ret_ptr= gearman_wait(con->gearman); |
2025 | if (*ret_ptr != GEARMAN_SUCCESS) |
2026 | return 0; |
2027 | |
2028 | @@ -735,14 +734,14 @@ |
2029 | { |
2030 | if (!(con->options & GEARMAN_CON_IGNORE_LOST_CONNECTION)) |
2031 | { |
2032 | - gearman_error_set(con->gearman, "gearman_con_read", |
2033 | + gearman_set_error(con->gearman, "gearman_con_read", |
2034 | "lost connection to server (%d)", errno); |
2035 | } |
2036 | *ret_ptr= GEARMAN_LOST_CONNECTION; |
2037 | } |
2038 | else |
2039 | { |
2040 | - gearman_error_set(con->gearman, "gearman_con_read", "read:%d", errno); |
2041 | + gearman_set_error(con->gearman, "gearman_con_read", "read:%d", errno); |
2042 | con->gearman->last_errno= errno; |
2043 | *ret_ptr= GEARMAN_ERRNO; |
2044 | } |
2045 | @@ -769,7 +768,7 @@ |
2046 | |
2047 | if (con->gearman->event_watch_fn != NULL) |
2048 | { |
2049 | - ret= (con->gearman->event_watch_fn)(con, con->events, |
2050 | + ret= con->gearman->event_watch_fn(con, con->events, |
2051 | (void *)con->gearman->event_watch_context); |
2052 | if (ret != GEARMAN_SUCCESS) |
2053 | { |
2054 | @@ -797,7 +796,7 @@ |
2055 | if (revents & POLLOUT && !(con->events & POLLOUT) && |
2056 | con->gearman->event_watch_fn != NULL) |
2057 | { |
2058 | - ret= (con->gearman->event_watch_fn)(con, con->events, |
2059 | + ret= con->gearman->event_watch_fn(con, con->events, |
2060 | (void *)con->gearman->event_watch_context); |
2061 | if (ret != GEARMAN_SUCCESS) |
2062 | { |
2063 | @@ -840,7 +839,7 @@ |
2064 | } |
2065 | |
2066 | /* |
2067 | - * Private definitions |
2068 | + * Static Definitions |
2069 | */ |
2070 | |
2071 | static gearman_return_t _con_setsockopt(gearman_con_st *con) |
2072 | @@ -852,9 +851,9 @@ |
2073 | ret= 1; |
2074 | ret= setsockopt(con->fd, IPPROTO_TCP, TCP_NODELAY, &ret, |
2075 | (socklen_t)sizeof(int)); |
2076 | - if (ret == -1) |
2077 | + if (ret == -1 && errno != EOPNOTSUPP) |
2078 | { |
2079 | - gearman_error_set(con->gearman, "_con_setsockopt", |
2080 | + gearman_set_error(con->gearman, "_con_setsockopt", |
2081 | "setsockopt:TCP_NODELAY:%d", errno); |
2082 | return GEARMAN_ERRNO; |
2083 | } |
2084 | @@ -865,7 +864,7 @@ |
2085 | (socklen_t)sizeof(struct linger)); |
2086 | if (ret == -1) |
2087 | { |
2088 | - gearman_error_set(con->gearman, "_con_setsockopt", |
2089 | + gearman_set_error(con->gearman, "_con_setsockopt", |
2090 | "setsockopt:SO_LINGER:%d", errno); |
2091 | return GEARMAN_ERRNO; |
2092 | } |
2093 | @@ -876,7 +875,7 @@ |
2094 | (socklen_t)sizeof(struct timeval)); |
2095 | if (ret == -1 && errno != ENOPROTOOPT) |
2096 | { |
2097 | - gearman_error_set(con->gearman, "_con_setsockopt", |
2098 | + gearman_set_error(con->gearman, "_con_setsockopt", |
2099 | "setsockopt:SO_SNDTIMEO:%d", errno); |
2100 | return GEARMAN_ERRNO; |
2101 | } |
2102 | @@ -885,7 +884,7 @@ |
2103 | (socklen_t)sizeof(struct timeval)); |
2104 | if (ret == -1 && errno != ENOPROTOOPT) |
2105 | { |
2106 | - gearman_error_set(con->gearman, "_con_setsockopt", |
2107 | + gearman_set_error(con->gearman, "_con_setsockopt", |
2108 | "setsockopt:SO_RCVTIMEO:%d", errno); |
2109 | return GEARMAN_ERRNO; |
2110 | } |
2111 | @@ -894,7 +893,7 @@ |
2112 | ret= setsockopt(con->fd, SOL_SOCKET, SO_SNDBUF, &ret, (socklen_t)sizeof(int)); |
2113 | if (ret == -1) |
2114 | { |
2115 | - gearman_error_set(con->gearman, "_con_setsockopt", |
2116 | + gearman_set_error(con->gearman, "_con_setsockopt", |
2117 | "setsockopt:SO_SNDBUF:%d", errno); |
2118 | return GEARMAN_ERRNO; |
2119 | } |
2120 | @@ -903,7 +902,7 @@ |
2121 | ret= setsockopt(con->fd, SOL_SOCKET, SO_RCVBUF, &ret, (socklen_t)sizeof(int)); |
2122 | if (ret == -1) |
2123 | { |
2124 | - gearman_error_set(con->gearman, "_con_setsockopt", |
2125 | + gearman_set_error(con->gearman, "_con_setsockopt", |
2126 | "setsockopt:SO_RCVBUF:%d", errno); |
2127 | return GEARMAN_ERRNO; |
2128 | } |
2129 | @@ -911,16 +910,16 @@ |
2130 | ret= fcntl(con->fd, F_GETFL, 0); |
2131 | if (ret == -1) |
2132 | { |
2133 | - gearman_error_set(con->gearman, "_con_setsockopt", "fcntl:F_GETFL:%d", errno); |
2134 | - |
2135 | + gearman_set_error(con->gearman, "_con_setsockopt", "fcntl:F_GETFL:%d", |
2136 | + errno); |
2137 | return GEARMAN_ERRNO; |
2138 | } |
2139 | |
2140 | ret= fcntl(con->fd, F_SETFL, ret | O_NONBLOCK); |
2141 | if (ret == -1) |
2142 | { |
2143 | - gearman_error_set(con->gearman, "_con_setsockopt", "fcntl:F_SETFL:%d", errno); |
2144 | - |
2145 | + gearman_set_error(con->gearman, "_con_setsockopt", "fcntl:F_SETFL:%d", |
2146 | + errno); |
2147 | return GEARMAN_ERRNO; |
2148 | } |
2149 | |
2150 | |
2151 | === modified file 'libgearman/conn.h' |
2152 | --- libgearman/conn.h 2009-09-24 23:43:15 +0000 |
2153 | +++ libgearman/conn.h 2009-11-04 22:14:14 +0000 |
2154 | @@ -8,7 +8,7 @@ |
2155 | |
2156 | /** |
2157 | * @file |
2158 | - * @brief Connection declarations |
2159 | + * @brief Connection Declarations |
2160 | */ |
2161 | |
2162 | #ifndef __GEARMAN_CON_H__ |
2163 | @@ -19,11 +19,14 @@ |
2164 | #endif |
2165 | |
2166 | /** |
2167 | - * @addtogroup gearman_con Connection Handling |
2168 | + * @addtogroup gearman_con Connection Declarations |
2169 | + * @ingroup gearman |
2170 | + * |
2171 | * This is a low level interface for gearman connections. This is used |
2172 | * internally by both client and worker interfaces, so you probably want to |
2173 | * look there first. This is usually used to write lower level clients, workers, |
2174 | * proxies, or your own server. |
2175 | + * |
2176 | * @{ |
2177 | */ |
2178 | |
2179 | |
2180 | === modified file 'libgearman/constants.h' |
2181 | --- libgearman/constants.h 2009-09-28 17:47:34 +0000 |
2182 | +++ libgearman/constants.h 2009-11-04 22:14:14 +0000 |
2183 | @@ -19,7 +19,10 @@ |
2184 | #endif |
2185 | |
2186 | /** |
2187 | - * @addtogroup gearman_constants Gearman Constants |
2188 | + * @addtogroup gearman_constants Constants |
2189 | + * @ingroup gearman |
2190 | + * @ingroup gearman_client |
2191 | + * @ingroup gearman_worker |
2192 | * @{ |
2193 | */ |
2194 | |
2195 | @@ -40,17 +43,6 @@ |
2196 | #define GEARMAN_RECV_BUFFER_SIZE 8192 |
2197 | #define GEARMAN_WORKER_WAIT_TIMEOUT (10 * 1000) /* Milliseconds */ |
2198 | |
2199 | -/* Types. */ |
2200 | -typedef struct gearman_st gearman_st; |
2201 | -typedef struct gearman_con_st gearman_con_st; |
2202 | -typedef struct gearman_packet_st gearman_packet_st; |
2203 | -typedef struct gearman_command_info_st gearman_command_info_st; |
2204 | -typedef struct gearman_task_st gearman_task_st; |
2205 | -typedef struct gearman_client_st gearman_client_st; |
2206 | -typedef struct gearman_job_st gearman_job_st; |
2207 | -typedef struct gearman_worker_st gearman_worker_st; |
2208 | -typedef struct gearman_worker_function_st gearman_worker_function_st; |
2209 | - |
2210 | /** |
2211 | * Return codes. |
2212 | */ |
2213 | @@ -111,6 +103,7 @@ |
2214 | */ |
2215 | typedef enum |
2216 | { |
2217 | + GEARMAN_VERBOSE_NEVER, |
2218 | GEARMAN_VERBOSE_FATAL, |
2219 | GEARMAN_VERBOSE_ERROR, |
2220 | GEARMAN_VERBOSE_INFO, |
2221 | @@ -386,10 +379,24 @@ |
2222 | } gearman_worker_work_state_t; |
2223 | |
2224 | /** |
2225 | - * @addtogroup gearman_constants Gearman Constants |
2226 | + * @addtogroup gearman_types Types |
2227 | + * @ingroup gearman |
2228 | + * @ingroup gearman_client |
2229 | + * @ingroup gearman_worker |
2230 | * @{ |
2231 | */ |
2232 | |
2233 | +/* Types. */ |
2234 | +typedef struct gearman_st gearman_st; |
2235 | +typedef struct gearman_con_st gearman_con_st; |
2236 | +typedef struct gearman_packet_st gearman_packet_st; |
2237 | +typedef struct gearman_command_info_st gearman_command_info_st; |
2238 | +typedef struct gearman_task_st gearman_task_st; |
2239 | +typedef struct gearman_client_st gearman_client_st; |
2240 | +typedef struct gearman_job_st gearman_job_st; |
2241 | +typedef struct gearman_worker_st gearman_worker_st; |
2242 | +typedef struct gearman_worker_function_st gearman_worker_function_st; |
2243 | + |
2244 | /* Function types. */ |
2245 | typedef gearman_return_t (gearman_workload_fn)(gearman_task_st *task); |
2246 | typedef gearman_return_t (gearman_created_fn)(gearman_task_st *task); |
2247 | |
2248 | === modified file 'libgearman/gearman.c' |
2249 | --- libgearman/gearman.c 2009-09-28 17:47:34 +0000 |
2250 | +++ libgearman/gearman.c 2009-11-04 22:14:14 +0000 |
2251 | @@ -8,17 +8,13 @@ |
2252 | |
2253 | /** |
2254 | * @file |
2255 | - * @brief Gearman core definitions |
2256 | + * @brief Gearman Definitions |
2257 | */ |
2258 | |
2259 | #include "common.h" |
2260 | |
2261 | -/* |
2262 | - * Private declarations |
2263 | - */ |
2264 | - |
2265 | /** |
2266 | - * @addtogroup gearman_private Private Functions |
2267 | + * @addtogroup gearman_static Static Gearman Declarations |
2268 | * @ingroup gearman |
2269 | * @{ |
2270 | */ |
2271 | @@ -28,6 +24,7 @@ |
2272 | */ |
2273 | static const char *_verbose_name[GEARMAN_VERBOSE_MAX]= |
2274 | { |
2275 | + "NEVER", |
2276 | "FATAL", |
2277 | "ERROR", |
2278 | "INFO", |
2279 | @@ -38,7 +35,7 @@ |
2280 | /** @} */ |
2281 | |
2282 | /* |
2283 | - * Public definitions |
2284 | + * Public Definitions |
2285 | */ |
2286 | |
2287 | const char *gearman_version(void) |
2288 | @@ -108,7 +105,7 @@ |
2289 | |
2290 | for (con= from->con_list; con != NULL; con= con->next) |
2291 | { |
2292 | - if (gearman_con_clone(gearman, NULL, con) == NULL) |
2293 | + if (gearman_clone_con(gearman, NULL, con) == NULL) |
2294 | { |
2295 | gearman_free(gearman); |
2296 | return NULL; |
2297 | @@ -123,8 +120,8 @@ |
2298 | |
2299 | void gearman_free(gearman_st *gearman) |
2300 | { |
2301 | - gearman_con_free_all(gearman); |
2302 | - gearman_packet_free_all(gearman); |
2303 | + gearman_free_all_cons(gearman); |
2304 | + gearman_free_all_packets(gearman); |
2305 | |
2306 | if (gearman->pfds != NULL) |
2307 | free(gearman->pfds); |
2308 | @@ -209,14 +206,14 @@ |
2309 | * Connection related functions. |
2310 | */ |
2311 | |
2312 | -gearman_con_st *gearman_con_create(gearman_st *gearman, gearman_con_st *con) |
2313 | +gearman_con_st *gearman_add_con(gearman_st *gearman, gearman_con_st *con) |
2314 | { |
2315 | if (con == NULL) |
2316 | { |
2317 | con= malloc(sizeof(gearman_con_st)); |
2318 | if (con == NULL) |
2319 | { |
2320 | - gearman_error_set(gearman, "gearman_con_create", "malloc"); |
2321 | + gearman_set_error(gearman, "gearman_add_con", "malloc"); |
2322 | return NULL; |
2323 | } |
2324 | |
2325 | @@ -264,10 +261,10 @@ |
2326 | return con; |
2327 | } |
2328 | |
2329 | -gearman_con_st *gearman_con_add(gearman_st *gearman, gearman_con_st *con, |
2330 | - const char *host, in_port_t port) |
2331 | +gearman_con_st *gearman_add_con_args(gearman_st *gearman, gearman_con_st *con, |
2332 | + const char *host, in_port_t port) |
2333 | { |
2334 | - con= gearman_con_create(gearman, con); |
2335 | + con= gearman_add_con(gearman, con); |
2336 | if (con == NULL) |
2337 | return NULL; |
2338 | |
2339 | @@ -277,10 +274,10 @@ |
2340 | return con; |
2341 | } |
2342 | |
2343 | -gearman_con_st *gearman_con_clone(gearman_st *gearman, gearman_con_st *con, |
2344 | +gearman_con_st *gearman_clone_con(gearman_st *gearman, gearman_con_st *con, |
2345 | const gearman_con_st *from) |
2346 | { |
2347 | - con= gearman_con_create(gearman, con); |
2348 | + con= gearman_add_con(gearman, con); |
2349 | if (con == NULL) |
2350 | return NULL; |
2351 | |
2352 | @@ -300,7 +297,7 @@ |
2353 | gearman_con_reset_addrinfo(con); |
2354 | |
2355 | if (con->protocol_context != NULL && con->protocol_context_free_fn != NULL) |
2356 | - (*con->protocol_context_free_fn)(con, (void *)con->protocol_context); |
2357 | + con->protocol_context_free_fn(con, (void *)con->protocol_context); |
2358 | |
2359 | if (con->gearman->con_list == con) |
2360 | con->gearman->con_list= con->next; |
2361 | @@ -317,13 +314,13 @@ |
2362 | free(con); |
2363 | } |
2364 | |
2365 | -void gearman_con_free_all(gearman_st *gearman) |
2366 | +void gearman_free_all_cons(gearman_st *gearman) |
2367 | { |
2368 | while (gearman->con_list != NULL) |
2369 | gearman_con_free(gearman->con_list); |
2370 | } |
2371 | |
2372 | -gearman_return_t gearman_con_flush_all(gearman_st *gearman) |
2373 | +gearman_return_t gearman_flush_all(gearman_st *gearman) |
2374 | { |
2375 | gearman_con_st *con; |
2376 | gearman_return_t ret; |
2377 | @@ -341,8 +338,8 @@ |
2378 | return GEARMAN_SUCCESS; |
2379 | } |
2380 | |
2381 | -gearman_return_t gearman_con_send_all(gearman_st *gearman, |
2382 | - const gearman_packet_st *packet) |
2383 | +gearman_return_t gearman_send_all(gearman_st *gearman, |
2384 | + const gearman_packet_st *packet) |
2385 | { |
2386 | gearman_return_t ret; |
2387 | gearman_con_st *con; |
2388 | @@ -371,7 +368,7 @@ |
2389 | |
2390 | while (gearman->sending != 0) |
2391 | { |
2392 | - while ((con= gearman_con_ready(gearman)) != NULL) |
2393 | + while ((con= gearman_ready(gearman)) != NULL) |
2394 | { |
2395 | ret= gearman_con_send(con, packet, true); |
2396 | if (ret != GEARMAN_SUCCESS) |
2397 | @@ -397,7 +394,7 @@ |
2398 | return GEARMAN_IO_WAIT; |
2399 | } |
2400 | |
2401 | - ret= gearman_con_wait(gearman); |
2402 | + ret= gearman_wait(gearman); |
2403 | if (ret != GEARMAN_SUCCESS) |
2404 | { |
2405 | gearman->options= options; |
2406 | @@ -409,7 +406,7 @@ |
2407 | return GEARMAN_SUCCESS; |
2408 | } |
2409 | |
2410 | -gearman_return_t gearman_con_wait(gearman_st *gearman) |
2411 | +gearman_return_t gearman_wait(gearman_st *gearman) |
2412 | { |
2413 | gearman_con_st *con; |
2414 | struct pollfd *pfds; |
2415 | @@ -422,7 +419,7 @@ |
2416 | pfds= realloc(gearman->pfds, gearman->con_count * sizeof(struct pollfd)); |
2417 | if (pfds == NULL) |
2418 | { |
2419 | - gearman_error_set(gearman, "gearman_con_wait", "realloc"); |
2420 | + gearman_set_error(gearman, "gearman_wait", "realloc"); |
2421 | return GEARMAN_MEMORY_ALLOCATION_FAILURE; |
2422 | } |
2423 | |
2424 | @@ -446,8 +443,7 @@ |
2425 | |
2426 | if (x == 0) |
2427 | { |
2428 | - gearman_error_set(gearman, "gearman_con_wait", |
2429 | - "no active file descriptors"); |
2430 | + gearman_set_error(gearman, "gearman_wait", "no active file descriptors"); |
2431 | return GEARMAN_NO_ACTIVE_FDS; |
2432 | } |
2433 | |
2434 | @@ -459,7 +455,7 @@ |
2435 | if (errno == EINTR) |
2436 | continue; |
2437 | |
2438 | - gearman_error_set(gearman, "gearman_con_wait", "poll:%d", errno); |
2439 | + gearman_set_error(gearman, "gearman_wait", "poll:%d", errno); |
2440 | gearman->last_errno= errno; |
2441 | return GEARMAN_ERRNO; |
2442 | } |
2443 | @@ -469,7 +465,7 @@ |
2444 | |
2445 | if (ret == 0) |
2446 | { |
2447 | - gearman_error_set(gearman, "gearman_con_wait", "timeout reached"); |
2448 | + gearman_set_error(gearman, "gearman_wait", "timeout reached"); |
2449 | return GEARMAN_TIMEOUT; |
2450 | } |
2451 | |
2452 | @@ -489,7 +485,7 @@ |
2453 | return GEARMAN_SUCCESS; |
2454 | } |
2455 | |
2456 | -gearman_con_st *gearman_con_ready(gearman_st *gearman) |
2457 | +gearman_con_st *gearman_ready(gearman_st *gearman) |
2458 | { |
2459 | gearman_con_st *con; |
2460 | |
2461 | @@ -508,17 +504,17 @@ |
2462 | return NULL; |
2463 | } |
2464 | |
2465 | -gearman_return_t gearman_con_echo(gearman_st *gearman, const void *workload, |
2466 | - size_t workload_size) |
2467 | +gearman_return_t gearman_echo(gearman_st *gearman, const void *workload, |
2468 | + size_t workload_size) |
2469 | { |
2470 | gearman_con_st *con; |
2471 | gearman_options_t options= gearman->options; |
2472 | gearman_packet_st packet; |
2473 | gearman_return_t ret; |
2474 | |
2475 | - ret= gearman_packet_add(gearman, &packet, GEARMAN_MAGIC_REQUEST, |
2476 | - GEARMAN_COMMAND_ECHO_REQ, workload, workload_size, |
2477 | - NULL); |
2478 | + ret= gearman_add_packet_args(gearman, &packet, GEARMAN_MAGIC_REQUEST, |
2479 | + GEARMAN_COMMAND_ECHO_REQ, &workload, |
2480 | + &workload_size, 1); |
2481 | if (ret != GEARMAN_SUCCESS) |
2482 | return ret; |
2483 | |
2484 | @@ -548,7 +544,7 @@ |
2485 | gearman_packet_free(&(con->packet)); |
2486 | gearman_packet_free(&packet); |
2487 | gearman->options= options; |
2488 | - gearman_error_set(gearman, "gearman_con_echo", "corruption during echo"); |
2489 | + gearman_set_error(gearman, "gearman_echo", "corruption during echo"); |
2490 | return GEARMAN_ECHO_DATA_CORRUPTION; |
2491 | } |
2492 | |
2493 | @@ -564,15 +560,15 @@ |
2494 | * Packet related functions. |
2495 | */ |
2496 | |
2497 | -gearman_packet_st *gearman_packet_create(gearman_st *gearman, |
2498 | - gearman_packet_st *packet) |
2499 | +gearman_packet_st *gearman_add_packet(gearman_st *gearman, |
2500 | + gearman_packet_st *packet) |
2501 | { |
2502 | if (packet == NULL) |
2503 | { |
2504 | packet= malloc(sizeof(gearman_packet_st)); |
2505 | if (packet == NULL) |
2506 | { |
2507 | - gearman_error_set(gearman, "gearman_packet_create", "malloc"); |
2508 | + gearman_set_error(gearman, "gearman_add_packet", "malloc"); |
2509 | return NULL; |
2510 | } |
2511 | |
2512 | @@ -604,42 +600,34 @@ |
2513 | return packet; |
2514 | } |
2515 | |
2516 | -gearman_return_t gearman_packet_add(gearman_st *gearman, |
2517 | - gearman_packet_st *packet, |
2518 | - gearman_magic_t magic, |
2519 | - gearman_command_t command, |
2520 | - const void *arg, ...) |
2521 | +gearman_return_t gearman_add_packet_args(gearman_st *gearman, |
2522 | + gearman_packet_st *packet, |
2523 | + gearman_magic_t magic, |
2524 | + gearman_command_t command, |
2525 | + const void *args[], |
2526 | + const size_t args_size[], |
2527 | + size_t args_count) |
2528 | { |
2529 | - va_list ap; |
2530 | - size_t arg_size; |
2531 | gearman_return_t ret; |
2532 | + size_t x; |
2533 | |
2534 | - packet= gearman_packet_create(gearman, packet); |
2535 | + packet= gearman_add_packet(gearman, packet); |
2536 | if (packet == NULL) |
2537 | return GEARMAN_MEMORY_ALLOCATION_FAILURE; |
2538 | |
2539 | packet->magic= magic; |
2540 | packet->command= command; |
2541 | |
2542 | - va_start(ap, arg); |
2543 | - |
2544 | - while (arg != NULL) |
2545 | + for (x= 0; x < args_count; x++) |
2546 | { |
2547 | - arg_size = va_arg(ap, size_t); |
2548 | - |
2549 | - ret= gearman_packet_add_arg(packet, arg, arg_size); |
2550 | + ret= gearman_packet_add_arg(packet, args[x], args_size[x]); |
2551 | if (ret != GEARMAN_SUCCESS) |
2552 | { |
2553 | - va_end(ap); |
2554 | gearman_packet_free(packet); |
2555 | return ret; |
2556 | } |
2557 | - |
2558 | - arg = va_arg(ap, void *); |
2559 | } |
2560 | |
2561 | - va_end(ap); |
2562 | - |
2563 | return gearman_packet_pack_header(packet); |
2564 | } |
2565 | |
2566 | @@ -651,11 +639,11 @@ |
2567 | if (packet->options & GEARMAN_PACKET_FREE_DATA && packet->data != NULL) |
2568 | { |
2569 | if (packet->gearman->workload_free_fn == NULL) |
2570 | - free((void *)(packet->data)); |
2571 | + free((void *)packet->data); |
2572 | else |
2573 | { |
2574 | packet->gearman->workload_free_fn((void *)(packet->data), |
2575 | - (void *)(packet->gearman->workload_free_context)); |
2576 | + (void *)packet->gearman->workload_free_context); |
2577 | } |
2578 | } |
2579 | |
2580 | @@ -674,50 +662,65 @@ |
2581 | free(packet); |
2582 | } |
2583 | |
2584 | -void gearman_packet_free_all(gearman_st *gearman) |
2585 | +void gearman_free_all_packets(gearman_st *gearman) |
2586 | { |
2587 | while (gearman->packet_list != NULL) |
2588 | gearman_packet_free(gearman->packet_list); |
2589 | } |
2590 | |
2591 | /* |
2592 | - * Local package functions. |
2593 | + * Local Definitions |
2594 | */ |
2595 | -void gearman_error_set(gearman_st *gearman, const char *function, |
2596 | + |
2597 | +void gearman_set_error(gearman_st *gearman, const char *function, |
2598 | const char *format, ...) |
2599 | { |
2600 | - size_t length; |
2601 | + size_t size; |
2602 | char *ptr; |
2603 | char log_buffer[GEARMAN_MAX_ERROR_SIZE]; |
2604 | - va_list arg; |
2605 | - |
2606 | - va_start(arg, format); |
2607 | - |
2608 | - length= strlen(function); |
2609 | - |
2610 | - /* Copy the function name and : before the format */ |
2611 | - ptr= memcpy(log_buffer, function, length); |
2612 | - ptr+= length; |
2613 | + va_list args; |
2614 | + |
2615 | + size= strlen(function); |
2616 | + ptr= memcpy(log_buffer, function, size); |
2617 | + ptr+= size; |
2618 | ptr[0]= ':'; |
2619 | - length++; |
2620 | + size++; |
2621 | ptr++; |
2622 | |
2623 | - length+= (size_t)vsnprintf(ptr, GEARMAN_MAX_ERROR_SIZE - length, format, arg); |
2624 | - |
2625 | - if (gearman->log_fn == NULL) |
2626 | - { |
2627 | - if (length >= GEARMAN_MAX_ERROR_SIZE) |
2628 | - length= GEARMAN_MAX_ERROR_SIZE - 1; |
2629 | - |
2630 | - memcpy(gearman->last_error, log_buffer, length + 1); |
2631 | - } |
2632 | - else |
2633 | - { |
2634 | - (*(gearman->log_fn))(log_buffer, GEARMAN_VERBOSE_FATAL, |
2635 | - (void *)(gearman)->log_context); |
2636 | - } |
2637 | - |
2638 | - va_end(arg); |
2639 | + va_start(args, format); |
2640 | + size+= (size_t)vsnprintf(ptr, GEARMAN_MAX_ERROR_SIZE - size, format, args); |
2641 | + va_end(args); |
2642 | + |
2643 | + if (gearman->log_fn == NULL) |
2644 | + { |
2645 | + if (size >= GEARMAN_MAX_ERROR_SIZE) |
2646 | + size= GEARMAN_MAX_ERROR_SIZE - 1; |
2647 | + |
2648 | + memcpy(gearman->last_error, log_buffer, size + 1); |
2649 | + } |
2650 | + else |
2651 | + { |
2652 | + gearman->log_fn(log_buffer, GEARMAN_VERBOSE_FATAL, |
2653 | + (void *)gearman->log_context); |
2654 | + } |
2655 | +} |
2656 | + |
2657 | +void gearman_log(gearman_st *gearman, gearman_verbose_t verbose, |
2658 | + const char *format, va_list args) |
2659 | +{ |
2660 | + char log_buffer[GEARMAN_MAX_ERROR_SIZE]; |
2661 | + |
2662 | + if (gearman->log_fn == NULL) |
2663 | + { |
2664 | + printf("%5s: ", gearman_verbose_name(verbose)); |
2665 | + vprintf(format, args); |
2666 | + printf("\n"); |
2667 | + } |
2668 | + else |
2669 | + { |
2670 | + vsnprintf(log_buffer, GEARMAN_MAX_ERROR_SIZE, format, args); |
2671 | + gearman->log_fn(log_buffer, verbose, (void *)gearman->log_context); |
2672 | + } |
2673 | } |
2674 | |
2675 | gearman_return_t gearman_parse_servers(const char *servers, |
2676 | |
2677 | === modified file 'libgearman/gearman.h' |
2678 | --- libgearman/gearman.h 2009-10-02 01:13:31 +0000 |
2679 | +++ libgearman/gearman.h 2009-11-04 22:14:14 +0000 |
2680 | @@ -8,7 +8,7 @@ |
2681 | |
2682 | /** |
2683 | * @file |
2684 | - * @brief Gearman core declarations |
2685 | + * @brief Gearman Declarations |
2686 | */ |
2687 | |
2688 | #ifndef __GEARMAN_H__ |
2689 | @@ -25,7 +25,6 @@ |
2690 | #include <arpa/inet.h> |
2691 | #include <poll.h> |
2692 | #include <sys/uio.h> |
2693 | -#include <event.h> |
2694 | #include <stdarg.h> |
2695 | |
2696 | #include <libgearman/visibility.h> |
2697 | @@ -43,7 +42,8 @@ |
2698 | #endif |
2699 | |
2700 | /** |
2701 | - * @addtogroup gearman Gearman Core Interface |
2702 | + * @addtogroup gearman Gearman Declarations |
2703 | + * |
2704 | * This is a low level interface for gearman library instances. This is used |
2705 | * internally by both client and worker interfaces, so you probably want to |
2706 | * look there first. This is usually used to write lower level clients, workers, |
2707 | @@ -52,6 +52,7 @@ |
2708 | * There is no locking within a single gearman_st structure, so for threaded |
2709 | * applications you must either ensure isolation in the application or use |
2710 | * multiple gearman_st structures (for example, one for each thread). |
2711 | + * |
2712 | * @{ |
2713 | */ |
2714 | |
2715 | @@ -266,7 +267,7 @@ |
2716 | * failure this will be NULL. |
2717 | */ |
2718 | GEARMAN_API |
2719 | -gearman_con_st *gearman_con_create(gearman_st *gearman, gearman_con_st *con); |
2720 | +gearman_con_st *gearman_add_con(gearman_st *gearman, gearman_con_st *con); |
2721 | |
2722 | /** |
2723 | * Create a connection structure with the given host and port. |
2724 | @@ -280,8 +281,8 @@ |
2725 | * failure this will be NULL. |
2726 | */ |
2727 | GEARMAN_API |
2728 | -gearman_con_st *gearman_con_add(gearman_st *gearman, gearman_con_st *con, |
2729 | - const char *host, in_port_t port); |
2730 | +gearman_con_st *gearman_add_con_args(gearman_st *gearman, gearman_con_st *con, |
2731 | + const char *host, in_port_t port); |
2732 | |
2733 | /** |
2734 | * Clone a connection structure. |
2735 | @@ -294,14 +295,14 @@ |
2736 | * failure this will be NULL. |
2737 | */ |
2738 | GEARMAN_API |
2739 | -gearman_con_st *gearman_con_clone(gearman_st *gearman, gearman_con_st *con, |
2740 | +gearman_con_st *gearman_clone_con(gearman_st *gearman, gearman_con_st *con, |
2741 | const gearman_con_st *from); |
2742 | |
2743 | /** |
2744 | * Free a connection structure. |
2745 | * |
2746 | - * @param[in] con Structure previously initialized with gearman_con_create(), |
2747 | - * gearman_con_add(), or gearman_con_clone(). |
2748 | + * @param[in] con Structure previously initialized with gearman_add_con(), |
2749 | + * gearman_add_con_args(), or gearman_clone_con(). |
2750 | */ |
2751 | GEARMAN_API |
2752 | void gearman_con_free(gearman_con_st *con); |
2753 | @@ -313,7 +314,7 @@ |
2754 | * gearman_clone(). |
2755 | */ |
2756 | GEARMAN_API |
2757 | -void gearman_con_free_all(gearman_st *gearman); |
2758 | +void gearman_free_all_cons(gearman_st *gearman); |
2759 | |
2760 | /** |
2761 | * Flush the send buffer for all connections. |
2762 | @@ -323,7 +324,7 @@ |
2763 | * @return Standard gearman return value. |
2764 | */ |
2765 | GEARMAN_API |
2766 | -gearman_return_t gearman_con_flush_all(gearman_st *gearman); |
2767 | +gearman_return_t gearman_flush_all(gearman_st *gearman); |
2768 | |
2769 | /** |
2770 | * Send packet to all connections. |
2771 | @@ -334,8 +335,8 @@ |
2772 | * @return Standard gearman return value. |
2773 | */ |
2774 | GEARMAN_API |
2775 | -gearman_return_t gearman_con_send_all(gearman_st *gearman, |
2776 | - const gearman_packet_st *packet); |
2777 | +gearman_return_t gearman_send_all(gearman_st *gearman, |
2778 | + const gearman_packet_st *packet); |
2779 | |
2780 | /** |
2781 | * Wait for I/O on connections. |
2782 | @@ -345,7 +346,7 @@ |
2783 | * @return Standard gearman return value. |
2784 | */ |
2785 | GEARMAN_API |
2786 | -gearman_return_t gearman_con_wait(gearman_st *gearman); |
2787 | +gearman_return_t gearman_wait(gearman_st *gearman); |
2788 | |
2789 | /** |
2790 | * Get next connection that is ready for I/O. |
2791 | @@ -355,7 +356,7 @@ |
2792 | * @return Connection that is ready for I/O, or NULL if there are none. |
2793 | */ |
2794 | GEARMAN_API |
2795 | -gearman_con_st *gearman_con_ready(gearman_st *gearman); |
2796 | +gearman_con_st *gearman_ready(gearman_st *gearman); |
2797 | |
2798 | /** |
2799 | * Test echo with all connections. |
2800 | @@ -367,8 +368,8 @@ |
2801 | * @return Standard gearman return value. |
2802 | */ |
2803 | GEARMAN_API |
2804 | -gearman_return_t gearman_con_echo(gearman_st *gearman, const void *workload, |
2805 | - size_t workload_size); |
2806 | +gearman_return_t gearman_echo(gearman_st *gearman, const void *workload, |
2807 | + size_t workload_size); |
2808 | |
2809 | /* |
2810 | * Packet related functions. |
2811 | @@ -384,20 +385,27 @@ |
2812 | * failure this will be NULL. |
2813 | */ |
2814 | GEARMAN_API |
2815 | -gearman_packet_st *gearman_packet_create(gearman_st *gearman, |
2816 | - gearman_packet_st *packet); |
2817 | +gearman_packet_st *gearman_add_packet(gearman_st *gearman, |
2818 | + gearman_packet_st *packet); |
2819 | |
2820 | /** |
2821 | - * Initialize a packet with all arguments. Variable list is NULL terminated |
2822 | - * alternating argument and argument size (size_t) pairs. For example: |
2823 | + * Initialize a packet with all arguments. For example: |
2824 | * |
2825 | * @code |
2826 | - * ret= gearman_packet_add_args(gearman, packet, |
2827 | + * void *args[3]; |
2828 | + * size_t args_suze[3]; |
2829 | + * |
2830 | + * args[0]= function_name; |
2831 | + * args_size[0]= strlen(function_name) + 1; |
2832 | + * args[1]= unique_string; |
2833 | + * args_size[1]= strlen(unique_string,) + 1; |
2834 | + * args[2]= workload; |
2835 | + * args_size[2]= workload_size; |
2836 | + * |
2837 | + * ret= gearman_add_packet_args(gearman, packet, |
2838 | * GEARMAN_MAGIC_REQUEST, |
2839 | * GEARMAN_COMMAND_SUBMIT_JOB, |
2840 | - * function_name, strlen(function_name) + 1, |
2841 | - * unique_string, strlen(unique_string) + 1, |
2842 | - * workload, workload_size, NULL); |
2843 | + * args, args_size, 3); |
2844 | * @endcode |
2845 | * |
2846 | * @param[in] gearman Structure previously initialized with gearman_create() or |
2847 | @@ -405,21 +413,25 @@ |
2848 | * @param[in] packet Pre-allocated packet to initialize with arguments. |
2849 | * @param[in] magic Magic type for packet header. |
2850 | * @param[in] command Command type for packet. |
2851 | - * @param[in] arg NULL terminated argument list in pairs of "arg, arg_size". |
2852 | + * @param[in] args Array of arguments to add. |
2853 | + * @param[in] args_size Array of sizes of each byte array in the args array. |
2854 | + * @param[in] args_count Number of elements in args/args_sizes arrays. |
2855 | * @return Standard gearman return value. |
2856 | */ |
2857 | GEARMAN_API |
2858 | -gearman_return_t gearman_packet_add(gearman_st *gearman, |
2859 | - gearman_packet_st *packet, |
2860 | - gearman_magic_t magic, |
2861 | - gearman_command_t command, |
2862 | - const void *arg, ...); |
2863 | +gearman_return_t gearman_add_packet_args(gearman_st *gearman, |
2864 | + gearman_packet_st *packet, |
2865 | + gearman_magic_t magic, |
2866 | + gearman_command_t command, |
2867 | + const void *args[], |
2868 | + const size_t args_size[], |
2869 | + size_t args_count); |
2870 | |
2871 | /** |
2872 | * Free a packet structure. |
2873 | * |
2874 | * @param[in] packet Structure previously initialized with |
2875 | - * gearman_packet_create() or gearman_packet_add(). |
2876 | + * gearman_add_packet() or gearman_add_packet_args(). |
2877 | */ |
2878 | GEARMAN_API |
2879 | void gearman_packet_free(gearman_packet_st *packet); |
2880 | @@ -431,7 +443,7 @@ |
2881 | * gearman_clone(). |
2882 | */ |
2883 | GEARMAN_API |
2884 | -void gearman_packet_free_all(gearman_st *gearman); |
2885 | +void gearman_free_all_packets(gearman_st *gearman); |
2886 | |
2887 | /** @} */ |
2888 | |
2889 | |
2890 | === added file 'libgearman/gearman_local.h' |
2891 | --- libgearman/gearman_local.h 1970-01-01 00:00:00 +0000 |
2892 | +++ libgearman/gearman_local.h 2009-11-04 22:14:14 +0000 |
2893 | @@ -0,0 +1,150 @@ |
2894 | +/* Gearman server and library |
2895 | + * Copyright (C) 2008 Brian Aker, Eric Day |
2896 | + * All rights reserved. |
2897 | + * |
2898 | + * Use and distribution licensed under the BSD license. See |
2899 | + * the COPYING file in the parent directory for full text. |
2900 | + */ |
2901 | + |
2902 | +/** |
2903 | + * @file |
2904 | + * @brief Local Gearman Declarations |
2905 | + */ |
2906 | + |
2907 | +#ifndef __GEARMAN_LOCAL_H__ |
2908 | +#define __GEARMAN_LOCAL_H__ |
2909 | + |
2910 | +#ifdef __cplusplus |
2911 | +extern "C" { |
2912 | +#endif |
2913 | + |
2914 | +/** |
2915 | + * @addtogroup gearman_local Local Gearman Declarations |
2916 | + * @ingroup gearman |
2917 | + * @{ |
2918 | + */ |
2919 | + |
2920 | +/** |
2921 | + * Set the error string. |
2922 | + * |
2923 | + * @param[in] gearman Structure previously initialized with gearman_create() or |
2924 | + * gearman_clone(). |
2925 | + * @param[in] function Name of function the error happened in. |
2926 | + * @param[in] format Format and variable argument list of message. |
2927 | + */ |
2928 | +GEARMAN_LOCAL |
2929 | +void gearman_set_error(gearman_st *gearman, const char *function, |
2930 | + const char *format, ...); |
2931 | + |
2932 | +/** |
2933 | + * Log a message. |
2934 | + * |
2935 | + * @param[in] gearman Structure previously initialized with gearman_create() or |
2936 | + * gearman_clone(). |
2937 | + * @param[in] verbose Logging level of the message. |
2938 | + * @param[in] format Format and variable argument list of message. |
2939 | + * @param[in] args Variable argument list that has been initialized. |
2940 | + */ |
2941 | +GEARMAN_LOCAL |
2942 | +void gearman_log(gearman_st *gearman, gearman_verbose_t verbose, |
2943 | + const char *format, va_list args); |
2944 | + |
2945 | +/** |
2946 | + * Log a fatal message, see gearman_log() for argument details. |
2947 | + */ |
2948 | +static inline void gearman_log_fatal(gearman_st *gearman, const char *format, |
2949 | + ...) |
2950 | +{ |
2951 | + va_list args; |
2952 | + |
2953 | + if (gearman->verbose >= GEARMAN_VERBOSE_FATAL) |
2954 | + { |
2955 | + va_start(args, format); |
2956 | + gearman_log(gearman, GEARMAN_VERBOSE_FATAL, format, args); |
2957 | + va_end(args); |
2958 | + } |
2959 | +} |
2960 | +/** |
2961 | + * Log an error message, see gearman_log() for argument details. |
2962 | + */ |
2963 | +static inline void gearman_log_error(gearman_st *gearman, const char *format, |
2964 | + ...) |
2965 | +{ |
2966 | + va_list args; |
2967 | + |
2968 | + if (gearman->verbose >= GEARMAN_VERBOSE_ERROR) |
2969 | + { |
2970 | + va_start(args, format); |
2971 | + gearman_log(gearman, GEARMAN_VERBOSE_ERROR, format, args); |
2972 | + va_end(args); |
2973 | + } |
2974 | +} |
2975 | + |
2976 | +/** |
2977 | + * Log an info message, see gearman_log() for argument details. |
2978 | + */ |
2979 | +static inline void gearman_log_info(gearman_st *gearman, const char *format, |
2980 | + ...) |
2981 | +{ |
2982 | + va_list args; |
2983 | + |
2984 | + if (gearman->verbose >= GEARMAN_VERBOSE_INFO) |
2985 | + { |
2986 | + va_start(args, format); |
2987 | + gearman_log(gearman, GEARMAN_VERBOSE_INFO, format, args); |
2988 | + va_end(args); |
2989 | + } |
2990 | +} |
2991 | + |
2992 | +/** |
2993 | + * Log a debug message, see gearman_log() for argument details. |
2994 | + */ |
2995 | +static inline void gearman_log_debug(gearman_st *gearman, const char *format, |
2996 | + ...) |
2997 | +{ |
2998 | + va_list args; |
2999 | + |
3000 | + if (gearman->verbose >= GEARMAN_VERBOSE_DEBUG) |
3001 | + { |
3002 | + va_start(args, format); |
3003 | + gearman_log(gearman, GEARMAN_VERBOSE_DEBUG, format, args); |
3004 | + va_end(args); |
3005 | + } |
3006 | +} |
3007 | + |
3008 | +/** |
3009 | + * Log a crazy message, see gearman_log() for argument details. |
3010 | + */ |
3011 | +static inline void gearman_log_crazy(gearman_st *gearman, const char *format, |
3012 | + ...) |
3013 | +{ |
3014 | + va_list args; |
3015 | + |
3016 | + if (gearman->verbose >= GEARMAN_VERBOSE_CRAZY) |
3017 | + { |
3018 | + va_start(args, format); |
3019 | + gearman_log(gearman, GEARMAN_VERBOSE_CRAZY, format, args); |
3020 | + va_end(args); |
3021 | + } |
3022 | +} |
3023 | + |
3024 | +/** |
3025 | + * Utility function used for parsing server lists. |
3026 | + * |
3027 | + * @param[in] servers String containing a list of servers to parse. |
3028 | + * @param[in] callback Function to call for each server that is found. |
3029 | + * @param[in] context Argument to pass along with callback function. |
3030 | + * @return Standard Gearman return value. |
3031 | + */ |
3032 | +GEARMAN_LOCAL |
3033 | +gearman_return_t gearman_parse_servers(const char *servers, |
3034 | + gearman_parse_server_fn *callback, |
3035 | + const void *context); |
3036 | + |
3037 | +/** @} */ |
3038 | + |
3039 | +#ifdef __cplusplus |
3040 | +} |
3041 | +#endif |
3042 | + |
3043 | +#endif /* __GEARMAN_LOCAL_H__ */ |
3044 | |
3045 | === modified file 'libgearman/job.c' |
3046 | --- libgearman/job.c 2009-09-23 05:25:01 +0000 |
3047 | +++ libgearman/job.c 2009-11-04 22:14:14 +0000 |
3048 | @@ -8,17 +8,13 @@ |
3049 | |
3050 | /** |
3051 | * @file |
3052 | - * @brief Job definitions |
3053 | + * @brief Job Definitions |
3054 | */ |
3055 | |
3056 | #include "common.h" |
3057 | |
3058 | -/* |
3059 | - * Private declarations |
3060 | - */ |
3061 | - |
3062 | /** |
3063 | - * @addtogroup gearman_job_private Private Job Functions |
3064 | + * @addtogroup gearman_job_static Static Job Declarations |
3065 | * @ingroup gearman_job |
3066 | * @{ |
3067 | */ |
3068 | @@ -31,20 +27,26 @@ |
3069 | /** @} */ |
3070 | |
3071 | /* |
3072 | - * Public definitions |
3073 | + * Public Definitions |
3074 | */ |
3075 | |
3076 | gearman_return_t gearman_job_send_data(gearman_job_st *job, const void *data, |
3077 | size_t data_size) |
3078 | { |
3079 | gearman_return_t ret; |
3080 | + const void *args[2]; |
3081 | + size_t args_size[2]; |
3082 | |
3083 | if (!(job->options & GEARMAN_JOB_WORK_IN_USE)) |
3084 | { |
3085 | - ret= gearman_packet_add(job->worker->gearman, &(job->work), |
3086 | - GEARMAN_MAGIC_REQUEST, GEARMAN_COMMAND_WORK_DATA, |
3087 | - job->assigned.arg[0], job->assigned.arg_size[0], |
3088 | - data, data_size, NULL); |
3089 | + args[0]= job->assigned.arg[0]; |
3090 | + args_size[0]= job->assigned.arg_size[0]; |
3091 | + args[1]= data; |
3092 | + args_size[1]= data_size; |
3093 | + ret= gearman_add_packet_args(job->worker->gearman, &(job->work), |
3094 | + GEARMAN_MAGIC_REQUEST, |
3095 | + GEARMAN_COMMAND_WORK_DATA, |
3096 | + args, args_size, 2); |
3097 | if (ret != GEARMAN_SUCCESS) |
3098 | return ret; |
3099 | |
3100 | @@ -59,13 +61,19 @@ |
3101 | size_t warning_size) |
3102 | { |
3103 | gearman_return_t ret; |
3104 | + const void *args[2]; |
3105 | + size_t args_size[2]; |
3106 | |
3107 | if (!(job->options & GEARMAN_JOB_WORK_IN_USE)) |
3108 | { |
3109 | - ret= gearman_packet_add(job->worker->gearman, &(job->work), |
3110 | - GEARMAN_MAGIC_REQUEST, GEARMAN_COMMAND_WORK_WARNING, |
3111 | - job->assigned.arg[0], job->assigned.arg_size[0], |
3112 | - warning, warning_size, NULL); |
3113 | + args[0]= job->assigned.arg[0]; |
3114 | + args_size[0]= job->assigned.arg_size[0]; |
3115 | + args[1]= warning; |
3116 | + args_size[1]= warning_size; |
3117 | + ret= gearman_add_packet_args(job->worker->gearman, &(job->work), |
3118 | + GEARMAN_MAGIC_REQUEST, |
3119 | + GEARMAN_COMMAND_WORK_WARNING, |
3120 | + args, args_size, 2); |
3121 | if (ret != GEARMAN_SUCCESS) |
3122 | return ret; |
3123 | |
3124 | @@ -82,18 +90,24 @@ |
3125 | gearman_return_t ret; |
3126 | char numerator_string[12]; |
3127 | char denominator_string[12]; |
3128 | + const void *args[3]; |
3129 | + size_t args_size[3]; |
3130 | |
3131 | if (!(job->options & GEARMAN_JOB_WORK_IN_USE)) |
3132 | { |
3133 | snprintf(numerator_string, 12, "%u", numerator); |
3134 | snprintf(denominator_string, 12, "%u", denominator); |
3135 | |
3136 | - ret= gearman_packet_add(job->worker->gearman, &(job->work), |
3137 | - GEARMAN_MAGIC_REQUEST, GEARMAN_COMMAND_WORK_STATUS, |
3138 | - job->assigned.arg[0], job->assigned.arg_size[0], |
3139 | - numerator_string, strlen(numerator_string) + 1, |
3140 | - denominator_string, strlen(denominator_string), |
3141 | - NULL); |
3142 | + args[0]= job->assigned.arg[0]; |
3143 | + args_size[0]= job->assigned.arg_size[0]; |
3144 | + args[1]= numerator_string; |
3145 | + args_size[1]= strlen(numerator_string) + 1; |
3146 | + args[2]= denominator_string; |
3147 | + args_size[2]= strlen(denominator_string); |
3148 | + ret= gearman_add_packet_args(job->worker->gearman, &(job->work), |
3149 | + GEARMAN_MAGIC_REQUEST, |
3150 | + GEARMAN_COMMAND_WORK_STATUS, |
3151 | + args, args_size, 3); |
3152 | if (ret != GEARMAN_SUCCESS) |
3153 | return ret; |
3154 | |
3155 | @@ -108,17 +122,22 @@ |
3156 | size_t result_size) |
3157 | { |
3158 | gearman_return_t ret; |
3159 | + const void *args[2]; |
3160 | + size_t args_size[2]; |
3161 | |
3162 | if (job->options & GEARMAN_JOB_FINISHED) |
3163 | return GEARMAN_SUCCESS; |
3164 | |
3165 | if (!(job->options & GEARMAN_JOB_WORK_IN_USE)) |
3166 | { |
3167 | - ret= gearman_packet_add(job->worker->gearman, &(job->work), |
3168 | - GEARMAN_MAGIC_REQUEST, |
3169 | - GEARMAN_COMMAND_WORK_COMPLETE, |
3170 | - job->assigned.arg[0], job->assigned.arg_size[0], |
3171 | - result, result_size, NULL); |
3172 | + args[0]= job->assigned.arg[0]; |
3173 | + args_size[0]= job->assigned.arg_size[0]; |
3174 | + args[1]= result; |
3175 | + args_size[1]= result_size; |
3176 | + ret= gearman_add_packet_args(job->worker->gearman, &(job->work), |
3177 | + GEARMAN_MAGIC_REQUEST, |
3178 | + GEARMAN_COMMAND_WORK_COMPLETE, |
3179 | + args, args_size, 2); |
3180 | if (ret != GEARMAN_SUCCESS) |
3181 | return ret; |
3182 | |
3183 | @@ -138,14 +157,19 @@ |
3184 | size_t exception_size) |
3185 | { |
3186 | gearman_return_t ret; |
3187 | + const void *args[2]; |
3188 | + size_t args_size[2]; |
3189 | |
3190 | if (!(job->options & GEARMAN_JOB_WORK_IN_USE)) |
3191 | { |
3192 | - ret= gearman_packet_add(job->worker->gearman, &(job->work), |
3193 | - GEARMAN_MAGIC_REQUEST, |
3194 | - GEARMAN_COMMAND_WORK_EXCEPTION, |
3195 | - job->assigned.arg[0], job->assigned.arg_size[0], |
3196 | - exception, exception_size, NULL); |
3197 | + args[0]= job->assigned.arg[0]; |
3198 | + args_size[0]= job->assigned.arg_size[0]; |
3199 | + args[1]= exception; |
3200 | + args_size[1]= exception_size; |
3201 | + ret= gearman_add_packet_args(job->worker->gearman, &(job->work), |
3202 | + GEARMAN_MAGIC_REQUEST, |
3203 | + GEARMAN_COMMAND_WORK_EXCEPTION, |
3204 | + args, args_size, 2); |
3205 | if (ret != GEARMAN_SUCCESS) |
3206 | return ret; |
3207 | |
3208 | @@ -158,16 +182,20 @@ |
3209 | gearman_return_t gearman_job_send_fail(gearman_job_st *job) |
3210 | { |
3211 | gearman_return_t ret; |
3212 | + const void *args[1]; |
3213 | + size_t args_size[1]; |
3214 | |
3215 | if (job->options & GEARMAN_JOB_FINISHED) |
3216 | return GEARMAN_SUCCESS; |
3217 | |
3218 | if (!(job->options & GEARMAN_JOB_WORK_IN_USE)) |
3219 | { |
3220 | - ret= gearman_packet_add(job->worker->gearman, &(job->work), |
3221 | - GEARMAN_MAGIC_REQUEST, GEARMAN_COMMAND_WORK_FAIL, |
3222 | - job->assigned.arg[0], job->assigned.arg_size[0] - 1, |
3223 | - NULL); |
3224 | + args[0]= job->assigned.arg[0]; |
3225 | + args_size[0]= job->assigned.arg_size[0] - 1; |
3226 | + ret= gearman_add_packet_args(job->worker->gearman, &(job->work), |
3227 | + GEARMAN_MAGIC_REQUEST, |
3228 | + GEARMAN_COMMAND_WORK_FAIL, |
3229 | + args, args_size, 2); |
3230 | if (ret != GEARMAN_SUCCESS) |
3231 | return ret; |
3232 | |
3233 | @@ -215,7 +243,7 @@ |
3234 | } |
3235 | |
3236 | /* |
3237 | - * Private definitions |
3238 | + * Static Definitions |
3239 | */ |
3240 | |
3241 | static gearman_return_t _job_send(gearman_job_st *job) |
3242 | |
3243 | === modified file 'libgearman/job.h' |
3244 | --- libgearman/job.h 2009-09-23 05:25:01 +0000 |
3245 | +++ libgearman/job.h 2009-11-04 22:14:14 +0000 |
3246 | @@ -8,7 +8,7 @@ |
3247 | |
3248 | /** |
3249 | * @file |
3250 | - * @brief Job declarations |
3251 | + * @brief Job Declarations |
3252 | */ |
3253 | |
3254 | #ifndef __GEARMAN_JOB_H__ |
3255 | @@ -19,10 +19,12 @@ |
3256 | #endif |
3257 | |
3258 | /** |
3259 | - * @addtogroup gearman_job Job Management |
3260 | + * @addtogroup gearman_job Job Declarations |
3261 | * @ingroup gearman_worker |
3262 | + * |
3263 | * The job functions are used to manage jobs assigned to workers. It is most |
3264 | * commonly used with the worker interface. |
3265 | + * |
3266 | * @{ |
3267 | */ |
3268 | |
3269 | |
3270 | === modified file 'libgearman/packet.c' |
3271 | --- libgearman/packet.c 2009-09-26 08:14:01 +0000 |
3272 | +++ libgearman/packet.c 2009-11-04 22:14:14 +0000 |
3273 | @@ -8,17 +8,13 @@ |
3274 | |
3275 | /** |
3276 | * @file |
3277 | - * @brief Packet definitions |
3278 | + * @brief Packet Definitions |
3279 | */ |
3280 | |
3281 | #include "common.h" |
3282 | |
3283 | -/* |
3284 | - * Private declarations |
3285 | - */ |
3286 | - |
3287 | /** |
3288 | - * @addtogroup gearman_packet_private Private Packet Functions |
3289 | + * @addtogroup gearman_packet_static Static Packet Declarations |
3290 | * @ingroup gearman_packet |
3291 | * @{ |
3292 | */ |
3293 | @@ -71,7 +67,7 @@ |
3294 | /** @} */ |
3295 | |
3296 | /* |
3297 | - * Public definitions |
3298 | + * Public Definitions |
3299 | */ |
3300 | |
3301 | gearman_return_t gearman_packet_add_arg(gearman_packet_st *packet, |
3302 | @@ -85,7 +81,7 @@ |
3303 | (!(gearman_command_info_list[packet->command].data) || |
3304 | packet->data != NULL)) |
3305 | { |
3306 | - gearman_error_set(packet->gearman, "gearman_packet_add_arg", |
3307 | + gearman_set_error(packet->gearman, "gearman_packet_add_arg", |
3308 | "too many arguments for command"); |
3309 | return GEARMAN_TOO_MANY_ARGS; |
3310 | } |
3311 | @@ -110,7 +106,7 @@ |
3312 | new_args= realloc(packet->args, packet->args_size + arg_size); |
3313 | if (new_args == NULL) |
3314 | { |
3315 | - gearman_error_set(packet->gearman, "gearman_packet_add_arg", "realloc"); |
3316 | + gearman_set_error(packet->gearman, "gearman_packet_add_arg", "realloc"); |
3317 | return GEARMAN_MEMORY_ALLOCATION_FAILURE; |
3318 | } |
3319 | |
3320 | @@ -169,7 +165,7 @@ |
3321 | break; |
3322 | |
3323 | default: |
3324 | - gearman_error_set(packet->gearman, "gearman_packet_pack_header", |
3325 | + gearman_set_error(packet->gearman, "gearman_packet_pack_header", |
3326 | "invalid magic value"); |
3327 | return GEARMAN_INVALID_MAGIC; |
3328 | } |
3329 | @@ -177,7 +173,7 @@ |
3330 | if (packet->command == GEARMAN_COMMAND_TEXT || |
3331 | packet->command >= GEARMAN_COMMAND_MAX) |
3332 | { |
3333 | - gearman_error_set(packet->gearman, "gearman_packet_pack_header", |
3334 | + gearman_set_error(packet->gearman, "gearman_packet_pack_header", |
3335 | "invalid command value"); |
3336 | return GEARMAN_INVALID_COMMAND; |
3337 | } |
3338 | @@ -206,7 +202,7 @@ |
3339 | packet->magic= GEARMAN_MAGIC_RESPONSE; |
3340 | else |
3341 | { |
3342 | - gearman_error_set(packet->gearman, "gearman_packet_unpack_header", |
3343 | + gearman_set_error(packet->gearman, "gearman_packet_unpack_header", |
3344 | "invalid magic value"); |
3345 | return GEARMAN_INVALID_MAGIC; |
3346 | } |
3347 | @@ -217,7 +213,7 @@ |
3348 | if (packet->command == GEARMAN_COMMAND_TEXT || |
3349 | packet->command >= GEARMAN_COMMAND_MAX) |
3350 | { |
3351 | - gearman_error_set(packet->gearman, "gearman_packet_unpack_header", |
3352 | + gearman_set_error(packet->gearman, "gearman_packet_unpack_header", |
3353 | "invalid command value"); |
3354 | return GEARMAN_INVALID_COMMAND; |
3355 | } |
3356 | |
3357 | === modified file 'libgearman/packet.h' |
3358 | --- libgearman/packet.h 2009-09-24 23:43:15 +0000 |
3359 | +++ libgearman/packet.h 2009-11-04 22:14:14 +0000 |
3360 | @@ -8,7 +8,7 @@ |
3361 | |
3362 | /** |
3363 | * @file |
3364 | - * @brief Packet declarations |
3365 | + * @brief Packet Declarations |
3366 | */ |
3367 | |
3368 | #ifndef __GEARMAN_PACKET_H__ |
3369 | @@ -26,11 +26,14 @@ |
3370 | gearman_command_info_st gearman_command_info_list[GEARMAN_COMMAND_MAX]; |
3371 | |
3372 | /** |
3373 | - * @addtogroup gearman_packet Packet Handling |
3374 | + * @addtogroup gearman_packet Packet Declarations |
3375 | + * @ingroup gearman |
3376 | + * |
3377 | * This is a low level interface for gearman packet. This is used internally |
3378 | * internally by both client and worker interfaces (or more specifically, tasks |
3379 | * and jobs), so you probably want to look there first. This is usually used to |
3380 | * write lower level clients, workers, proxies, or your own server. |
3381 | + * |
3382 | * @{ |
3383 | */ |
3384 | |
3385 | |
3386 | === modified file 'libgearman/structs.h' |
3387 | --- libgearman/structs.h 2009-09-28 17:47:34 +0000 |
3388 | +++ libgearman/structs.h 2009-11-04 22:14:14 +0000 |
3389 | @@ -8,7 +8,7 @@ |
3390 | |
3391 | /** |
3392 | * @file |
3393 | - * @brief Struct definitions |
3394 | + * @brief Struct Definitions |
3395 | */ |
3396 | |
3397 | #ifndef __GEARMAN_STRUCTS_H__ |
3398 | |
3399 | === modified file 'libgearman/task.c' |
3400 | --- libgearman/task.c 2009-09-23 05:25:01 +0000 |
3401 | +++ libgearman/task.c 2009-11-04 22:14:14 +0000 |
3402 | @@ -8,13 +8,13 @@ |
3403 | |
3404 | /** |
3405 | * @file |
3406 | - * @brief Task definitions |
3407 | + * @brief Task Definitions |
3408 | */ |
3409 | |
3410 | #include "common.h" |
3411 | |
3412 | /* |
3413 | - * Public definitions |
3414 | + * Public Definitions |
3415 | */ |
3416 | |
3417 | void *gearman_task_context(const gearman_task_st *task) |
3418 | |
3419 | === modified file 'libgearman/task.h' |
3420 | --- libgearman/task.h 2009-09-23 05:25:01 +0000 |
3421 | +++ libgearman/task.h 2009-11-04 22:14:14 +0000 |
3422 | @@ -8,7 +8,7 @@ |
3423 | |
3424 | /** |
3425 | * @file |
3426 | - * @brief Task declarations |
3427 | + * @brief Task Declarations |
3428 | */ |
3429 | |
3430 | #ifndef __GEARMAN_TASK_H__ |
3431 | @@ -19,10 +19,12 @@ |
3432 | #endif |
3433 | |
3434 | /** |
3435 | - * @addtogroup gearman_task Task Management |
3436 | + * @addtogroup gearman_task Task Declarations |
3437 | * @ingroup gearman_client |
3438 | + * |
3439 | * The task functions are used to manage tasks being run by clients. They are |
3440 | * most commonly used with the client interface. |
3441 | + * |
3442 | * @{ |
3443 | */ |
3444 | |
3445 | |
3446 | === modified file 'libgearman/visibility.h' |
3447 | --- libgearman/visibility.h 2009-09-18 02:48:06 +0000 |
3448 | +++ libgearman/visibility.h 2009-11-04 22:14:14 +0000 |
3449 | @@ -10,14 +10,13 @@ |
3450 | |
3451 | /** |
3452 | * @file |
3453 | - * @brief Visibility control macros |
3454 | + * @brief Visibility Control Macros |
3455 | */ |
3456 | |
3457 | #ifndef __GEARMAN_VISIBILITY_H |
3458 | #define __GEARMAN_VISIBILITY_H |
3459 | |
3460 | /** |
3461 | - * |
3462 | * GEARMAN_API is used for the public API symbols. It either DLL imports or |
3463 | * DLL exports (or does nothing for static build). |
3464 | * |
3465 | @@ -28,6 +27,9 @@ |
3466 | # if defined(HAVE_VISIBILITY) |
3467 | # define GEARMAN_API __attribute__ ((visibility("default"))) |
3468 | # define GEARMAN_LOCAL __attribute__ ((visibility("hidden"))) |
3469 | +# elif defined (__SUNPRO_C) && (__SUNPRO_C >= 0x550) |
3470 | +# define GEARMAN_API __global |
3471 | +# define GEARMAN_API __hidden |
3472 | # elif defined(_MSC_VER) |
3473 | # define GEARMAN_API extern __declspec(dllexport) |
3474 | # define GEARMAN_LOCAL |
3475 | |
3476 | === modified file 'libgearman/worker.c' |
3477 | --- libgearman/worker.c 2009-09-28 17:47:34 +0000 |
3478 | +++ libgearman/worker.c 2009-11-04 22:14:14 +0000 |
3479 | @@ -8,17 +8,13 @@ |
3480 | |
3481 | /** |
3482 | * @file |
3483 | - * @brief Worker definitions |
3484 | + * @brief Worker Definitions |
3485 | */ |
3486 | |
3487 | #include "common.h" |
3488 | |
3489 | -/* |
3490 | - * Private declarations |
3491 | - */ |
3492 | - |
3493 | /** |
3494 | - * @addtogroup gearman_worker_private Private Worker Functions |
3495 | + * @addtogroup gearman_worker_static Static Worker Declarations |
3496 | * @ingroup gearman_worker |
3497 | * @{ |
3498 | */ |
3499 | @@ -63,7 +59,7 @@ |
3500 | /** @} */ |
3501 | |
3502 | /* |
3503 | - * Public definitions |
3504 | + * Public Definitions |
3505 | */ |
3506 | |
3507 | gearman_worker_st *gearman_worker_create(gearman_worker_st *worker) |
3508 | @@ -140,7 +136,7 @@ |
3509 | else |
3510 | { |
3511 | worker->gearman->workload_free_fn(worker->work_result, |
3512 | - (void *)(worker->gearman->workload_free_context)); |
3513 | + (void *)worker->gearman->workload_free_context); |
3514 | } |
3515 | } |
3516 | |
3517 | @@ -262,7 +258,7 @@ |
3518 | gearman_return_t gearman_worker_add_server(gearman_worker_st *worker, |
3519 | const char *host, in_port_t port) |
3520 | { |
3521 | - if (gearman_con_add(worker->gearman, NULL, host, port) == NULL) |
3522 | + if (gearman_add_con_args(worker->gearman, NULL, host, port) == NULL) |
3523 | return GEARMAN_MEMORY_ALLOCATION_FAILURE; |
3524 | |
3525 | return GEARMAN_SUCCESS; |
3526 | @@ -274,9 +270,14 @@ |
3527 | return gearman_parse_servers(servers, _worker_add_server, worker); |
3528 | } |
3529 | |
3530 | +void gearman_worker_remove_servers(gearman_worker_st *worker) |
3531 | +{ |
3532 | + gearman_free_all_cons(worker->gearman); |
3533 | +} |
3534 | + |
3535 | gearman_return_t gearman_worker_wait(gearman_worker_st *worker) |
3536 | { |
3537 | - return gearman_con_wait(worker->gearman); |
3538 | + return gearman_wait(worker->gearman); |
3539 | } |
3540 | |
3541 | gearman_return_t gearman_worker_register(gearman_worker_st *worker, |
3542 | @@ -291,6 +292,8 @@ |
3543 | { |
3544 | gearman_worker_function_st *function; |
3545 | gearman_return_t ret; |
3546 | + const void *args[1]; |
3547 | + size_t args_size[1]; |
3548 | |
3549 | for (function= worker->function_list; function != NULL; |
3550 | function= function->next) |
3551 | @@ -304,10 +307,11 @@ |
3552 | |
3553 | gearman_packet_free(&(function->packet)); |
3554 | |
3555 | - ret= gearman_packet_add(worker->gearman, &(function->packet), |
3556 | - GEARMAN_MAGIC_REQUEST, GEARMAN_COMMAND_CANT_DO, |
3557 | - (uint8_t *)function_name, strlen(function_name), |
3558 | - NULL); |
3559 | + args[0]= function_name; |
3560 | + args_size[0]= strlen(function_name); |
3561 | + ret= gearman_add_packet_args(worker->gearman, &(function->packet), |
3562 | + GEARMAN_MAGIC_REQUEST, GEARMAN_COMMAND_CANT_DO, |
3563 | + args, args_size, 1); |
3564 | if (ret != GEARMAN_SUCCESS) |
3565 | { |
3566 | function->options&= |
3567 | @@ -335,9 +339,11 @@ |
3568 | |
3569 | gearman_packet_free(&(worker->function_list->packet)); |
3570 | |
3571 | - ret= gearman_packet_add(worker->gearman, &(worker->function_list->packet), |
3572 | - GEARMAN_MAGIC_REQUEST, |
3573 | - GEARMAN_COMMAND_RESET_ABILITIES, NULL); |
3574 | + ret= gearman_add_packet_args(worker->gearman, |
3575 | + &(worker->function_list->packet), |
3576 | + GEARMAN_MAGIC_REQUEST, |
3577 | + GEARMAN_COMMAND_RESET_ABILITIES, |
3578 | + NULL, NULL, 0); |
3579 | if (ret != GEARMAN_SUCCESS) |
3580 | { |
3581 | worker->function_list->options&= |
3582 | @@ -419,7 +425,7 @@ |
3583 | |
3584 | if (worker->function_list == NULL) |
3585 | { |
3586 | - gearman_error_set(worker->gearman, "gearman_worker_grab_job", |
3587 | + gearman_set_error(worker->gearman, "gearman_worker_grab_job", |
3588 | "no functions have been registered"); |
3589 | *ret_ptr= GEARMAN_NO_REGISTERED_FUNCTIONS; |
3590 | return NULL; |
3591 | @@ -521,7 +527,7 @@ |
3592 | |
3593 | if (worker->job->assigned.command != GEARMAN_COMMAND_NOOP) |
3594 | { |
3595 | - gearman_error_set(worker->gearman, "gearman_worker_grab_job", |
3596 | + gearman_set_error(worker->gearman, "gearman_worker_grab_job", |
3597 | "unexpected packet:%s", |
3598 | gearman_command_info_list[worker->job->assigned.command].name); |
3599 | gearman_packet_free(&(worker->job->assigned)); |
3600 | @@ -588,7 +594,7 @@ |
3601 | |
3602 | if (worker->options & GEARMAN_WORKER_TIMEOUT_RETURN) |
3603 | { |
3604 | - gearman_error_set(worker->gearman, "gearman_worker_grab_job", |
3605 | + gearman_set_error(worker->gearman, "gearman_worker_grab_job", |
3606 | "timeout reached"); |
3607 | *ret_ptr= GEARMAN_TIMEOUT; |
3608 | return NULL; |
3609 | @@ -597,7 +603,7 @@ |
3610 | } |
3611 | else |
3612 | { |
3613 | - *ret_ptr= gearman_con_wait(worker->gearman); |
3614 | + *ret_ptr= gearman_wait(worker->gearman); |
3615 | if (*ret_ptr != GEARMAN_SUCCESS && (*ret_ptr != GEARMAN_TIMEOUT || |
3616 | worker->options & GEARMAN_WORKER_TIMEOUT_RETURN)) |
3617 | { |
3618 | @@ -608,7 +614,7 @@ |
3619 | break; |
3620 | |
3621 | default: |
3622 | - gearman_error_set(worker->gearman, "gearman_worker_grab_job", |
3623 | + gearman_set_error(worker->gearman, "gearman_worker_grab_job", |
3624 | "unknown state: %u", worker->state); |
3625 | *ret_ptr= GEARMAN_UNKNOWN_STATE; |
3626 | return NULL; |
3627 | @@ -650,14 +656,14 @@ |
3628 | { |
3629 | if (function_name == NULL) |
3630 | { |
3631 | - gearman_error_set(worker->gearman, "gearman_worker_add_function", |
3632 | + gearman_set_error(worker->gearman, "gearman_worker_add_function", |
3633 | "function name not given"); |
3634 | return GEARMAN_INVALID_FUNCTION_NAME; |
3635 | } |
3636 | |
3637 | if (worker_fn == NULL) |
3638 | { |
3639 | - gearman_error_set(worker->gearman, "gearman_worker_add_function", |
3640 | + gearman_set_error(worker->gearman, "gearman_worker_add_function", |
3641 | "function not given"); |
3642 | return GEARMAN_INVALID_WORKER_FUNCTION; |
3643 | } |
3644 | @@ -691,7 +697,7 @@ |
3645 | if (worker->work_function == NULL) |
3646 | { |
3647 | gearman_job_free(&(worker->work_job)); |
3648 | - gearman_error_set(worker->gearman, "gearman_worker_work", |
3649 | + gearman_set_error(worker->gearman, "gearman_worker_work", |
3650 | "function not found"); |
3651 | return GEARMAN_INVALID_FUNCTION_NAME; |
3652 | } |
3653 | @@ -699,7 +705,7 @@ |
3654 | if (worker->work_function->worker_fn == NULL) |
3655 | { |
3656 | gearman_job_free(&(worker->work_job)); |
3657 | - gearman_error_set(worker->gearman, "gearman_worker_work", |
3658 | + gearman_set_error(worker->gearman, "gearman_worker_work", |
3659 | "no callback function supplied"); |
3660 | return GEARMAN_INVALID_FUNCTION_NAME; |
3661 | } |
3662 | @@ -708,10 +714,9 @@ |
3663 | worker->work_result_size= 0; |
3664 | |
3665 | case GEARMAN_WORKER_WORK_STATE_FUNCTION: |
3666 | - worker->work_result= (*(worker->work_function->worker_fn))( |
3667 | - &(worker->work_job), |
3668 | - (void *)(worker->work_function->context), |
3669 | - &(worker->work_result_size), &ret); |
3670 | + worker->work_result= worker->work_function->worker_fn(&(worker->work_job), |
3671 | + (void *)worker->work_function->context, |
3672 | + &(worker->work_result_size), &ret); |
3673 | if (ret == GEARMAN_WORK_FAIL) |
3674 | { |
3675 | ret= gearman_job_send_fail(&(worker->work_job)); |
3676 | @@ -752,7 +757,7 @@ |
3677 | else |
3678 | { |
3679 | worker->gearman->workload_free_fn(worker->work_result, |
3680 | - (void *)(worker->gearman->workload_free_context)); |
3681 | + (void *)worker->gearman->workload_free_context); |
3682 | } |
3683 | worker->work_result= NULL; |
3684 | } |
3685 | @@ -780,7 +785,7 @@ |
3686 | break; |
3687 | |
3688 | default: |
3689 | - gearman_error_set(worker->gearman, "gearman_worker_work", |
3690 | + gearman_set_error(worker->gearman, "gearman_worker_work", |
3691 | "unknown state: %u", worker->work_state); |
3692 | return GEARMAN_UNKNOWN_STATE; |
3693 | } |
3694 | @@ -795,11 +800,11 @@ |
3695 | const void *workload, |
3696 | size_t workload_size) |
3697 | { |
3698 | - return gearman_con_echo(worker->gearman, workload, workload_size); |
3699 | + return gearman_echo(worker->gearman, workload, workload_size); |
3700 | } |
3701 | |
3702 | /* |
3703 | - * Private definitions |
3704 | + * Static Definitions |
3705 | */ |
3706 | |
3707 | static gearman_worker_st *_worker_allocate(gearman_worker_st *worker) |
3708 | @@ -836,15 +841,15 @@ |
3709 | { |
3710 | gearman_return_t ret; |
3711 | |
3712 | - ret= gearman_packet_add(worker->gearman, &(worker->grab_job), |
3713 | - GEARMAN_MAGIC_REQUEST, GEARMAN_COMMAND_GRAB_JOB, |
3714 | - NULL); |
3715 | + ret= gearman_add_packet_args(worker->gearman, &(worker->grab_job), |
3716 | + GEARMAN_MAGIC_REQUEST, GEARMAN_COMMAND_GRAB_JOB, |
3717 | + NULL, NULL, 0); |
3718 | if (ret != GEARMAN_SUCCESS) |
3719 | return ret; |
3720 | |
3721 | - ret= gearman_packet_add(worker->gearman, &(worker->pre_sleep), |
3722 | - GEARMAN_MAGIC_REQUEST, GEARMAN_COMMAND_PRE_SLEEP, |
3723 | - NULL); |
3724 | + ret= gearman_add_packet_args(worker->gearman, &(worker->pre_sleep), |
3725 | + GEARMAN_MAGIC_REQUEST, GEARMAN_COMMAND_PRE_SLEEP, |
3726 | + NULL, NULL, 0); |
3727 | if (ret != GEARMAN_SUCCESS) |
3728 | { |
3729 | gearman_packet_free(&(worker->grab_job)); |
3730 | @@ -871,11 +876,13 @@ |
3731 | gearman_worker_function_st *function; |
3732 | gearman_return_t ret; |
3733 | char timeout_buffer[11]; |
3734 | + const void *args[2]; |
3735 | + size_t args_size[2]; |
3736 | |
3737 | function= malloc(sizeof(gearman_worker_function_st)); |
3738 | if (function == NULL) |
3739 | { |
3740 | - gearman_error_set(worker->gearman, "_worker_function_add", "malloc"); |
3741 | + gearman_set_error(worker->gearman, "_worker_function_add", "malloc"); |
3742 | return GEARMAN_MEMORY_ALLOCATION_FAILURE; |
3743 | } |
3744 | |
3745 | @@ -886,7 +893,7 @@ |
3746 | if (function->function_name == NULL) |
3747 | { |
3748 | free(function); |
3749 | - gearman_error_set(worker->gearman, "gearman_worker_add_function", "strdup"); |
3750 | + gearman_set_error(worker->gearman, "gearman_worker_add_function", "strdup"); |
3751 | return GEARMAN_MEMORY_ALLOCATION_FAILURE; |
3752 | } |
3753 | |
3754 | @@ -896,20 +903,22 @@ |
3755 | if (timeout > 0) |
3756 | { |
3757 | snprintf(timeout_buffer, 11, "%u", timeout); |
3758 | - ret= gearman_packet_add(worker->gearman, &(function->packet), |
3759 | - GEARMAN_MAGIC_REQUEST, |
3760 | - GEARMAN_COMMAND_CAN_DO_TIMEOUT, |
3761 | - (uint8_t *)function_name, |
3762 | - strlen(function_name) + 1, |
3763 | - (uint8_t *)timeout_buffer, |
3764 | - strlen(timeout_buffer), NULL); |
3765 | + args[0]= function_name; |
3766 | + args_size[0]= strlen(function_name) + 1; |
3767 | + args[1]= timeout_buffer; |
3768 | + args_size[1]= strlen(timeout_buffer); |
3769 | + ret= gearman_add_packet_args(worker->gearman, &(function->packet), |
3770 | + GEARMAN_MAGIC_REQUEST, |
3771 | + GEARMAN_COMMAND_CAN_DO_TIMEOUT, |
3772 | + args, args_size, 2); |
3773 | } |
3774 | else |
3775 | { |
3776 | - ret= gearman_packet_add(worker->gearman, &(function->packet), |
3777 | - GEARMAN_MAGIC_REQUEST, GEARMAN_COMMAND_CAN_DO, |
3778 | - (uint8_t *)function_name, strlen(function_name), |
3779 | - NULL); |
3780 | + args[0]= function_name; |
3781 | + args_size[0]= strlen(function_name); |
3782 | + ret= gearman_add_packet_args(worker->gearman, &(function->packet), |
3783 | + GEARMAN_MAGIC_REQUEST, GEARMAN_COMMAND_CAN_DO, |
3784 | + args, args_size, 1); |
3785 | } |
3786 | if (ret != GEARMAN_SUCCESS) |
3787 | { |
3788 | @@ -956,7 +965,7 @@ |
3789 | job= malloc(sizeof(gearman_job_st)); |
3790 | if (job == NULL) |
3791 | { |
3792 | - gearman_error_set(worker->gearman, "_job_create", "malloc"); |
3793 | + gearman_set_error(worker->gearman, "_job_create", "malloc"); |
3794 | return NULL; |
3795 | } |
3796 | |
3797 | |
3798 | === modified file 'libgearman/worker.h' |
3799 | --- libgearman/worker.h 2009-10-02 01:13:31 +0000 |
3800 | +++ libgearman/worker.h 2009-11-04 22:14:14 +0000 |
3801 | @@ -8,7 +8,7 @@ |
3802 | |
3803 | /** |
3804 | * @file |
3805 | - * @brief Worker declarations |
3806 | + * @brief Worker Declarations |
3807 | */ |
3808 | |
3809 | #ifndef __GEARMAN_WORKER_H__ |
3810 | @@ -19,7 +19,8 @@ |
3811 | #endif |
3812 | |
3813 | /** |
3814 | - * @addtogroup gearman_worker Worker Interface |
3815 | + * @addtogroup gearman_worker Worker Declarations |
3816 | + * |
3817 | * This is the interface gearman workers should use. |
3818 | * |
3819 | * @ref main_page_worker "See Main Page for full details." |
3820 | |
3821 | === modified file 'tests/client_test.c' |
3822 | --- tests/client_test.c 2009-09-26 09:21:13 +0000 |
3823 | +++ tests/client_test.c 2009-11-04 22:14:14 +0000 |
3824 | @@ -45,8 +45,8 @@ |
3825 | test_return post(void *object); |
3826 | test_return flush(void); |
3827 | |
3828 | -void *client_test_worker(gearman_job_st *job, void *cb_arg, size_t *result_size, |
3829 | - gearman_return_t *ret_ptr); |
3830 | +void *client_test_worker(gearman_job_st *job, void *context, |
3831 | + size_t *result_size, gearman_return_t *ret_ptr); |
3832 | void *world_create(void); |
3833 | void world_destroy(void *object); |
3834 | |
3835 | @@ -292,7 +292,8 @@ |
3836 | return TEST_SUCCESS; |
3837 | } |
3838 | |
3839 | -static void log_counter(const char *line, gearman_verbose_t verbose, void *context) |
3840 | +static void log_counter(const char *line, gearman_verbose_t verbose, |
3841 | + void *context) |
3842 | { |
3843 | uint32_t *counter= (uint32_t *)context; |
3844 | |
3845 | @@ -323,12 +324,12 @@ |
3846 | } |
3847 | |
3848 | |
3849 | -void *client_test_worker(gearman_job_st *job, void *cb_arg, size_t *result_size, |
3850 | - gearman_return_t *ret_ptr) |
3851 | +void *client_test_worker(gearman_job_st *job, void *context, |
3852 | + size_t *result_size, gearman_return_t *ret_ptr) |
3853 | { |
3854 | const uint8_t *workload; |
3855 | uint8_t *result; |
3856 | - (void)cb_arg; |
3857 | + (void)context; |
3858 | |
3859 | workload= gearman_job_workload(job); |
3860 | *result_size= gearman_job_workload_size(job); |
3861 | |
3862 | === modified file 'tests/memcached_test.c' |
3863 | --- tests/memcached_test.c 2009-07-28 07:12:24 +0000 |
3864 | +++ tests/memcached_test.c 2009-11-04 22:14:14 +0000 |
3865 | @@ -43,8 +43,7 @@ |
3866 | |
3867 | /* Counter test for worker */ |
3868 | static void *counter_function(gearman_job_st *job __attribute__((unused)), |
3869 | - void *context, |
3870 | - size_t *result_size, |
3871 | + void *context, size_t *result_size, |
3872 | gearman_return_t *ret_ptr __attribute__((unused))) |
3873 | { |
3874 | uint32_t *counter= (uint32_t *)context; |
3875 | |
3876 | === modified file 'tests/sqlite_test.c' |
3877 | --- tests/sqlite_test.c 2009-10-11 07:24:42 +0000 |
3878 | +++ tests/sqlite_test.c 2009-11-04 22:14:14 +0000 |
3879 | @@ -43,8 +43,7 @@ |
3880 | |
3881 | /* Counter test for worker */ |
3882 | static void *counter_function(gearman_job_st *job __attribute__((unused)), |
3883 | - void *context, |
3884 | - size_t *result_size, |
3885 | + void *context, size_t *result_size, |
3886 | gearman_return_t *ret_ptr __attribute__((unused))) |
3887 | { |
3888 | uint32_t *counter= (uint32_t *)context; |
3889 | |
3890 | === modified file 'tests/worker_test.c' |
3891 | --- tests/worker_test.c 2009-09-23 21:05:40 +0000 |
3892 | +++ tests/worker_test.c 2009-11-04 22:14:14 +0000 |
3893 | @@ -107,46 +107,51 @@ |
3894 | gearman_con_st con; |
3895 | gearman_packet_st packet; |
3896 | uint32_t x; |
3897 | + const void *args[1]; |
3898 | + size_t args_size[1]; |
3899 | |
3900 | if (gearman_create(&gearman) == NULL) |
3901 | return TEST_FAILURE; |
3902 | |
3903 | for (x= 0; x < 2; x++) |
3904 | { |
3905 | - if (gearman_con_create(&gearman, &con) == NULL) |
3906 | + if (gearman_add_con(&gearman, &con) == NULL) |
3907 | return TEST_FAILURE; |
3908 | |
3909 | gearman_con_set_host(&con, NULL); |
3910 | gearman_con_set_port(&con, WORKER_TEST_PORT); |
3911 | |
3912 | - if (gearman_packet_add(&gearman, &packet, GEARMAN_MAGIC_REQUEST, |
3913 | - GEARMAN_COMMAND_SET_CLIENT_ID, |
3914 | - (uint8_t *)"testUnregisterFunction", 13, |
3915 | - NULL) != GEARMAN_SUCCESS) |
3916 | - { |
3917 | - return TEST_FAILURE; |
3918 | - } |
3919 | - |
3920 | - if (gearman_con_send(&con, &packet, true) != GEARMAN_SUCCESS) |
3921 | - return TEST_FAILURE; |
3922 | - |
3923 | - gearman_packet_free(&packet); |
3924 | - |
3925 | - if (gearman_packet_add(&gearman, &packet, GEARMAN_MAGIC_REQUEST, |
3926 | - GEARMAN_COMMAND_CAN_DO, (uint8_t *)"reverse", 7, |
3927 | - NULL) != GEARMAN_SUCCESS) |
3928 | - { |
3929 | - return TEST_FAILURE; |
3930 | - } |
3931 | - |
3932 | - if (gearman_con_send(&con, &packet, true) != GEARMAN_SUCCESS) |
3933 | - return TEST_FAILURE; |
3934 | - |
3935 | - gearman_packet_free(&packet); |
3936 | - |
3937 | - if (gearman_packet_add(&gearman, &packet, GEARMAN_MAGIC_REQUEST, |
3938 | - GEARMAN_COMMAND_CANT_DO, (uint8_t *)"reverse", 7, |
3939 | - NULL) != GEARMAN_SUCCESS) |
3940 | + args[0]= "testUnregisterFunction"; |
3941 | + args_size[0]= strlen("testUnregisterFunction"); |
3942 | + if (gearman_add_packet_args(&gearman, &packet, GEARMAN_MAGIC_REQUEST, |
3943 | + GEARMAN_COMMAND_SET_CLIENT_ID, |
3944 | + args, args_size, 1) != GEARMAN_SUCCESS) |
3945 | + { |
3946 | + return TEST_FAILURE; |
3947 | + } |
3948 | + |
3949 | + if (gearman_con_send(&con, &packet, true) != GEARMAN_SUCCESS) |
3950 | + return TEST_FAILURE; |
3951 | + |
3952 | + gearman_packet_free(&packet); |
3953 | + |
3954 | + args[0]= "reverse"; |
3955 | + args_size[0]= strlen("reverse"); |
3956 | + if (gearman_add_packet_args(&gearman, &packet, GEARMAN_MAGIC_REQUEST, |
3957 | + GEARMAN_COMMAND_CAN_DO, |
3958 | + args, args_size, 1) != GEARMAN_SUCCESS) |
3959 | + { |
3960 | + return TEST_FAILURE; |
3961 | + } |
3962 | + |
3963 | + if (gearman_con_send(&con, &packet, true) != GEARMAN_SUCCESS) |
3964 | + return TEST_FAILURE; |
3965 | + |
3966 | + gearman_packet_free(&packet); |
3967 | + |
3968 | + if (gearman_add_packet_args(&gearman, &packet, GEARMAN_MAGIC_REQUEST, |
3969 | + GEARMAN_COMMAND_CANT_DO, |
3970 | + args, args_size, 1) != GEARMAN_SUCCESS) |
3971 | { |
3972 | return TEST_FAILURE; |
3973 | } |
3974 | @@ -158,52 +163,57 @@ |
3975 | |
3976 | gearman_con_free(&con); |
3977 | |
3978 | - if (gearman_con_create(&gearman, &con) == NULL) |
3979 | + if (gearman_add_con(&gearman, &con) == NULL) |
3980 | return TEST_FAILURE; |
3981 | |
3982 | gearman_con_set_host(&con, NULL); |
3983 | gearman_con_set_port(&con, WORKER_TEST_PORT); |
3984 | |
3985 | - if (gearman_packet_add(&gearman, &packet, GEARMAN_MAGIC_REQUEST, |
3986 | - GEARMAN_COMMAND_SET_CLIENT_ID, |
3987 | - (uint8_t *)"testUnregisterFunction", 13, |
3988 | - NULL) != GEARMAN_SUCCESS) |
3989 | - { |
3990 | - return TEST_FAILURE; |
3991 | - } |
3992 | - |
3993 | - if (gearman_con_send(&con, &packet, true) != GEARMAN_SUCCESS) |
3994 | - return TEST_FAILURE; |
3995 | - |
3996 | - gearman_packet_free(&packet); |
3997 | - |
3998 | - if (gearman_packet_add(&gearman, &packet, GEARMAN_MAGIC_REQUEST, |
3999 | - GEARMAN_COMMAND_CAN_DO, (uint8_t *)"digest", 6, |
4000 | - NULL) != GEARMAN_SUCCESS) |
4001 | - { |
4002 | - return TEST_FAILURE; |
4003 | - } |
4004 | - |
4005 | - if (gearman_con_send(&con, &packet, true) != GEARMAN_SUCCESS) |
4006 | - return TEST_FAILURE; |
4007 | - |
4008 | - gearman_packet_free(&packet); |
4009 | - |
4010 | - if (gearman_packet_add(&gearman, &packet, GEARMAN_MAGIC_REQUEST, |
4011 | - GEARMAN_COMMAND_CAN_DO, (uint8_t *)"reverse", 7, |
4012 | - NULL) != GEARMAN_SUCCESS) |
4013 | - { |
4014 | - return TEST_FAILURE; |
4015 | - } |
4016 | - |
4017 | - if (gearman_con_send(&con, &packet, true) != GEARMAN_SUCCESS) |
4018 | - return TEST_FAILURE; |
4019 | - |
4020 | - gearman_packet_free(&packet); |
4021 | - |
4022 | - if (gearman_packet_add(&gearman, &packet, GEARMAN_MAGIC_REQUEST, |
4023 | - GEARMAN_COMMAND_RESET_ABILITIES, |
4024 | - NULL) != GEARMAN_SUCCESS) |
4025 | + args[0]= "testUnregisterFunction"; |
4026 | + args_size[0]= strlen("testUnregisterFunction"); |
4027 | + if (gearman_add_packet_args(&gearman, &packet, GEARMAN_MAGIC_REQUEST, |
4028 | + GEARMAN_COMMAND_SET_CLIENT_ID, |
4029 | + args, args_size, 1) != GEARMAN_SUCCESS) |
4030 | + { |
4031 | + return TEST_FAILURE; |
4032 | + } |
4033 | + |
4034 | + if (gearman_con_send(&con, &packet, true) != GEARMAN_SUCCESS) |
4035 | + return TEST_FAILURE; |
4036 | + |
4037 | + gearman_packet_free(&packet); |
4038 | + |
4039 | + args[0]= "digest"; |
4040 | + args_size[0]= strlen("digest"); |
4041 | + if (gearman_add_packet_args(&gearman, &packet, GEARMAN_MAGIC_REQUEST, |
4042 | + GEARMAN_COMMAND_CAN_DO, |
4043 | + args, args_size, 1) != GEARMAN_SUCCESS) |
4044 | + { |
4045 | + return TEST_FAILURE; |
4046 | + } |
4047 | + |
4048 | + if (gearman_con_send(&con, &packet, true) != GEARMAN_SUCCESS) |
4049 | + return TEST_FAILURE; |
4050 | + |
4051 | + gearman_packet_free(&packet); |
4052 | + |
4053 | + args[0]= "reverse"; |
4054 | + args_size[0]= strlen("reverse"); |
4055 | + if (gearman_add_packet_args(&gearman, &packet, GEARMAN_MAGIC_REQUEST, |
4056 | + GEARMAN_COMMAND_CAN_DO, |
4057 | + args, args_size, 1) != GEARMAN_SUCCESS) |
4058 | + { |
4059 | + return TEST_FAILURE; |
4060 | + } |
4061 | + |
4062 | + if (gearman_con_send(&con, &packet, true) != GEARMAN_SUCCESS) |
4063 | + return TEST_FAILURE; |
4064 | + |
4065 | + gearman_packet_free(&packet); |
4066 | + |
4067 | + if (gearman_add_packet_args(&gearman, &packet, GEARMAN_MAGIC_REQUEST, |
4068 | + GEARMAN_COMMAND_RESET_ABILITIES, |
4069 | + NULL, NULL, 0) != GEARMAN_SUCCESS) |
4070 | { |
4071 | return TEST_FAILURE; |
4072 | } |