GEARMAN_WORKER_DEFINE_FUNCTION(3)

NAME
gearman_worker_define_function - Gearmand Documentation, http://gearman.info/

SYNOPSIS

#include <libgearman/gearman.h>

    type gearman_function_t

    gearman_return_t <#c.gearman_return_t> gearman_worker_define_function(gearman_worker_st <#c.gearman_worker_st> *worker, const char *function_name, const size_t <#c.size_t> function_name_length, const gearman_function_t function, const uint32_t <#c.uint32_t> timeout, void *context)

    type gearman_function_fn

    type gearman_aggregator_fn

Link with -lgearman

DESCRIPTION

gearman_worker_define_function() defines functions for a worker.

The interface is callback by design. When the server has a job for the worker, gearman_function_fn is evoked with a gearman_job_st <#c.gearman_job_st> representing the job, and the context that was defined originally when the function was defined.

Results are sent back to the client by invoking gearman_job_send_data() <#c.gearman_job_send_data>.

If the client specified an reducer function, then the output of the gearman_function_fn will be sent to that function. You can split the work out to the reducer function by sending data multiple times with gearman_job_send_data() <#c.gearman_job_send_data>.

If any errors are detected then the entire job is cancelled. The gearman_aggregator_fn will be called when all mapped jobs have completed. The result of this function will be what is returned to the client.

The callback function needs to return one of the following errors:

GEARMAN_SUCCESS <#c.GEARMAN_SUCCESS>

The function was successful.

GEARMAN_FAIL <#c.GEARMAN_FAIL>

An error has occurred, the job we not processed, and the worker cannot continue.

GEARMAN_ERROR <#c.GEARMAN_ERROR>

A transient error has occurred, like a network failure, and the job can be restarted.

If a value other then the above are returned it is converted to a GEARMAN_FAIL <#c.GEARMAN_FAIL> and gearman_worker_work() <#c.gearman_worker_work> returns GEARMAN_INVALID_ARGUMENT <#c.GEARMAN_INVALID_ARGUMENT>.

gearman_job_send_complete() <#c.gearman_job_send_complete> and gearman_job_send_fail() <#c.gearman_job_send_fail> cannot be used with any functions created with gearman_worker_define_function().

RETURN VALUE

gearman_return_t <#c.gearman_return_t>

HOME

To find out more information please check: <http://gearman.info/>

SEE ALSO

gearmand(8) libgearman(3) gearman_strerror(3) gearman_client_error gearman_client_execute_reduce

Author
Data Differential http://www.datadifferential.com/

Copyright
2011-2014, Data Differential, http://www.datadifferential.com/