|
@@ -241,361 +241,454 @@ static inline void gearman_job_reset_error(gearman_job_st *job)
|
|
|
|
|
|
gearman_return_t gearman_job_send_data(gearman_job_st *job, const void *data, size_t data_size)
|
|
|
{
|
|
|
- const void *args[2];
|
|
|
- size_t args_size[2];
|
|
|
-
|
|
|
- if (job->reducer)
|
|
|
+ if (job)
|
|
|
{
|
|
|
- gearman_argument_t value= gearman_argument_make(NULL, 0, static_cast<const char *>(data), data_size);
|
|
|
- job->reducer->add(value);
|
|
|
+ const void *args[2];
|
|
|
+ size_t args_size[2];
|
|
|
|
|
|
- return GEARMAN_SUCCESS;
|
|
|
- }
|
|
|
+ if (job->reducer)
|
|
|
+ {
|
|
|
+ gearman_argument_t value= gearman_argument_make(NULL, 0, static_cast<const char *>(data), data_size);
|
|
|
+ job->reducer->add(value);
|
|
|
|
|
|
- if ((job->options.work_in_use) == false)
|
|
|
- {
|
|
|
- args[0]= job->assigned.arg[0];
|
|
|
- args_size[0]= job->assigned.arg_size[0];
|
|
|
- args[1]= data;
|
|
|
- args_size[1]= data_size;
|
|
|
- gearman_return_t ret= gearman_packet_create_args(job->worker->impl()->universal, job->work,
|
|
|
- GEARMAN_MAGIC_REQUEST,
|
|
|
- GEARMAN_COMMAND_WORK_DATA,
|
|
|
- args, args_size, 2);
|
|
|
- if (gearman_failed(ret))
|
|
|
+ return GEARMAN_SUCCESS;
|
|
|
+ }
|
|
|
+
|
|
|
+ if ((job->options.work_in_use) == false)
|
|
|
{
|
|
|
- return ret;
|
|
|
+ args[0]= job->assigned.arg[0];
|
|
|
+ args_size[0]= job->assigned.arg_size[0];
|
|
|
+ args[1]= data;
|
|
|
+ args_size[1]= data_size;
|
|
|
+ gearman_return_t ret= gearman_packet_create_args(job->worker->impl()->universal, job->work,
|
|
|
+ GEARMAN_MAGIC_REQUEST,
|
|
|
+ GEARMAN_COMMAND_WORK_DATA,
|
|
|
+ args, args_size, 2);
|
|
|
+ if (gearman_failed(ret))
|
|
|
+ {
|
|
|
+ return ret;
|
|
|
+ }
|
|
|
+
|
|
|
+ job->options.work_in_use= true;
|
|
|
}
|
|
|
|
|
|
- job->options.work_in_use= true;
|
|
|
+ return _job_send(job);
|
|
|
}
|
|
|
|
|
|
- return _job_send(job);
|
|
|
+ return GEARMAN_INVALID_ARGUMENT;
|
|
|
}
|
|
|
|
|
|
gearman_return_t gearman_job_send_warning(gearman_job_st *job,
|
|
|
const void *warning,
|
|
|
size_t warning_size)
|
|
|
{
|
|
|
- const void *args[2];
|
|
|
- size_t args_size[2];
|
|
|
-
|
|
|
- if ((job->options.work_in_use) == false)
|
|
|
+ if (job)
|
|
|
{
|
|
|
- args[0]= job->assigned.arg[0];
|
|
|
- args_size[0]= job->assigned.arg_size[0];
|
|
|
- args[1]= warning;
|
|
|
- args_size[1]= warning_size;
|
|
|
+ const void *args[2];
|
|
|
+ size_t args_size[2];
|
|
|
|
|
|
- gearman_return_t ret;
|
|
|
- ret= gearman_packet_create_args(job->worker->impl()->universal, job->work,
|
|
|
- GEARMAN_MAGIC_REQUEST,
|
|
|
- GEARMAN_COMMAND_WORK_WARNING,
|
|
|
- args, args_size, 2);
|
|
|
- if (gearman_failed(ret))
|
|
|
+ if ((job->options.work_in_use) == false)
|
|
|
{
|
|
|
- return ret;
|
|
|
+ args[0]= job->assigned.arg[0];
|
|
|
+ args_size[0]= job->assigned.arg_size[0];
|
|
|
+ args[1]= warning;
|
|
|
+ args_size[1]= warning_size;
|
|
|
+
|
|
|
+ gearman_return_t ret;
|
|
|
+ ret= gearman_packet_create_args(job->worker->impl()->universal, job->work,
|
|
|
+ GEARMAN_MAGIC_REQUEST,
|
|
|
+ GEARMAN_COMMAND_WORK_WARNING,
|
|
|
+ args, args_size, 2);
|
|
|
+ if (gearman_failed(ret))
|
|
|
+ {
|
|
|
+ return ret;
|
|
|
+ }
|
|
|
+
|
|
|
+ job->options.work_in_use= true;
|
|
|
}
|
|
|
|
|
|
- job->options.work_in_use= true;
|
|
|
+ return _job_send(job);
|
|
|
}
|
|
|
|
|
|
- return _job_send(job);
|
|
|
+ return GEARMAN_INVALID_ARGUMENT;
|
|
|
}
|
|
|
|
|
|
gearman_return_t gearman_job_send_status(gearman_job_st *job,
|
|
|
uint32_t numerator,
|
|
|
uint32_t denominator)
|
|
|
{
|
|
|
- char numerator_string[12];
|
|
|
- char denominator_string[12];
|
|
|
- const void *args[3];
|
|
|
- size_t args_size[3];
|
|
|
-
|
|
|
- if (not (job->options.work_in_use))
|
|
|
+ if (job)
|
|
|
{
|
|
|
- snprintf(numerator_string, 12, "%u", numerator);
|
|
|
- snprintf(denominator_string, 12, "%u", denominator);
|
|
|
-
|
|
|
- args[0]= job->assigned.arg[0];
|
|
|
- args_size[0]= job->assigned.arg_size[0];
|
|
|
- args[1]= numerator_string;
|
|
|
- args_size[1]= strlen(numerator_string) + 1;
|
|
|
- args[2]= denominator_string;
|
|
|
- args_size[2]= strlen(denominator_string);
|
|
|
+ char numerator_string[12];
|
|
|
+ char denominator_string[12];
|
|
|
+ const void *args[3];
|
|
|
+ size_t args_size[3];
|
|
|
|
|
|
- gearman_return_t ret;
|
|
|
- ret= gearman_packet_create_args(job->worker->impl()->universal, job->work,
|
|
|
- GEARMAN_MAGIC_REQUEST,
|
|
|
- GEARMAN_COMMAND_WORK_STATUS,
|
|
|
- args, args_size, 3);
|
|
|
- if (gearman_failed(ret))
|
|
|
+ if (not (job->options.work_in_use))
|
|
|
{
|
|
|
- return ret;
|
|
|
+ snprintf(numerator_string, 12, "%u", numerator);
|
|
|
+ snprintf(denominator_string, 12, "%u", denominator);
|
|
|
+
|
|
|
+ args[0]= job->assigned.arg[0];
|
|
|
+ args_size[0]= job->assigned.arg_size[0];
|
|
|
+ args[1]= numerator_string;
|
|
|
+ args_size[1]= strlen(numerator_string) + 1;
|
|
|
+ args[2]= denominator_string;
|
|
|
+ args_size[2]= strlen(denominator_string);
|
|
|
+
|
|
|
+ gearman_return_t ret;
|
|
|
+ ret= gearman_packet_create_args(job->worker->impl()->universal, job->work,
|
|
|
+ GEARMAN_MAGIC_REQUEST,
|
|
|
+ GEARMAN_COMMAND_WORK_STATUS,
|
|
|
+ args, args_size, 3);
|
|
|
+ if (gearman_failed(ret))
|
|
|
+ {
|
|
|
+ return ret;
|
|
|
+ }
|
|
|
+
|
|
|
+ job->options.work_in_use= true;
|
|
|
}
|
|
|
|
|
|
- job->options.work_in_use= true;
|
|
|
+ return _job_send(job);
|
|
|
}
|
|
|
|
|
|
- return _job_send(job);
|
|
|
+ return GEARMAN_INVALID_ARGUMENT;
|
|
|
}
|
|
|
|
|
|
gearman_return_t gearman_job_send_complete(gearman_job_st *job,
|
|
|
const void *result,
|
|
|
size_t result_size)
|
|
|
{
|
|
|
- if (job->reducer)
|
|
|
+ if (job)
|
|
|
{
|
|
|
- return GEARMAN_INVALID_ARGUMENT;
|
|
|
+ if (job->reducer)
|
|
|
+ {
|
|
|
+ return GEARMAN_INVALID_ARGUMENT;
|
|
|
+ }
|
|
|
+
|
|
|
+ return gearman_job_send_complete_fin(job, result, result_size);
|
|
|
}
|
|
|
|
|
|
- return gearman_job_send_complete_fin(job, result, result_size);
|
|
|
+ return GEARMAN_INVALID_ARGUMENT;
|
|
|
}
|
|
|
|
|
|
gearman_return_t gearman_job_send_complete_fin(gearman_job_st *job,
|
|
|
const void *result, size_t result_size)
|
|
|
{
|
|
|
- if (job->options.finished)
|
|
|
- {
|
|
|
- return GEARMAN_SUCCESS;
|
|
|
- }
|
|
|
-
|
|
|
- if (job->reducer)
|
|
|
+ if (job)
|
|
|
{
|
|
|
- if (result_size)
|
|
|
+ if (job->options.finished)
|
|
|
{
|
|
|
- gearman_argument_t value= gearman_argument_make(NULL, 0, static_cast<const char *>(result), result_size);
|
|
|
- job->reducer->add(value);
|
|
|
+ return GEARMAN_SUCCESS;
|
|
|
}
|
|
|
|
|
|
- gearman_return_t rc= job->reducer->complete();
|
|
|
- if (gearman_failed(rc))
|
|
|
+ if (job->reducer)
|
|
|
{
|
|
|
- return gearman_error(job->worker->impl()->universal, rc, "The reducer's complete() returned an error");
|
|
|
- }
|
|
|
+ if (result_size)
|
|
|
+ {
|
|
|
+ gearman_argument_t value= gearman_argument_make(NULL, 0, static_cast<const char *>(result), result_size);
|
|
|
+ job->reducer->add(value);
|
|
|
+ }
|
|
|
|
|
|
- const gearman_vector_st *reduced_value= job->reducer->result.string();
|
|
|
- if (reduced_value)
|
|
|
- {
|
|
|
- result= gearman_string_value(reduced_value);
|
|
|
- result_size= gearman_string_length(reduced_value);
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- result= NULL;
|
|
|
- result_size= 0;
|
|
|
- }
|
|
|
- }
|
|
|
+ gearman_return_t rc= job->reducer->complete();
|
|
|
+ if (gearman_failed(rc))
|
|
|
+ {
|
|
|
+ return gearman_error(job->worker->impl()->universal, rc, "The reducer's complete() returned an error");
|
|
|
+ }
|
|
|
|
|
|
- const void *args[2];
|
|
|
- size_t args_size[2];
|
|
|
+ const gearman_vector_st *reduced_value= job->reducer->result.string();
|
|
|
+ if (reduced_value)
|
|
|
+ {
|
|
|
+ result= gearman_string_value(reduced_value);
|
|
|
+ result_size= gearman_string_length(reduced_value);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ result= NULL;
|
|
|
+ result_size= 0;
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
- if (not (job->options.work_in_use))
|
|
|
- {
|
|
|
- args[0]= job->assigned.arg[0];
|
|
|
- args_size[0]= job->assigned.arg_size[0];
|
|
|
+ const void *args[2];
|
|
|
+ size_t args_size[2];
|
|
|
|
|
|
- args[1]= result;
|
|
|
- args_size[1]= result_size;
|
|
|
- gearman_return_t ret= gearman_packet_create_args(job->worker->impl()->universal, job->work,
|
|
|
- GEARMAN_MAGIC_REQUEST,
|
|
|
- GEARMAN_COMMAND_WORK_COMPLETE,
|
|
|
- args, args_size, 2);
|
|
|
+ if (not (job->options.work_in_use))
|
|
|
+ {
|
|
|
+ args[0]= job->assigned.arg[0];
|
|
|
+ args_size[0]= job->assigned.arg_size[0];
|
|
|
+
|
|
|
+ args[1]= result;
|
|
|
+ args_size[1]= result_size;
|
|
|
+ gearman_return_t ret= gearman_packet_create_args(job->worker->impl()->universal, job->work,
|
|
|
+ GEARMAN_MAGIC_REQUEST,
|
|
|
+ GEARMAN_COMMAND_WORK_COMPLETE,
|
|
|
+ args, args_size, 2);
|
|
|
+ if (gearman_failed(ret))
|
|
|
+ {
|
|
|
+ return ret;
|
|
|
+ }
|
|
|
+ job->options.work_in_use= true;
|
|
|
+ }
|
|
|
+
|
|
|
+ gearman_return_t ret= _job_send(job);
|
|
|
if (gearman_failed(ret))
|
|
|
{
|
|
|
return ret;
|
|
|
}
|
|
|
- job->options.work_in_use= true;
|
|
|
- }
|
|
|
|
|
|
- gearman_return_t ret= _job_send(job);
|
|
|
- if (gearman_failed(ret))
|
|
|
- {
|
|
|
- return ret;
|
|
|
- }
|
|
|
+ job->options.finished= true;
|
|
|
|
|
|
- job->options.finished= true;
|
|
|
+ return GEARMAN_SUCCESS;
|
|
|
+ }
|
|
|
|
|
|
- return GEARMAN_SUCCESS;
|
|
|
+ return GEARMAN_INVALID_ARGUMENT;
|
|
|
}
|
|
|
|
|
|
gearman_return_t gearman_job_send_exception(gearman_job_st *job,
|
|
|
const void *exception,
|
|
|
size_t exception_size)
|
|
|
{
|
|
|
- const void *args[2];
|
|
|
- size_t args_size[2];
|
|
|
-
|
|
|
- if (not (job->options.work_in_use))
|
|
|
+ if (job)
|
|
|
{
|
|
|
- args[0]= job->assigned.arg[0];
|
|
|
- args_size[0]= job->assigned.arg_size[0];
|
|
|
- args[1]= exception;
|
|
|
- args_size[1]= exception_size;
|
|
|
+ const void *args[2];
|
|
|
+ size_t args_size[2];
|
|
|
|
|
|
- gearman_return_t ret= gearman_packet_create_args(job->worker->impl()->universal, job->work,
|
|
|
- GEARMAN_MAGIC_REQUEST,
|
|
|
- GEARMAN_COMMAND_WORK_EXCEPTION,
|
|
|
- args, args_size, 2);
|
|
|
- if (gearman_failed(ret))
|
|
|
- return ret;
|
|
|
+ if (not (job->options.work_in_use))
|
|
|
+ {
|
|
|
+ args[0]= job->assigned.arg[0];
|
|
|
+ args_size[0]= job->assigned.arg_size[0];
|
|
|
+ args[1]= exception;
|
|
|
+ args_size[1]= exception_size;
|
|
|
+
|
|
|
+ gearman_return_t ret= gearman_packet_create_args(job->worker->impl()->universal, job->work,
|
|
|
+ GEARMAN_MAGIC_REQUEST,
|
|
|
+ GEARMAN_COMMAND_WORK_EXCEPTION,
|
|
|
+ args, args_size, 2);
|
|
|
+ if (gearman_failed(ret))
|
|
|
+ return ret;
|
|
|
+
|
|
|
+ job->options.work_in_use= true;
|
|
|
+ }
|
|
|
|
|
|
- job->options.work_in_use= true;
|
|
|
+ return _job_send(job);
|
|
|
}
|
|
|
|
|
|
- return _job_send(job);
|
|
|
+ return GEARMAN_INVALID_ARGUMENT;
|
|
|
}
|
|
|
|
|
|
gearman_return_t gearman_job_send_fail(gearman_job_st *job)
|
|
|
{
|
|
|
- if (job->reducer)
|
|
|
- return GEARMAN_INVALID_ARGUMENT;
|
|
|
+ if (job)
|
|
|
+ {
|
|
|
+ if (job->reducer)
|
|
|
+ {
|
|
|
+ return GEARMAN_INVALID_ARGUMENT;
|
|
|
+ }
|
|
|
|
|
|
- return gearman_job_send_fail_fin(job);
|
|
|
+ return gearman_job_send_fail_fin(job);
|
|
|
+ }
|
|
|
+
|
|
|
+ return GEARMAN_INVALID_ARGUMENT;
|
|
|
}
|
|
|
|
|
|
gearman_return_t gearman_job_send_fail_fin(gearman_job_st *job)
|
|
|
{
|
|
|
- const void *args[1];
|
|
|
- size_t args_size[1];
|
|
|
-
|
|
|
- if (job->options.finished)
|
|
|
+ if (job)
|
|
|
{
|
|
|
- return GEARMAN_SUCCESS;
|
|
|
- }
|
|
|
+ const void *args[1];
|
|
|
+ size_t args_size[1];
|
|
|
|
|
|
- if (not (job->options.work_in_use))
|
|
|
- {
|
|
|
- args[0]= job->assigned.arg[0];
|
|
|
- args_size[0]= job->assigned.arg_size[0] - 1;
|
|
|
- gearman_return_t ret= gearman_packet_create_args(job->worker->impl()->universal, job->work,
|
|
|
- GEARMAN_MAGIC_REQUEST,
|
|
|
- GEARMAN_COMMAND_WORK_FAIL,
|
|
|
- args, args_size, 1);
|
|
|
- if (gearman_failed(ret))
|
|
|
+ if (job->options.finished)
|
|
|
{
|
|
|
- return ret;
|
|
|
+ return GEARMAN_SUCCESS;
|
|
|
}
|
|
|
|
|
|
- job->options.work_in_use= true;
|
|
|
- }
|
|
|
+ if (not (job->options.work_in_use))
|
|
|
+ {
|
|
|
+ args[0]= job->assigned.arg[0];
|
|
|
+ args_size[0]= job->assigned.arg_size[0] - 1;
|
|
|
+ gearman_return_t ret= gearman_packet_create_args(job->worker->impl()->universal, job->work,
|
|
|
+ GEARMAN_MAGIC_REQUEST,
|
|
|
+ GEARMAN_COMMAND_WORK_FAIL,
|
|
|
+ args, args_size, 1);
|
|
|
+ if (gearman_failed(ret))
|
|
|
+ {
|
|
|
+ return ret;
|
|
|
+ }
|
|
|
|
|
|
- gearman_return_t ret;
|
|
|
- ret= _job_send(job);
|
|
|
- if (gearman_failed(ret))
|
|
|
- return ret;
|
|
|
+ job->options.work_in_use= true;
|
|
|
+ }
|
|
|
|
|
|
- job->options.finished= true;
|
|
|
- return GEARMAN_SUCCESS;
|
|
|
+ gearman_return_t ret;
|
|
|
+ ret= _job_send(job);
|
|
|
+ if (gearman_failed(ret))
|
|
|
+ return ret;
|
|
|
+
|
|
|
+ job->options.finished= true;
|
|
|
+ return GEARMAN_SUCCESS;
|
|
|
+ }
|
|
|
+
|
|
|
+ return GEARMAN_INVALID_ARGUMENT;
|
|
|
}
|
|
|
|
|
|
const char *gearman_job_handle(const gearman_job_st *job)
|
|
|
{
|
|
|
- return static_cast<const char *>(job->assigned.arg[0]);
|
|
|
+ if (job)
|
|
|
+ {
|
|
|
+ return static_cast<const char *>(job->assigned.arg[0]);
|
|
|
+ }
|
|
|
+
|
|
|
+ return NULL;
|
|
|
}
|
|
|
|
|
|
const char *gearman_job_function_name(const gearman_job_st *job)
|
|
|
{
|
|
|
- return static_cast<char *>(job->assigned.arg[1]);
|
|
|
+ if (job)
|
|
|
+ {
|
|
|
+ return static_cast<char *>(job->assigned.arg[1]);
|
|
|
+ }
|
|
|
+ return NULL;
|
|
|
}
|
|
|
|
|
|
gearman_string_t gearman_job_function_name_string(const gearman_job_st *job)
|
|
|
{
|
|
|
- gearman_string_t temp= { job->assigned.arg[1], job->assigned.arg_size[1] };
|
|
|
- return temp;
|
|
|
+ if (job)
|
|
|
+ {
|
|
|
+ gearman_string_t temp= { job->assigned.arg[1], job->assigned.arg_size[1] };
|
|
|
+ return temp;
|
|
|
+ }
|
|
|
+
|
|
|
+ static gearman_string_t ret= {0, 0};
|
|
|
+ return ret;
|
|
|
}
|
|
|
|
|
|
const char *gearman_job_unique(const gearman_job_st *job)
|
|
|
{
|
|
|
- if (job->assigned.command == GEARMAN_COMMAND_JOB_ASSIGN_UNIQ or
|
|
|
- job->assigned.command == GEARMAN_COMMAND_JOB_ASSIGN_ALL)
|
|
|
+ if (job)
|
|
|
{
|
|
|
- return static_cast<const char *>(job->assigned.arg[2]);
|
|
|
+ if (job->assigned.command == GEARMAN_COMMAND_JOB_ASSIGN_UNIQ or
|
|
|
+ job->assigned.command == GEARMAN_COMMAND_JOB_ASSIGN_ALL)
|
|
|
+ {
|
|
|
+ return static_cast<const char *>(job->assigned.arg[2]);
|
|
|
+ }
|
|
|
+
|
|
|
+ return "";
|
|
|
}
|
|
|
|
|
|
- return "";
|
|
|
+ return NULL;
|
|
|
}
|
|
|
|
|
|
bool gearman_job_is_map(const gearman_job_st *job)
|
|
|
{
|
|
|
- return bool(job->assigned.command == GEARMAN_COMMAND_JOB_ASSIGN_ALL) and job->assigned.arg_size[3] > 1;
|
|
|
+ if (job)
|
|
|
+ {
|
|
|
+ return bool(job->assigned.command == GEARMAN_COMMAND_JOB_ASSIGN_ALL) and job->assigned.arg_size[3] > 1;
|
|
|
+ }
|
|
|
+
|
|
|
+ return NULL;
|
|
|
}
|
|
|
|
|
|
gearman_string_t gearman_job_reducer_string(const gearman_job_st *job)
|
|
|
{
|
|
|
- if (job->assigned.command == GEARMAN_COMMAND_JOB_ASSIGN_ALL and job->assigned.arg_size[3] > 1)
|
|
|
+ if (job)
|
|
|
{
|
|
|
- gearman_string_t temp= { job->assigned.arg[3], job->assigned.arg_size[3] -1 };
|
|
|
- return temp;
|
|
|
- }
|
|
|
+ if (job->assigned.command == GEARMAN_COMMAND_JOB_ASSIGN_ALL and job->assigned.arg_size[3] > 1)
|
|
|
+ {
|
|
|
+ gearman_string_t temp= { job->assigned.arg[3], job->assigned.arg_size[3] -1 };
|
|
|
+ return temp;
|
|
|
+ }
|
|
|
+
|
|
|
+ static gearman_string_t null_temp= { gearman_literal_param("") };
|
|
|
|
|
|
- static gearman_string_t null_temp= { gearman_literal_param("") };
|
|
|
+ return null_temp;
|
|
|
+ }
|
|
|
|
|
|
- return null_temp;
|
|
|
+ static gearman_string_t ret= {0, 0};
|
|
|
+ return ret;
|
|
|
}
|
|
|
|
|
|
const char *gearman_job_reducer(const gearman_job_st *job)
|
|
|
{
|
|
|
- if (job->assigned.command == GEARMAN_COMMAND_JOB_ASSIGN_ALL)
|
|
|
- return static_cast<const char *>(job->assigned.arg[3]);
|
|
|
+ if (job)
|
|
|
+ {
|
|
|
+ if (job->assigned.command == GEARMAN_COMMAND_JOB_ASSIGN_ALL)
|
|
|
+ {
|
|
|
+ return static_cast<const char *>(job->assigned.arg[3]);
|
|
|
+ }
|
|
|
+
|
|
|
+ return "";
|
|
|
+ }
|
|
|
|
|
|
- return "";
|
|
|
+ return NULL;
|
|
|
}
|
|
|
|
|
|
const void *gearman_job_workload(const gearman_job_st *job)
|
|
|
{
|
|
|
- return job->assigned.data;
|
|
|
+ if (job)
|
|
|
+ {
|
|
|
+ return job->assigned.data;
|
|
|
+ }
|
|
|
+
|
|
|
+ return NULL;
|
|
|
}
|
|
|
|
|
|
size_t gearman_job_workload_size(const gearman_job_st *job)
|
|
|
{
|
|
|
- return job->assigned.data_size;
|
|
|
+ if (job)
|
|
|
+ {
|
|
|
+ return job->assigned.data_size;
|
|
|
+ }
|
|
|
+
|
|
|
+ return 0;
|
|
|
}
|
|
|
|
|
|
void *gearman_job_take_workload(gearman_job_st *job, size_t *data_size)
|
|
|
{
|
|
|
- return gearman_packet_take_data(job->assigned, data_size);
|
|
|
+ if (job)
|
|
|
+ {
|
|
|
+ return gearman_packet_take_data(job->assigned, data_size);
|
|
|
+ }
|
|
|
+
|
|
|
+ return NULL;
|
|
|
}
|
|
|
|
|
|
void gearman_job_free(gearman_job_st *job)
|
|
|
{
|
|
|
- if (job == NULL)
|
|
|
- {
|
|
|
- return;
|
|
|
- }
|
|
|
-
|
|
|
- if (job->options.assigned_in_use)
|
|
|
+ if (job)
|
|
|
{
|
|
|
- gearman_packet_free(&(job->assigned));
|
|
|
- }
|
|
|
+ if (job->options.assigned_in_use)
|
|
|
+ {
|
|
|
+ gearman_packet_free(&(job->assigned));
|
|
|
+ }
|
|
|
|
|
|
- if (job->options.work_in_use)
|
|
|
- {
|
|
|
- gearman_packet_free(&(job->work));
|
|
|
- }
|
|
|
+ if (job->options.work_in_use)
|
|
|
+ {
|
|
|
+ gearman_packet_free(&(job->work));
|
|
|
+ }
|
|
|
|
|
|
- if (job->worker->impl()->job_list == job)
|
|
|
- {
|
|
|
- job->worker->impl()->job_list= job->next;
|
|
|
- }
|
|
|
+ if (job->worker->impl()->job_list == job)
|
|
|
+ {
|
|
|
+ job->worker->impl()->job_list= job->next;
|
|
|
+ }
|
|
|
|
|
|
- if (job->prev)
|
|
|
- {
|
|
|
- job->prev->next= job->next;
|
|
|
- }
|
|
|
+ if (job->prev)
|
|
|
+ {
|
|
|
+ job->prev->next= job->next;
|
|
|
+ }
|
|
|
|
|
|
- if (job->next)
|
|
|
- {
|
|
|
- job->next->prev= job->prev;
|
|
|
- }
|
|
|
- job->worker->impl()->job_count--;
|
|
|
+ if (job->next)
|
|
|
+ {
|
|
|
+ job->next->prev= job->prev;
|
|
|
+ }
|
|
|
+ job->worker->impl()->job_count--;
|
|
|
|
|
|
- delete job->reducer;
|
|
|
- job->reducer= NULL;
|
|
|
+ delete job->reducer;
|
|
|
+ job->reducer= NULL;
|
|
|
|
|
|
- if (job->options.allocated)
|
|
|
- {
|
|
|
- delete job;
|
|
|
+ if (job->options.allocated)
|
|
|
+ {
|
|
|
+ delete job;
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|