job.h 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. /* Gearman server and library
  2. * Copyright (C) 2008 Brian Aker, Eric Day
  3. * All rights reserved.
  4. *
  5. * Use and distribution licensed under the BSD license. See
  6. * the COPYING file in the parent directory for full text.
  7. */
  8. /**
  9. * @file
  10. * @brief Job Declarations
  11. */
  12. #pragma once
  13. #include <libgearman-server/struct/job.h>
  14. /** @addtogroup gearman_server_job Job Declarations @ingroup gearman_server
  15. *
  16. * This is a low level interface for gearman server jobs. This is used
  17. * internally by the server interface, so you probably want to look there first.
  18. *
  19. * @{
  20. */
  21. #ifdef __cplusplus
  22. extern "C" {
  23. #endif
  24. /**
  25. * Add a new job to a server instance.
  26. */
  27. GEARMAN_API
  28. gearman_server_job_st *
  29. gearman_server_job_add(gearman_server_st *server,
  30. const char *function_name, size_t function_name_size,
  31. const char *unique, size_t unique_size,
  32. const void *data, size_t data_size,
  33. gearmand_job_priority_t priority,
  34. gearman_server_client_st *server_client,
  35. gearmand_error_t *ret_ptr,
  36. int64_t when);
  37. GEARMAN_API
  38. gearman_server_job_st *
  39. gearman_server_job_add_reducer(gearman_server_st *server,
  40. const char *function_name, size_t function_name_size,
  41. const char *unique, size_t unique_size,
  42. const char *reducer, size_t reducer_name_size,
  43. const void *data, size_t data_size,
  44. gearmand_job_priority_t priority,
  45. gearman_server_client_st *server_client,
  46. gearmand_error_t *ret_ptr,
  47. int64_t when);
  48. /**
  49. * Initialize a server job structure.
  50. */
  51. GEARMAN_API
  52. gearman_server_job_st *
  53. gearman_server_job_create(gearman_server_st *server);
  54. /**
  55. * Free a server job structure.
  56. */
  57. GEARMAN_API
  58. void gearman_server_job_free(gearman_server_job_st *server_job);
  59. /**
  60. * Get a server job structure from the job handle.
  61. */
  62. GEARMAN_API
  63. gearman_server_job_st *gearman_server_job_get(gearman_server_st *server,
  64. const char *job_handle,
  65. const size_t job_handle_length,
  66. gearman_server_con_st *worker_con);
  67. /**
  68. * See if there are any jobs to be run for the server worker connection.
  69. */
  70. GEARMAN_API
  71. gearman_server_job_st *
  72. gearman_server_job_peek(gearman_server_con_st *server_con);
  73. /**
  74. * Start running a job for the server worker connection.
  75. */
  76. GEARMAN_API
  77. gearman_server_job_st *
  78. gearman_server_job_take(gearman_server_con_st *server_con);
  79. /**
  80. * Queue a job to be run.
  81. */
  82. GEARMAN_API
  83. gearmand_error_t gearman_server_job_queue(gearman_server_job_st *server_job);
  84. uint32_t _server_job_hash(const char *key, size_t key_size);
  85. void *_proc(void *data);
  86. void _server_con_worker_list_append(gearman_server_worker_st *list,
  87. gearman_server_worker_st *worker);
  88. gearman_server_job_st *gearman_server_job_get_by_unique(gearman_server_st *server,
  89. const char *unique,
  90. const size_t unique_length,
  91. gearman_server_con_st *worker_con);
  92. /** @} */
  93. void destroy_gearman_server_job_st(gearman_server_job_st *);
  94. #ifdef __cplusplus
  95. }
  96. #endif