void create_modules() { ok(create_client( mod_gm_opt->server_list, &client ) == GM_OK, "created test client"); ok(create_worker( mod_gm_opt->server_list, &worker ) == GM_OK, "created test worker"); ok(worker_add_function( &worker, GM_DEFAULT_RESULT_QUEUE, get_results ) == GM_OK, "added result worker"); ok(worker_add_function( &worker, "dummy", dummy ) == GM_OK, "added dummy worker"); //gearman_worker_add_options(&worker, GEARMAN_WORKER_NON_BLOCKING); gearman_worker_set_timeout(&worker, 5000); return; }
int main() { if (signal(SIGPIPE, SIG_IGN) == SIG_ERR) { std::cerr << "signal:" << strerror(errno) << std::endl; return EXIT_FAILURE; } gearman_worker_st *worker; if ((worker= gearman_worker_create(NULL)) == NULL) { std::cerr << "Memory allocation failure on worker creation." << std::endl; return EXIT_FAILURE; } //if (unique) //{ gearman_worker_add_options(worker, GEARMAN_WORKER_GRAB_UNIQ); //} int timeout=-1; // if (timeout >= 0) { gearman_worker_set_timeout(worker, timeout); } if (gearman_failed(gearman_worker_add_server(worker, "localhost", GEARMAN_DEFAULT_TCP_PORT))) { std::cerr << gearman_worker_error(worker) << std::endl; return EXIT_FAILURE; } if (gearman_failed(gearman_worker_set_identifier(worker, "worker1", strlen("worker1")))) { std::cerr << gearman_worker_error(worker) << std::endl; return EXIT_FAILURE; } gearman_function_t worker_fn= gearman_function_create(worker_function); if (gearman_failed(gearman_worker_define_function(worker, gearman_literal_param("make_call"), worker_fn, 0, NULL/*&options*/))) { std::cerr << gearman_worker_error(worker) << std::endl; return EXIT_FAILURE; } int limit=0; // Add one if count is not zero if (limit != 0) { limit++; } while (--limit) { if (gearman_failed(gearman_worker_work(worker))) { std::cerr << gearman_worker_error(worker) << std::endl; break; } } gearman_worker_free(worker); return EXIT_SUCCESS; }