Browse Source

Add API call for cloning a new worker for use from a Job.

Brian Aker 13 years ago
parent
commit
9e90e7858d
4 changed files with 15 additions and 2 deletions
  1. 3 0
      libgearman-1.0/job.h
  2. 5 0
      libgearman-1.0/string.h
  3. 0 2
      libgearman/string.hpp
  4. 7 0
      libgearman/worker.cc

+ 3 - 0
libgearman-1.0/job.h

@@ -203,6 +203,9 @@ size_t gearman_job_workload_size(const gearman_job_st *job);
 GEARMAN_API
 void *gearman_job_take_workload(gearman_job_st *job, size_t *data_size);
 
+GEARMAN_API
+gearman_worker_st *gearman_job_clone_worker(gearman_job_st *job);
+
 /** @} */
 
 #ifdef __cplusplus

+ 5 - 0
libgearman-1.0/string.h

@@ -49,6 +49,11 @@ struct gearman_string_t {
 #define gearman_string_param_null NULL, 0
 #define gearman_string_param_cstr(X) (X), ((X) ? strlen(X) : 0)
 
+#ifdef __cplusplus
+# define gearman_literal_param(X) (X), (static_cast<size_t>((sizeof(X) - 1)))
+# define gearman_literal_param_size(X) static_cast<size_t>(sizeof(X) - 1)
+#endif
+
 #ifdef BUILDING_LIBGEARMAN
 
 #ifdef __cplusplus // correct define

+ 0 - 2
libgearman/string.hpp

@@ -37,7 +37,5 @@
 
 #pragma once
 
-#define gearman_literal_param(X) (X), static_cast<size_t>(sizeof(X) - 1)
-#define gearman_literal_param_size(X) static_cast<size_t>(sizeof(X) - 1)
 #define gearman_c_str_param(X) (X) ? (X) : NULL, (X) ? strlen(X) : 0
 #define gearman_array_length(__array) sizeof(__array)/sizeof(&__array)

+ 7 - 0
libgearman/worker.cc

@@ -1006,7 +1006,9 @@ gearman_return_t gearman_worker_work(gearman_worker_st *worker)
       }
 
       if (worker->work_job->error_code == GEARMAN_LOST_CONNECTION)
+      {
         break;
+      }
     }
 
   case GEARMAN_WORKER_WORK_UNIVERSAL_COMPLETE:
@@ -1338,3 +1340,8 @@ gearman_id_t gearman_worker_id(gearman_worker_st *self)
 
   return gearman_universal_id(self->universal);
 }
+
+gearman_worker_st *gearman_job_clone_worker(gearman_job_st *job)
+{
+  return gearman_worker_clone(NULL, job->worker);
+}