123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325 |
- #pragma once
- #ifdef __cplusplus
- extern "C" {
- #endif
- struct gearman_universal_st
- {
- struct {
- bool dont_track_packets LIBGEARMAN_BITFIELD;
- bool non_blocking LIBGEARMAN_BITFIELD;
- bool stored_non_blocking LIBGEARMAN_BITFIELD;
- } options;
- gearman_verbose_t verbose;
- uint32_t con_count;
- uint32_t packet_count;
- uint32_t pfds_size;
- uint32_t sending;
- int timeout;
- gearman_connection_st *con_list;
- gearman_packet_st *packet_list;
- struct pollfd *pfds;
- gearman_log_fn *log_fn;
- void *log_context;
- gearman_event_watch_fn *event_watch_fn;
- void *event_watch_context;
- gearman_malloc_fn *workload_malloc_fn;
- void *workload_malloc_context;
- gearman_free_fn *workload_free_fn;
- void *workload_free_context;
- struct {
- gearman_return_t rc;
- int last_errno;
- char last_error[GEARMAN_MAX_ERROR_SIZE];
- } error;
- };
- #ifdef GEARMAN_CORE
- GEARMAN_INTERNAL_API
- gearman_universal_st *gearman_universal_create(gearman_universal_st *source, const gearman_universal_options_t *options);
- GEARMAN_INTERNAL_API
- gearman_universal_st *gearman_universal_clone(gearman_universal_st *destination, const gearman_universal_st *source);
- GEARMAN_INTERNAL_API
- void gearman_universal_free(gearman_universal_st *gearman);
- GEARMAN_INTERNAL_API
- void gearman_universal_set_error(gearman_universal_st *gearman,
- gearman_return_t rc,
- const char *function,
- const char *format, ...);
- GEARMAN_INTERNAL_API
- void gearman_universal_set_perror(const char *position, gearman_universal_st *universal, const char *message);
- #define STRINGIFY(x) #x
- #define TOSTRING(x) STRINGIFY(x)
- #define AT __FILE__ ":" TOSTRING(__LINE__)
- #define gearman_perror(A, B) do { gearman_universal_set_perror(AT, A, B); } while (0)
- #define gearman_error(A, B, C) do { gearman_universal_set_error(A, B, AT, C); } while (0)
- static inline const char *gearman_universal_error(const gearman_universal_st *gearman)
- {
- if (gearman->error.last_error[0] == 0)
- return 0;
- return (const char *)(gearman->error.last_error);
- }
- static inline int gearman_universal_errno(const gearman_universal_st *gearman)
- {
- return gearman->error.last_errno;
- }
- GEARMAN_INTERNAL_API
- gearman_return_t gearman_universal_set_option(gearman_universal_st *gearman, gearman_universal_options_t option, bool value);
- static inline void gearman_universal_add_options(gearman_universal_st *gearman, gearman_universal_options_t options)
- {
- (void)gearman_universal_set_option(gearman, options, true);
- }
- static inline void gearman_universal_remove_options(gearman_universal_st *gearman, gearman_universal_options_t options)
- {
- (void)gearman_universal_set_option(gearman, options, false);
- }
- static inline bool gearman_universal_is_non_blocking(gearman_universal_st *gearman)
- {
- return gearman->options.non_blocking;
- }
- GEARMAN_INTERNAL_API
- int gearman_universal_timeout(gearman_universal_st *gearman);
- GEARMAN_INTERNAL_API
- void gearman_universal_set_timeout(gearman_universal_st *gearman, int timeout);
- GEARMAN_INTERNAL_API
- void gearman_set_log_fn(gearman_universal_st *gearman, gearman_log_fn *function,
- void *context, gearman_verbose_t verbose);
- GEARMAN_INTERNAL_API
- void gearman_set_event_watch_fn(gearman_universal_st *gearman,
- gearman_event_watch_fn *function,
- void *context);
- GEARMAN_INTERNAL_API
- void gearman_set_workload_malloc_fn(gearman_universal_st *gearman,
- gearman_malloc_fn *function,
- void *context);
- GEARMAN_INTERNAL_API
- void gearman_set_workload_free_fn(gearman_universal_st *gearman,
- gearman_free_fn *function,
- void *context);
- GEARMAN_INTERNAL_API
- void gearman_free_all_cons(gearman_universal_st *gearman);
- GEARMAN_INTERNAL_API
- gearman_return_t gearman_flush_all(gearman_universal_st *gearman);
- GEARMAN_INTERNAL_API
- gearman_return_t gearman_wait(gearman_universal_st *gearman);
- GEARMAN_INTERNAL_API
- gearman_connection_st *gearman_ready(gearman_universal_st *gearman);
- GEARMAN_INTERNAL_API
- gearman_return_t gearman_echo(gearman_universal_st *gearman, const void *workload,
- size_t workload_size);
- GEARMAN_INTERNAL_API
- void gearman_free_all_packets(gearman_universal_st *gearman);
- #endif
- #ifdef __cplusplus
- }
- #endif
|