# Error Codes (gearman_return_t)

## SYNOPSIS

#include <libgearman/gearman.h>

type gearman_return_t

const char *gearman_strerror(gearman_return_t rc)

bool gearman_success(gearman_return_t rc)

bool gearman_failed(gearman_return_t rc)

bool gearman_continue(gearman_return_t rc)

Compile and link with -lgearman

## DESCRIPTION

`gearman_return_t` is used as a return/error type for all calls using `gearman_client_st` and `gearman_worker_st`. `GEARMAN_SUCCESS` is returned upon success, otherwise an error is returned. `gearman_failed()` can be used to see if the return value is a failing value. You can print a text version of the error message with `gearman_strerror()`.

`gearman_success()` return true if `GEARMAN_SUCCESS` or if `GEARMAN_NO_PENDING_TASKS` tests true.

`gearman_failed()` return true if any value other then `GEARMAN_SUCCESS` was provided.

`gearman_continue()` returns true if any error related to non-blocking IO occurred. This should be used for testing loops.

### Possible values of `gearman_return_t`:

type GEARMAN_SUCCESS

  Success

type GEARMAN_NO_PENDING_TASKS

  `gearman_client_run_tasks()` was called and it has completed all tasks assigned to the client.

type GEARMAN_IO_WAIT

  Blocking IO was found. gearman_continue() can be used to test for this.

type GEARMAN_ERRNO

  System error occurred. Use either `gearman_client_errno()` or `gearman_worker_errno()`

type GEARMAN_NO_ACTIVE_FDS

  No active connections were available. gearman_continue() can be used to test for this.

type GEARMAN_GETADDRINFO

  Name resolution failed for a host.

type GEARMAN_NO_SERVERS

  No servers have been provided for the client/worker.

type GEARMAN_LOST_CONNECTION

  Connection was lost to the given server.

type GEARMAN_MEMORY_ALLOCATION_FAILURE

  Memory allocation failed.

type GEARMAN_SERVER_ERROR

  An error occurred on the server.

type GEARMAN_NOT_CONNECTED

  Client/Worker is not currently connected to the server.

type GEARMAN_COULD_NOT_CONNECT

  Server name was valid, but a connection could not be made.

type GEARMAN_ECHO_DATA_CORRUPTION

  Either `gearman_client_echo()` or `gearman_worker_echo()` echo was unsuccessful because the data was returned from gearmand corrupted.

type GEARMAN_UNKNOWN_STATE

  The gearman_return_t was never set.

type GEARMAN_FLUSH_DATA

  Internal state, should never be seen by either client or worker.

type GEARMAN_SEND_BUFFER_TOO_SMALL

  Send buffer was too small.

type GEARMAN_TIMEOUT

  A timeout occurred when making a request to the server.

type GEARMAN_ARGUMENT_TOO_LARGE

  Argument was too large for the current buffer.

type GEARMAN_INVALID_ARGUMENT

  One of the arguments to the given API call was invalid. EINVAL will be set if `gearman_client_error()` or `gearman_worker_error()` were not settable. This can also be returned if `GEARMAN_CLIENT_UNBUFFERED_RESULT` was set, but the client is not handling the data correctly.

#### CLIENT ONLY

type GEARMAN_NEED_WORKLOAD_FN

  A client was asked for work, but no `gearman_workload_fn` callback was specified. See `gearman_client_set_workload_fn()`

type GEARMAN_WORK_FAIL

  A task has failed, and the worker has exited with an error or it called `gearman_job_send_fail()`

type GEARMAN_IN_PROGRESS

  `gearman_client_job_status()` has been called for a `gearman_job_handle_t` and the Job is currently being run by a worker.

type GEARMAN_JOB_EXISTS

  `gearman_client_job_status()` has been called for a `gearman_job_handle_t` and the Job is currently known by a server, but is not being run by a worker.

#### WORKER ONLY

type GEARMAN_INVALID_FUNCTION_NAME

  A worker was sent a request for a job that it did not have a valid function for.

type GEARMAN_INVALID_WORKER_FUNCTION

  No callback was provided by the worker for a given function.

type GEARMAN_NO_REGISTERED_FUNCTION

  A request for removing a given function from a worker was invalid since that function did not exist.

type GEARMAN_NO_REGISTERED_FUNCTIONS

  The worker has not registered any functions.

type GEARMAN_NO_JOBS

  No jobs were found for the worker. This error code is only returned if the worker has just made a request for jobs.

#### WORKER TO CLIENT

Client which have registered a custom `gearman_actions_t` may use these value as return values to the calling client.

type GEARMAN_WORK_DATA

  Worker has sent a chunked piece of data to the client via `gearman_job_send_data()`

type GEARMAN_WORK_WARNING

  Worker has issued a warning to the client via `gearman_job_send_warning()`

type GEARMAN_WORK_STATUS

  Status has been updated by the worker via `gearman_job_send_status()`

type GEARMAN_WORK_EXCEPTION

  Worker has sent an exception the client via `gearman_job_send_exception()`

type GEARMAN_WORK_FAIL

  A task has failed, and the worker has exited with an error or it called `gearman_job_send_fail()`

type GEARMAN_WORK_ERROR

  A task has had an error and will be retried.

type GEARMAN_PAUSE

  Used only in custom application for client return based on `GEARMAN_WORK_DATA`, `GEARMAN_WORK_WARNING`, `GEARMAN_WORK_EXCEPTION`, `GEARMAN_WORK_FAIL`, or `GEARMAN_WORK_STATUS`. `gearman_continue()` can be used to check for this value.

#### WORKER TO CLIENT

Any function defined by `gearman_worker_define_function()` may, and can only, return the following `gearman_return_t` values.

type GEARMAN_SUCCESS

  The function successfully completed the job.

type GEARMAN_FATAL

type GEARMAN_FAIL

  The function failed to complete the job. `GEARMAN_FATAL` is the deprecated name for `GEARMAN_FAIL`

type GEARMAN_ERROR

  A task has had an error and will be retried.

type GEARMAN_SHUTDOWN

  `GEARMAN_SHUTDOWN` is a special case. If it is returned the client will be sent `GEARMAN_SUCCESS`, but `gearman_worker_work()` will exit with `GEARMAN_SHUTDOWN`.

#### TASK ONLY

type GEARMAN_NOT_FLUSHING

  `gearman_task_send_workload()` failed, it was not in the correct state.

type GEARMAN_DATA_TOO_LARGE

  `gearman_task_send_workload()` failed, the data was too large to be sent.

type GEARMAN_UNKNOWN_OPTION

  Default state of task return value.

#### PROTOCOL

If any of these errors occurred the connection will be dropped/reset.

type GEARMAN_INVALID_MAGIC

type GEARMAN_INVALID_COMMAND

type GEARMAN_INVALID_PACKET

type GEARMAN_UNEXPECTED_PACKET

type GEARMAN_TOO_MANY_ARGS

#### DEPRECATED

type GEARMAN_IGNORE_PACKET

type GEARMAN_MAX_RETURN

## SEE ALSO

gearmand(8) libgearman(3) gearman_client_error() or gearman_worker_error()