Gearman Developer Documentation

libgearman-server/job.h
Go to the documentation of this file.
00001 /* Gearman server and library
00002  * Copyright (C) 2008 Brian Aker, Eric Day
00003  * All rights reserved.
00004  *
00005  * Use and distribution licensed under the BSD license.  See
00006  * the COPYING file in the parent directory for full text.
00007  */
00008 
00014 #ifndef __GEARMAN_SERVER_JOB_H__
00015 #define __GEARMAN_SERVER_JOB_H__
00016 
00017 #ifdef __cplusplus
00018 extern "C" {
00019 #endif
00020 
00031 struct gearman_server_job_st
00032 {
00033   uint8_t retries;
00034   struct {
00035     bool allocated;
00036   } options;
00037   gearman_job_priority_t priority;
00038   bool ignore_job;
00039   bool job_queued;
00040   uint32_t job_handle_key;
00041   uint32_t unique_key;
00042   uint32_t client_count;
00043   uint32_t numerator;
00044   uint32_t denominator;
00045   size_t data_size;
00046   gearman_server_st *server;
00047   gearman_server_job_st *next;
00048   gearman_server_job_st *prev;
00049   gearman_server_job_st *unique_next;
00050   gearman_server_job_st *unique_prev;
00051   gearman_server_job_st *worker_next;
00052   gearman_server_job_st *worker_prev;
00053   gearman_server_function_st *function;
00054   gearman_server_job_st *function_next;
00055   const void *data;
00056   gearman_server_client_st *client_list;
00057   gearman_server_worker_st *worker;
00058   char job_handle[GEARMAN_JOB_HANDLE_SIZE];
00059   char unique[GEARMAN_UNIQUE_SIZE];
00060 };
00061 
00065 GEARMAN_API
00066 gearman_server_job_st *
00067 gearman_server_job_add(gearman_server_st *server, const char *function_name,
00068                        size_t function_name_size, const char *unique,
00069                        size_t unique_size, const void *data, size_t data_size,
00070                        gearman_job_priority_t priority,
00071                        gearman_server_client_st *server_client,
00072                        gearman_return_t *ret_ptr);
00073 
00077 GEARMAN_API
00078 gearman_server_job_st *
00079 gearman_server_job_create(gearman_server_st *server,
00080                           gearman_server_job_st *server_job);
00081 
00085 GEARMAN_API
00086 void gearman_server_job_free(gearman_server_job_st *server_job);
00087 
00091 GEARMAN_API
00092 gearman_server_job_st *gearman_server_job_get(gearman_server_st *server,
00093                                               const char *job_handle,
00094                                               gearman_server_con_st *worker_con);
00095 
00099 GEARMAN_API
00100 gearman_server_job_st *
00101 gearman_server_job_peek(gearman_server_con_st *server_con);
00102 
00106 GEARMAN_API
00107 gearman_server_job_st *
00108 gearman_server_job_take(gearman_server_con_st *server_con);
00109 
00113 GEARMAN_API
00114 gearman_return_t gearman_server_job_queue(gearman_server_job_st *server_job);
00115 
00118 #ifdef __cplusplus
00119 }
00120 #endif
00121 
00122 #endif /* __GEARMAN_SERVER_JOB_H__ */